From beb3d76a4bd934cef1efa3e5e4a4b5762c8579dc Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Mon, 8 Mar 2021 16:56:54 -0800 Subject: [PATCH] Remove unused files and move LUT to .cpp --- src/rgbcx/BC1/OrderTable.cpp | 991 --- src/rgbcx/BC1/{Table4.h => OrderTable4.cpp} | 1001 +++ src/rgbcx/BC1/Tables.cpp | 1317 ---- src/rgbcx/BC1/Tables.h | 77 - src/rgbcx/rgbcx.cpp | 2512 -------- src/rgbcx/rgbcx.h | 246 - src/rgbcx/test/RedbrushAlpha.png | Bin 1386275 -> 0 bytes src/rgbcx/test/bc7decomp.cpp | 429 -- src/rgbcx/test/bc7decomp.h | 165 - src/rgbcx/test/bc7enc.c | 2216 ------- src/rgbcx/test/bc7enc.h | 82 - src/rgbcx/test/dds_defs.h | 286 - src/rgbcx/test/lodepng.cpp | 6234 ------------------- src/rgbcx/test/lodepng.h | 1761 ------ 14 files changed, 1001 insertions(+), 16316 deletions(-) rename src/rgbcx/BC1/{Table4.h => OrderTable4.cpp} (76%) delete mode 100644 src/rgbcx/BC1/Tables.cpp delete mode 100644 src/rgbcx/BC1/Tables.h delete mode 100644 src/rgbcx/rgbcx.cpp delete mode 100644 src/rgbcx/rgbcx.h delete mode 100644 src/rgbcx/test/RedbrushAlpha.png delete mode 100644 src/rgbcx/test/bc7decomp.cpp delete mode 100644 src/rgbcx/test/bc7decomp.h delete mode 100644 src/rgbcx/test/bc7enc.c delete mode 100644 src/rgbcx/test/bc7enc.h delete mode 100644 src/rgbcx/test/dds_defs.h delete mode 100644 src/rgbcx/test/lodepng.cpp delete mode 100644 src/rgbcx/test/lodepng.h diff --git a/src/rgbcx/BC1/OrderTable.cpp b/src/rgbcx/BC1/OrderTable.cpp index 1bfcdb7..c3a0ea1 100644 --- a/src/rgbcx/BC1/OrderTable.cpp +++ b/src/rgbcx/BC1/OrderTable.cpp @@ -321,997 +321,6 @@ const OrderTable<3>::BestOrderArray OrderTable<3>::BestOrders = { {1, 7, 8, 29, 56, 0, 10, 14, 2, 42, 72, 5, 4, 65, 3, 30, 84, 94, 67, 9, 25, 133, 111, 11, 32, 108, 16, 63, 21, 96, 26, 48}}}; // endregion -// region BestOrderTable4 -template <> -const OrderTable<4>::BestOrderArray OrderTable<4>::BestOrders = {{ -#if RGBCX_USE_SMALLER_TABLES - {202, 120, 13, 318, 15, 23, 403, 450, 5, 51, 260, 128, 77, 21, 33, 494, 515, 523, 4, 141, 269, 1, 2, 700, 137, 49, 48, 102, 7, 64, 753, 82}, - {13, 141, 23, 217, 115, 51, 77, 2, 64, 21, 0, 4, 5, 317, 137, 269, 202, 33, 318, 7, 291, 352, 9, 10, 3, 180, 32, 6, 365, 102, 341, 349}, - {29, 58, 262, 1, 52, 74, 6, 171, 5, 287, 151, 334, 27, 500, 75, 26, 331, 223, 53, 635, 220, 19, 50, 45, 46, 17, 14, 396, 163, 409, 324, 70}, - {40, 51, 33, 453, 14, 23, 62, 56, 12, 196, 730, 475, 153, 99, 403, 775, 117, 130, 585, 34, 4, 17, 162, 11, 139, 57, 102, 38, 108, 47, 123, 440}, - {33, 23, 51, 13, 102, 64, 202, 128, 12, 40, 15, 196, 153, 10, 1, 2, 77, 99, 141, 0, 515, 5, 117, 3, 120, 403, 700, 165, 22, 14, 269, 453}, - {13, 23, 51, 4, 77, 141, 202, 33, 115, 64, 32, 128, 0, 11, 177, 40, 15, 102, 2, 217, 7, 137, 269, 21, 90, 59, 515, 1, 180, 403, 22, 6}, - {26, 235, 19, 47, 648, 624, 78, 145, 27, 112, 122, 64, 444, 6, 630, 453, 25, 42, 65, 130, 711, 85, 390, 113, 416, 108, 665, 29, 730, 138, 644, 95}, - {64, 141, 352, 751, 217, 247, 237, 437, 177, 269, 86, 954, 947, 875, 32, 318, 95, 77, 304, 92, 597, 180, 232, 291, 128, 864, 349, 588, 372, 202, 312, 1}, - {642, 898, 180, 638, 901, 341, 82, 197, 10, 951, 15, 515, 165, 762, 700, 253, 811, 753, 752, 365, 143, 479, 244, 569, 8, 110, 351, 873, 55, 31, 499, 116}, - {221, 23, 51, 125, 438, 254, 13, 21, 39, 49, 308, 656, 0, 115, 530, 159, 158, 401, 30, 166, 912, 386, 165, 688, 518, 9, 105, 627, 424, 22, 421, 33}, - {143, 31, 1, 44, 197, 8, 180, 125, 116, 55, 13, 498, 23, 341, 638, 242, 93, 15, 2, 141, 0, 901, 752, 115, 36, 206, 165, 479, 338, 365, 515, 762}, - {12, 23, 51, 13, 14, 15, 37, 99, 515, 38, 700, 117, 2, 196, 134, 153, 753, 64, 54, 33, 128, 120, 21, 0, 328, 5, 139, 82, 453, 719, 457, 1}, - {13, 15, 23, 515, 961, 700, 457, 753, 51, 115, 4, 165, 197, 2, 38, 569, 1, 474, 0, 37, 99, 719, 5, 12, 629, 14, 11, 3, 33, 77, 64, 10}, - {15, 515, 700, 753, 1, 0, 2, 4, 3, 23, 134, 12, 961, 5, 10, 197, 11, 33, 82, 120, 457, 51, 165, 7, 6, 341, 217, 21, 77, 9, 40, 180}, - {13, 51, 23, 457, 719, 961, 730, 401, 165, 453, 0, 117, 386, 15, 134, 1, 758, 153, 12, 54, 515, 99, 11, 2, 700, 5, 753, 4, 308, 33, 6, 899}, - {134, 898, 82, 117, 13, 33, 77, 102, 23, 260, 341, 351, 120, 901, 197, 153, 961, 111, 196, 110, 180, 457, 854, 10, 450, 8, 165, 40, 4, 115, 0, 365}, - {60, 18, 126, 167, 35, 16, 191, 71, 24, 92, 121, 271, 68, 107, 212, 146, 118, 150, 199, 7, 21, 1, 9, 575, 727, 5, 566, 48, 0, 132, 108, 273}, - {62, 136, 129, 123, 128, 41, 162, 17, 249, 211, 214, 789, 618, 710, 38, 678, 248, 507, 57, 64, 152, 269, 119, 3, 177, 183, 597, 106, 4, 179, 216, 90}, - {403, 523, 51, 475, 494, 453, 817, 899, 202, 23, 450, 13, 421, 120, 102, 730, 33, 128, 4, 1, 805, 5, 7, 153, 757, 260, 318, 196, 77, 457, 326, 65}, - {4, 59, 3, 62, 12, 33, 56, 193, 27, 21, 102, 17, 40, 77, 76, 84, 32, 0, 6, 123, 119, 177, 128, 11, 18, 611, 605, 25, 13, 51, 73, 210}, - {43, 20, 319, 422, 414, 945, 0, 7, 819, 61, 5, 376, 325, 173, 804, 904, 470, 693, 97, 707, 14, 49, 22, 104, 147, 107, 95, 32, 426, 1, 330, 577}, - {13, 23, 51, 2, 0, 115, 4, 141, 217, 33, 10, 77, 1, 15, 64, 180, 3, 515, 7, 6, 22, 102, 11, 5, 40, 9, 165, 700, 202, 197, 317, 341}, - {28, 49, 0, 105, 1, 24, 65, 159, 35, 55, 95, 239, 16, 2, 109, 7, 9, 14, 170, 320, 347, 168, 424, 158, 10, 301, 124, 5, 67, 21, 64, 36}, - {15, 515, 700, 753, 0, 1, 13, 2, 117, 4, 12, 10, 5, 165, 457, 3, 9, 134, 11, 7, 6, 51, 77, 64, 961, 82, 33, 197, 14, 341, 120, 141}, - {7, 71, 14, 149, 97, 18, 60, 16, 150, 92, 398, 189, 140, 124, 24, 273, 35, 2, 69, 302, 154, 68, 0, 336, 517, 43, 66, 28, 118, 251, 230, 1}, - {4, 102, 33, 77, 40, 59, 11, 624, 210, 12, 128, 342, 5, 503, 91, 139, 64, 32, 25, 494, 202, 678, 416, 0, 403, 275, 21, 450, 196, 318, 523, 177}, - {25, 19, 42, 6, 122, 813, 256, 235, 85, 26, 436, 53, 297, 573, 680, 390, 445, 63, 27, 416, 80, 233, 65, 73, 389, 283, 45, 605, 194, 17, 250, 343}, - {402, 102, 202, 128, 33, 300, 403, 23, 12, 77, 40, 21, 342, 117, 483, 99, 25, 494, 6, 4, 63, 32, 84, 569, 139, 757, 475, 318, 19, 26, 196, 134}, - {158, 9, 0, 109, 39, 49, 65, 22, 35, 168, 55, 24, 68, 124, 159, 16, 185, 344, 333, 154, 254, 272, 175, 289, 1, 577, 95, 28, 105, 810, 30, 169}, - {197, 180, 115, 237, 498, 165, 2, 5, 287, 546, 400, 3, 61, 34, 509, 13, 297, 80, 341, 52, 45, 186, 58, 881, 23, 873, 468, 176, 64, 17, 311, 250}, - {120, 968, 373, 260, 704, 110, 450, 202, 137, 318, 77, 95, 269, 326, 217, 717, 661, 652, 851, 349, 93, 1, 518, 98, 827, 291, 21, 177, 82, 33, 848, 719}, - {44, 116, 144, 268, 434, 489, 367, 384, 98, 127, 918, 93, 948, 31, 206, 940, 855, 0, 203, 137, 9, 22, 617, 141, 332, 105, 393, 492, 959, 282, 299, 131}, - {13, 77, 23, 33, 51, 0, 64, 141, 102, 4, 2, 115, 1, 6, 202, 15, 10, 128, 269, 7, 177, 180, 3, 40, 22, 11, 515, 217, 117, 318, 700, 137}, - {15, 515, 700, 753, 4, 11, 141, 40, 165, 23, 64, 180, 13, 202, 32, 3, 51, 125, 5, 197, 21, 128, 0, 93, 77, 1, 120, 82, 269, 117, 110, 59}, - {176, 231, 585, 62, 34, 14, 412, 161, 56, 236, 527, 57, 17, 3, 51, 202, 4, 23, 369, 283, 128, 13, 472, 440, 84, 361, 136, 457, 381, 130, 719, 53}, - {9, 0, 180, 217, 237, 101, 141, 352, 88, 100, 230, 64, 175, 317, 115, 498, 68, 39, 30, 1, 702, 83, 213, 36, 365, 208, 752, 13, 252, 321, 952, 546}, - {28, 9, 22, 1, 49, 0, 109, 39, 83, 95, 86, 30, 13, 105, 128, 55, 141, 168, 158, 67, 31, 159, 208, 12, 96, 5, 185, 2, 160, 64, 137, 23}, - {72, 4, 38, 12, 51, 89, 477, 11, 57, 76, 401, 308, 23, 474, 99, 148, 413, 179, 59, 13, 431, 152, 54, 569, 17, 3, 205, 629, 197, 421, 405, 15}, - {457, 13, 23, 961, 15, 51, 515, 700, 165, 12, 753, 629, 11, 1, 719, 117, 0, 3, 2, 37, 569, 197, 40, 328, 33, 5, 153, 134, 99, 64, 38, 196}, - {254, 100, 310, 9, 30, 1, 39, 625, 166, 265, 190, 0, 272, 557, 131, 731, 31, 98, 578, 688, 404, 93, 101, 88, 49, 21, 127, 264, 44, 36, 252, 478}, - {51, 23, 12, 13, 15, 128, 99, 120, 10, 202, 515, 153, 64, 82, 700, 33, 165, 2, 5, 117, 403, 1, 141, 0, 3, 196, 37, 453, 753, 197, 260, 93}, - {38, 99, 542, 139, 453, 117, 196, 23, 457, 13, 328, 111, 37, 134, 961, 11, 12, 51, 40, 775, 587, 401, 474, 54, 153, 477, 41, 629, 33, 475, 14, 277}, - {6, 85, 25, 233, 343, 91, 26, 63, 138, 29, 19, 65, 283, 4, 81, 235, 42, 122, 605, 64, 648, 256, 174, 370, 74, 389, 718, 59, 45, 194, 445, 416}, - {49, 5, 97, 20, 197, 21, 18, 193, 0, 64, 408, 729, 173, 350, 43, 422, 165, 7, 14, 104, 61, 32, 509, 713, 523, 102, 120, 95, 125, 397, 35, 232}, - {144, 116, 268, 434, 384, 489, 367, 206, 93, 855, 940, 44, 98, 332, 617, 127, 959, 911, 137, 282, 203, 31, 22, 219, 141, 9, 131, 276, 417, 0, 1, 120}, - {17, 106, 64, 62, 32, 255, 136, 292, 476, 162, 129, 241, 123, 141, 41, 237, 720, 214, 209, 352, 519, 211, 186, 148, 752, 247, 507, 90, 21, 77, 197, 119}, - {2, 29, 52, 50, 5, 58, 14, 6, 27, 1, 366, 357, 45, 53, 17, 19, 171, 151, 26, 181, 133, 38, 218, 764, 287, 583, 61, 113, 3, 487, 600, 281}, - {130, 59, 196, 412, 381, 730, 711, 236, 77, 210, 202, 402, 453, 99, 401, 108, 361, 803, 291, 283, 153, 4, 57, 51, 128, 183, 14, 719, 503, 117, 23, 11}, - {13, 23, 51, 141, 77, 4, 33, 64, 115, 0, 217, 10, 180, 202, 2, 102, 11, 9, 15, 165, 40, 21, 128, 352, 22, 7, 197, 3, 317, 515, 269, 1}, - {23, 13, 202, 51, 120, 15, 21, 5, 141, 1, 128, 269, 137, 515, 64, 102, 125, 48, 98, 33, 260, 523, 318, 93, 700, 165, 450, 77, 2, 12, 403, 82}, - {1, 2, 14, 46, 29, 67, 38, 52, 5, 171, 58, 24, 103, 69, 96, 70, 83, 181, 54, 75, 163, 223, 16, 45, 112, 309, 155, 0, 186, 35, 18, 108}, - {15, 515, 700, 753, 13, 0, 1, 2, 153, 5, 23, 10, 117, 3, 9, 7, 134, 165, 12, 6, 341, 33, 4, 14, 77, 457, 115, 21, 719, 180, 217, 82}, - {197, 165, 509, 13, 391, 180, 308, 115, 23, 546, 5, 498, 2, 29, 3, 401, 901, 61, 34, 80, 14, 457, 250, 569, 237, 873, 38, 297, 45, 15, 468, 386}, - {19, 73, 27, 250, 200, 714, 444, 472, 26, 53, 34, 17, 813, 322, 283, 390, 128, 297, 78, 123, 432, 14, 436, 136, 106, 690, 57, 122, 389, 80, 503, 3}, - {3, 17, 21, 45, 62, 32, 38, 12, 155, 14, 2, 328, 5, 99, 401, 536, 828, 13, 227, 488, 106, 51, 719, 119, 540, 76, 165, 221, 115, 629, 209, 41}, - {115, 341, 873, 197, 365, 13, 901, 180, 569, 752, 317, 1, 10, 498, 143, 634, 261, 0, 509, 15, 943, 237, 44, 31, 116, 601, 165, 127, 282, 23, 141, 64}, - {453, 51, 23, 403, 33, 421, 475, 102, 15, 153, 196, 515, 13, 700, 117, 523, 12, 40, 753, 21, 4, 134, 0, 494, 670, 899, 22, 801, 730, 10, 11, 401}, - {23, 13, 51, 33, 12, 117, 153, 134, 453, 196, 15, 99, 515, 40, 14, 700, 128, 102, 11, 753, 77, 64, 403, 202, 0, 401, 475, 37, 65, 2, 3, 38}, - {2, 7, 5, 14, 70, 1, 29, 61, 52, 45, 6, 112, 66, 16, 21, 32, 592, 46, 38, 135, 87, 58, 186, 315, 290, 128, 113, 0, 64, 48, 227, 23}, - {33, 23, 102, 51, 128, 13, 64, 202, 141, 1, 77, 10, 153, 40, 196, 117, 2, 3, 0, 5, 15, 269, 403, 12, 137, 134, 318, 165, 120, 6, 453, 99}, - {16, 92, 7, 20, 43, 35, 126, 71, 60, 14, 107, 18, 68, 97, 0, 121, 279, 149, 24, 246, 191, 48, 118, 575, 55, 140, 362, 783, 230, 150, 375, 566}, - {13, 23, 4, 33, 77, 64, 51, 102, 141, 128, 32, 10, 0, 202, 40, 115, 59, 22, 90, 11, 177, 21, 291, 6, 7, 318, 180, 117, 137, 2, 95, 165}, - {507, 162, 129, 41, 4, 211, 62, 38, 123, 59, 57, 248, 183, 130, 99, 11, 3, 361, 202, 17, 402, 556, 266, 305, 803, 210, 128, 184, 152, 136, 313, 117}, - {643, 123, 193, 650, 802, 18, 25, 389, 718, 256, 65, 289, 84, 91, 619, 511, 415, 90, 235, 63, 57, 510, 324, 216, 862, 102, 6, 183, 108, 397, 217, 736}, - {13, 23, 15, 1, 515, 51, 0, 2, 700, 5, 753, 165, 141, 115, 12, 3, 4, 180, 21, 197, 457, 7, 6, 10, 120, 9, 33, 202, 77, 32, 8, 11}, - {23, 51, 13, 453, 64, 403, 12, 21, 5, 202, 128, 475, 165, 141, 523, 95, 125, 115, 3, 1, 4, 730, 120, 32, 2, 494, 180, 719, 457, 197, 450, 401}, - {204, 74, 135, 66, 6, 174, 192, 7, 138, 172, 85, 353, 348, 580, 280, 97, 95, 500, 29, 64, 426, 32, 87, 889, 65, 81, 25, 2, 52, 43, 568, 673}, - {35, 0, 68, 69, 24, 9, 1, 16, 65, 103, 149, 133, 18, 114, 28, 50, 83, 2, 189, 7, 46, 14, 101, 336, 175, 124, 251, 55, 71, 218, 38, 238}, - {16, 101, 0, 118, 9, 18, 24, 68, 35, 154, 71, 124, 60, 212, 191, 520, 55, 806, 694, 167, 28, 39, 364, 375, 1, 346, 252, 65, 604, 302, 22, 21}, - {0, 9, 16, 35, 1, 24, 68, 18, 65, 21, 103, 67, 13, 149, 28, 189, 71, 23, 101, 238, 114, 7, 335, 133, 486, 141, 22, 212, 48, 50, 30, 118}, - {13, 202, 23, 77, 33, 51, 128, 5, 21, 141, 115, 32, 102, 64, 4, 0, 318, 269, 10, 15, 291, 2, 494, 177, 11, 217, 3, 515, 22, 137, 6, 700}, - {16, 92, 60, 35, 7, 18, 24, 68, 150, 149, 14, 71, 0, 375, 97, 126, 118, 107, 230, 191, 246, 273, 140, 55, 175, 653, 9, 575, 2, 28, 566, 517}, - {76, 90, 21, 179, 316, 148, 205, 32, 464, 288, 184, 257, 245, 1, 89, 2, 460, 57, 152, 45, 38, 358, 645, 5, 12, 449, 350, 48, 37, 17, 4, 14}, - {19, 27, 26, 813, 80, 297, 17, 495, 436, 53, 73, 200, 4, 378, 250, 59, 106, 25, 45, 128, 361, 42, 113, 469, 122, 390, 77, 40, 736, 6, 11, 136}, - {6, 26, 235, 138, 19, 145, 112, 70, 331, 262, 25, 42, 52, 624, 27, 453, 122, 47, 500, 78, 648, 85, 29, 2, 630, 632, 409, 113, 50, 226, 108, 75}, - {7, 16, 14, 24, 92, 35, 18, 2, 46, 9, 60, 140, 0, 87, 50, 5, 54, 13, 12, 38, 171, 23, 126, 21, 58, 64, 1, 70, 128, 71, 220, 163}, - {90, 205, 257, 184, 32, 179, 460, 5, 245, 45, 2, 288, 769, 524, 57, 21, 152, 229, 17, 1, 497, 4, 292, 59, 619, 452, 432, 76, 476, 11, 266, 14}, - {15, 515, 700, 753, 4, 5, 11, 141, 13, 1, 33, 3, 0, 128, 202, 23, 180, 21, 2, 64, 269, 32, 117, 134, 120, 40, 102, 318, 153, 17, 137, 352}, - {47, 130, 711, 108, 453, 412, 730, 196, 390, 283, 78, 27, 51, 183, 381, 236, 128, 200, 719, 14, 153, 472, 503, 34, 59, 250, 3, 4, 57, 803, 123, 432}, - {12, 277, 51, 474, 111, 153, 23, 99, 13, 37, 961, 94, 629, 542, 569, 431, 79, 139, 38, 134, 117, 453, 33, 188, 196, 40, 115, 15, 11, 157, 401, 515}, - {17, 495, 469, 106, 26, 378, 80, 27, 161, 483, 19, 742, 527, 436, 383, 862, 73, 136, 53, 814, 297, 6, 119, 84, 62, 56, 25, 3, 209, 611, 4, 128}, - {81, 681, 636, 91, 0, 750, 370, 104, 718, 138, 18, 693, 173, 784, 29, 397, 348, 74, 192, 673, 174, 65, 6, 207, 64, 280, 306, 52, 671, 32, 355, 319}, - {15, 515, 700, 753, 33, 77, 4, 102, 115, 117, 40, 13, 1, 153, 134, 11, 5, 217, 23, 196, 2, 21, 3, 317, 32, 365, 0, 341, 291, 59, 12, 51}, - {0, 9, 28, 35, 68, 1, 65, 67, 101, 39, 69, 175, 16, 238, 13, 22, 96, 124, 18, 24, 251, 30, 55, 12, 23, 2, 50, 141, 114, 5, 154, 103}, - {23, 33, 77, 13, 117, 40, 11, 102, 64, 4, 51, 403, 153, 453, 10, 0, 196, 134, 128, 65, 12, 291, 86, 99, 95, 59, 15, 141, 202, 180, 137, 719}, - {214, 90, 289, 6, 874, 64, 25, 65, 235, 42, 751, 249, 256, 312, 194, 85, 746, 875, 174, 32, 525, 288, 519, 835, 247, 348, 233, 544, 217, 524, 437, 352}, - {1, 22, 2, 0, 36, 67, 28, 5, 49, 95, 12, 50, 168, 83, 105, 55, 7, 9, 14, 194, 103, 23, 114, 21, 584, 46, 10, 13, 38, 69, 208, 159}, - {269, 141, 13, 202, 33, 180, 318, 77, 291, 137, 102, 352, 128, 23, 349, 51, 31, 217, 372, 317, 125, 197, 44, 21, 11, 5, 901, 1, 18, 0, 4, 494}, - {435, 144, 274, 88, 203, 418, 30, 1, 190, 410, 96, 778, 100, 530, 521, 326, 466, 795, 686, 166, 960, 321, 382, 264, 367, 822, 131, 31, 692, 9, 213, 93}, - {76, 72, 90, 21, 37, 179, 12, 205, 32, 428, 148, 38, 308, 405, 4, 413, 57, 184, 749, 245, 316, 221, 54, 645, 288, 1, 152, 155, 464, 257, 2, 14}, - {77, 33, 64, 102, 13, 141, 23, 2, 40, 1, 51, 10, 0, 115, 6, 180, 202, 128, 4, 3, 177, 269, 15, 7, 22, 165, 291, 14, 217, 318, 137, 11}, - {397, 81, 4, 32, 65, 788, 693, 804, 681, 11, 249, 21, 91, 64, 690, 494, 3, 0, 422, 56, 348, 725, 194, 123, 23, 59, 523, 319, 61, 510, 95, 90}, - {60, 126, 16, 7, 92, 121, 314, 246, 35, 107, 150, 132, 14, 146, 24, 18, 199, 298, 232, 71, 359, 140, 672, 97, 392, 649, 5, 423, 95, 21, 22, 388}, - {15, 515, 141, 217, 115, 700, 13, 23, 120, 317, 753, 180, 33, 260, 110, 137, 341, 51, 1, 365, 4, 77, 64, 202, 0, 40, 36, 352, 197, 269, 10, 21}, - {111, 134, 117, 474, 23, 13, 961, 12, 569, 431, 37, 15, 51, 115, 515, 700, 277, 99, 753, 38, 197, 405, 457, 4, 72, 94, 629, 45, 11, 89, 54, 148}, - {23, 13, 51, 5, 1, 15, 2, 21, 12, 202, 141, 0, 515, 165, 120, 32, 4, 64, 700, 3, 115, 197, 269, 125, 753, 7, 9, 128, 6, 180, 453, 403}, - {13, 141, 4, 23, 5, 2, 115, 217, 202, 51, 180, 137, 269, 352, 77, 1, 317, 3, 21, 318, 0, 15, 9, 64, 10, 197, 11, 341, 33, 515, 752, 7}, - {165, 125, 197, 13, 391, 21, 23, 558, 48, 380, 97, 120, 298, 33, 14, 426, 66, 115, 32, 386, 900, 180, 6, 98, 357, 237, 326, 509, 51, 278, 221, 457}, - {120, 82, 15, 260, 515, 1, 351, 77, 450, 700, 13, 21, 141, 23, 753, 202, 217, 93, 110, 33, 51, 854, 5, 128, 326, 102, 137, 180, 817, 48, 269, 352}, - {23, 13, 15, 51, 515, 700, 961, 753, 0, 457, 1, 2, 4, 115, 10, 453, 569, 5, 33, 165, 11, 719, 14, 40, 64, 197, 3, 21, 474, 629, 38, 401}, - {264, 166, 39, 30, 9, 100, 435, 254, 93, 921, 190, 363, 1, 625, 411, 382, 897, 656, 203, 478, 404, 812, 438, 110, 473, 88, 18, 691, 156, 141, 274, 272}, - {9, 0, 252, 100, 166, 39, 101, 265, 364, 68, 88, 329, 520, 18, 419, 676, 118, 167, 404, 604, 16, 1, 21, 30, 212, 158, 553, 49, 382, 274, 48, 13}, - {15, 515, 700, 753, 4, 11, 141, 5, 3, 13, 202, 1, 180, 21, 2, 165, 269, 23, 40, 64, 0, 318, 12, 32, 128, 51, 77, 117, 523, 197, 120, 457}, - {24, 1, 2, 69, 35, 16, 67, 18, 14, 50, 0, 46, 68, 9, 38, 7, 133, 71, 83, 149, 28, 108, 189, 218, 65, 114, 238, 29, 75, 54, 5, 96}, - {90, 289, 214, 64, 874, 13, 77, 712, 66, 751, 4, 23, 51, 192, 32, 0, 202, 194, 312, 177, 33, 65, 234, 104, 875, 288, 59, 5, 835, 416, 102, 95}, - {0, 9, 49, 127, 98, 31, 301, 28, 371, 159, 1, 395, 512, 737, 158, 761, 916, 623, 16, 44, 242, 39, 170, 18, 293, 105, 24, 272, 101, 22, 23, 385}, - {17, 62, 136, 214, 123, 129, 32, 292, 119, 209, 710, 106, 141, 162, 128, 64, 45, 4, 77, 249, 11, 618, 211, 3, 207, 130, 519, 183, 38, 177, 21, 269}, - {5, 107, 581, 356, 279, 32, 441, 362, 493, 660, 13, 298, 0, 534, 49, 147, 21, 22, 132, 121, 97, 423, 7, 590, 259, 683, 14, 786, 126, 508, 60, 246}, - {51, 13, 15, 730, 453, 23, 515, 719, 386, 457, 12, 700, 403, 475, 899, 1, 6, 523, 753, 421, 99, 401, 165, 33, 2, 19, 361, 5, 0, 670, 120, 27}, - {49, 28, 9, 159, 272, 22, 254, 131, 158, 327, 95, 105, 0, 39, 35, 168, 347, 286, 374, 55, 65, 627, 424, 912, 68, 578, 1, 24, 239, 175, 688, 169}, - {15, 515, 700, 33, 753, 4, 77, 141, 341, 317, 1, 10, 13, 180, 102, 22, 40, 117, 115, 365, 5, 901, 23, 197, 134, 11, 217, 351, 64, 82, 21, 137}, - {134, 15, 13, 515, 23, 700, 12, 753, 51, 474, 37, 961, 197, 10, 457, 569, 4, 0, 99, 2, 115, 38, 165, 153, 94, 3, 139, 11, 1, 82, 33, 5}, - {7, 2, 20, 58, 5, 14, 128, 66, 6, 29, 32, 43, 21, 52, 16, 38, 631, 61, 74, 97, 46, 135, 113, 25, 202, 192, 13, 0, 884, 45, 112, 87}, - {77, 13, 33, 202, 23, 128, 102, 4, 141, 342, 117, 0, 269, 318, 134, 22, 11, 21, 32, 153, 403, 291, 49, 64, 137, 51, 40, 15, 494, 5, 196, 98}, - {2, 1, 14, 6, 46, 38, 29, 65, 5, 36, 67, 0, 103, 7, 22, 86, 133, 50, 108, 208, 52, 83, 24, 323, 283, 69, 28, 18, 10, 25, 23, 75}, - {15, 515, 700, 753, 1, 5, 4, 2, 3, 13, 0, 11, 180, 341, 12, 33, 10, 197, 134, 365, 77, 23, 21, 901, 6, 117, 165, 7, 37, 32, 17, 102}, - {203, 268, 206, 93, 417, 940, 31, 8, 120, 137, 44, 499, 959, 473, 202, 692, 728, 559, 0, 260, 10, 326, 141, 564, 817, 127, 341, 1, 450, 22, 110, 23}, - {15, 82, 515, 120, 700, 0, 10, 753, 33, 8, 64, 165, 110, 31, 260, 93, 13, 197, 23, 22, 40, 4, 351, 44, 77, 9, 11, 153, 102, 51, 1, 196}, - {60, 0, 16, 7, 14, 43, 20, 71, 28, 10, 2, 22, 154, 18, 13, 24, 92, 1, 51, 576, 35, 615, 805, 925, 68, 126, 124, 149, 97, 64, 23, 55}, - {19, 6, 26, 80, 5, 84, 27, 17, 25, 2, 504, 129, 45, 240, 56, 123, 4, 119, 618, 1, 76, 106, 64, 51, 14, 3, 128, 65, 32, 710, 0, 42}, - {15, 515, 700, 753, 13, 4, 77, 23, 33, 51, 0, 5, 8, 10, 11, 31, 44, 1, 82, 22, 202, 64, 110, 102, 93, 21, 291, 40, 141, 180, 9, 49}, - {195, 98, 271, 223, 132, 167, 146, 407, 1, 360, 121, 834, 393, 591, 212, 199, 293, 259, 522, 107, 354, 147, 156, 191, 807, 590, 48, 18, 125, 16, 765, 541}, - {128, 202, 77, 210, 402, 318, 33, 102, 6, 40, 403, 29, 342, 269, 196, 757, 99, 139, 2, 111, 42, 4, 494, 117, 275, 300, 13, 12, 678, 0, 177, 122}, - {13, 33, 23, 40, 51, 102, 4, 117, 77, 64, 134, 0, 128, 153, 202, 196, 453, 11, 15, 12, 1, 22, 403, 141, 59, 14, 10, 475, 515, 65, 700, 95}, - {7, 16, 14, 24, 18, 2, 28, 0, 92, 71, 1, 22, 6, 35, 60, 20, 168, 10, 154, 118, 5, 302, 124, 69, 97, 109, 703, 158, 420, 12, 149, 66}, - {15, 1, 515, 23, 0, 13, 700, 2, 51, 753, 180, 5, 120, 165, 197, 21, 115, 4, 33, 9, 141, 7, 12, 6, 3, 457, 386, 202, 260, 523, 8, 31}, - {60, 107, 121, 132, 146, 126, 199, 279, 150, 92, 16, 649, 441, 35, 955, 7, 21, 0, 423, 5, 18, 195, 598, 298, 493, 356, 32, 653, 22, 362, 953, 10}, - {31, 44, 98, 276, 284, 299, 116, 935, 9, 201, 0, 131, 39, 127, 144, 662, 1, 137, 371, 492, 567, 489, 93, 254, 49, 268, 22, 28, 30, 293, 434, 737}, - {13, 15, 23, 515, 700, 0, 1, 51, 753, 4, 2, 10, 77, 202, 5, 115, 3, 165, 197, 457, 9, 12, 11, 961, 33, 120, 22, 141, 180, 7, 6, 40}, - {123, 162, 184, 257, 17, 183, 229, 130, 129, 3, 84, 136, 99, 152, 556, 383, 57, 497, 12, 205, 4, 62, 56, 452, 80, 266, 128, 14, 40, 119, 27, 106}, - {196, 33, 117, 40, 153, 23, 134, 13, 51, 102, 453, 0, 15, 475, 12, 14, 515, 2, 22, 700, 4, 21, 753, 64, 401, 670, 730, 1, 9, 11, 10, 99}, - {224, 219, 187, 131, 258, 385, 442, 871, 836, 31, 98, 908, 44, 574, 127, 944, 137, 839, 116, 36, 613, 1, 254, 39, 926, 160, 829, 96, 93, 371, 860, 827}, - {121, 195, 156, 132, 146, 360, 590, 407, 786, 522, 883, 591, 259, 929, 626, 941, 150, 687, 5, 55, 296, 379, 467, 178, 586, 465, 279, 21, 1, 13, 60, 354}, - {2, 1, 14, 29, 6, 5, 46, 52, 38, 19, 114, 75, 26, 65, 108, 96, 25, 50, 36, 70, 103, 309, 17, 236, 218, 74, 12, 86, 0, 3, 10, 112}, - {15, 515, 82, 700, 120, 753, 10, 0, 8, 197, 260, 165, 351, 64, 13, 110, 117, 93, 31, 1, 9, 33, 22, 23, 457, 44, 450, 77, 102, 898, 40, 49}, - {7, 66, 97, 2, 172, 74, 226, 52, 29, 135, 192, 232, 43, 324, 92, 5, 38, 20, 222, 14, 6, 568, 87, 107, 353, 620, 580, 16, 138, 174, 448, 32}, - {62, 129, 123, 162, 136, 249, 618, 183, 507, 57, 4, 152, 17, 59, 11, 184, 117, 77, 3, 128, 211, 41, 130, 205, 12, 40, 33, 106, 64, 229, 38, 313}, - {1, 13, 15, 2, 4, 515, 23, 0, 3, 115, 700, 5, 51, 77, 341, 141, 753, 180, 33, 217, 197, 202, 901, 6, 21, 165, 11, 365, 318, 317, 10, 102}, - {6, 26, 235, 19, 145, 47, 112, 78, 64, 27, 453, 95, 29, 444, 25, 624, 85, 108, 648, 70, 32, 130, 74, 42, 711, 630, 632, 138, 65, 122, 113, 730}, - {23, 51, 12, 15, 13, 99, 515, 153, 117, 10, 700, 37, 120, 82, 165, 2, 753, 64, 128, 0, 403, 3, 5, 1, 134, 197, 453, 31, 202, 457, 110, 21}, - {16, 24, 18, 71, 64, 35, 92, 7, 246, 146, 9, 108, 60, 118, 199, 5, 140, 2, 267, 0, 230, 830, 32, 133, 1, 68, 50, 330, 247, 563, 36, 12}, - {15, 515, 700, 753, 0, 1, 13, 2, 23, 3, 4, 217, 51, 5, 115, 8, 9, 180, 341, 10, 7, 6, 317, 77, 33, 372, 901, 197, 365, 11, 120, 165}, - {234, 639, 178, 202, 77, 142, 5, 455, 450, 49, 416, 0, 147, 427, 198, 21, 315, 329, 13, 318, 325, 557, 120, 344, 113, 259, 22, 128, 61, 105, 23, 494}, - {1, 31, 36, 44, 141, 180, 55, 2, 64, 22, 98, 116, 13, 352, 0, 115, 10, 127, 5, 164, 253, 498, 237, 165, 341, 197, 4, 86, 15, 170, 125, 23}, - {15, 120, 13, 141, 23, 260, 217, 515, 1, 77, 51, 110, 180, 700, 317, 82, 269, 137, 115, 202, 21, 753, 64, 5, 351, 291, 0, 450, 352, 93, 36, 326}, - {26, 6, 112, 396, 19, 145, 25, 122, 648, 287, 42, 74, 624, 222, 416, 45, 138, 66, 644, 151, 113, 651, 29, 573, 64, 280, 445, 27, 525, 85, 70, 58}, - {156, 360, 5, 146, 121, 21, 271, 522, 354, 132, 49, 13, 18, 195, 16, 340, 60, 591, 446, 586, 727, 0, 107, 407, 167, 48, 1, 463, 199, 566, 32, 23}, - {5, 61, 49, 147, 178, 612, 660, 120, 21, 182, 23, 427, 259, 683, 33, 4, 77, 70, 13, 3, 376, 98, 64, 0, 481, 344, 48, 595, 291, 263, 141, 51}, - {89, 79, 468, 179, 358, 205, 94, 405, 115, 498, 72, 180, 365, 431, 37, 111, 341, 734, 188, 317, 482, 217, 11, 4, 245, 152, 413, 216, 12, 474, 490, 752}, - {24, 16, 35, 68, 18, 71, 7, 92, 0, 108, 9, 14, 118, 101, 336, 175, 375, 302, 28, 124, 154, 55, 149, 60, 398, 1, 65, 2, 140, 273, 345, 230}, - {51, 730, 421, 801, 453, 386, 23, 523, 13, 475, 719, 401, 670, 365, 899, 403, 115, 457, 758, 165, 33, 494, 450, 6, 423, 805, 629, 56, 569, 514, 958, 388}, - {113, 45, 6, 311, 29, 2, 151, 614, 145, 491, 112, 80, 5, 27, 61, 74, 315, 66, 209, 631, 19, 25, 58, 17, 73, 26, 1, 243, 70, 64, 611, 287}, - {4, 339, 188, 471, 11, 59, 79, 12, 377, 94, 99, 33, 77, 102, 51, 111, 37, 152, 13, 961, 474, 542, 40, 342, 3, 23, 128, 403, 202, 177, 184, 57}, - {15, 4, 515, 11, 700, 33, 82, 40, 0, 120, 753, 10, 8, 110, 13, 93, 23, 165, 77, 260, 64, 31, 22, 51, 44, 102, 351, 1, 125, 9, 197, 21}, - {16, 24, 18, 0, 35, 68, 28, 71, 124, 118, 60, 7, 9, 55, 14, 92, 109, 101, 419, 175, 22, 252, 154, 375, 149, 302, 158, 346, 2, 49, 1, 126}, - {17, 45, 227, 21, 106, 3, 2, 243, 209, 5, 48, 32, 221, 62, 207, 50, 29, 186, 290, 270, 263, 52, 14, 496, 400, 119, 46, 255, 54, 430, 38, 721}, - {340, 354, 586, 658, 156, 195, 698, 668, 1, 296, 9, 18, 883, 363, 447, 379, 303, 98, 411, 13, 31, 163, 51, 5, 371, 48, 919, 846, 121, 21, 360, 70}, - {277, 153, 111, 12, 23, 51, 474, 99, 38, 37, 139, 117, 41, 457, 79, 453, 542, 13, 11, 33, 134, 157, 629, 188, 961, 14, 196, 401, 102, 569, 15, 94}, - {0, 18, 16, 159, 49, 24, 9, 105, 35, 68, 7, 28, 22, 1, 60, 344, 55, 101, 109, 2, 14, 158, 13, 23, 71, 118, 455, 286, 272, 424, 5, 327}, - {0, 105, 9, 49, 16, 18, 158, 28, 518, 24, 101, 320, 1, 68, 170, 301, 272, 127, 7, 286, 35, 890, 109, 39, 159, 98, 21, 344, 31, 55, 371, 23}, - {141, 1, 180, 15, 13, 2, 365, 217, 515, 352, 317, 115, 341, 0, 4, 5, 269, 700, 23, 21, 3, 752, 197, 77, 753, 51, 31, 901, 10, 202, 8, 64}, - {4, 23, 51, 33, 19, 17, 102, 153, 485, 880, 40, 403, 196, 26, 300, 453, 27, 117, 78, 0, 12, 200, 47, 5, 11, 14, 342, 99, 53, 77, 475, 2}, - {62, 184, 56, 440, 130, 229, 183, 3, 556, 152, 99, 162, 12, 266, 17, 548, 136, 57, 305, 161, 123, 14, 452, 4, 383, 403, 257, 34, 40, 84, 33, 139}, - {13, 23, 77, 141, 64, 202, 33, 51, 269, 115, 0, 102, 21, 4, 217, 128, 5, 32, 318, 137, 291, 9, 15, 2, 180, 10, 3, 317, 177, 515, 7, 6}, - {1, 22, 36, 105, 170, 0, 86, 2, 31, 28, 239, 64, 55, 5, 10, 98, 9, 44, 127, 95, 654, 67, 301, 143, 13, 12, 49, 23, 320, 141, 83, 21}, - {15, 515, 700, 753, 0, 1, 13, 2, 23, 901, 5, 8, 51, 82, 9, 180, 457, 4, 7, 12, 3, 6, 10, 120, 341, 141, 22, 898, 197, 351, 115, 260}, - {1, 39, 274, 98, 100, 265, 190, 30, 438, 310, 166, 223, 88, 96, 909, 31, 264, 625, 530, 9, 382, 812, 21, 252, 593, 0, 254, 539, 44, 131, 23, 778}, - {18, 212, 167, 118, 363, 1, 447, 411, 146, 60, 271, 16, 781, 121, 647, 9, 621, 562, 21, 478, 664, 68, 815, 5, 354, 98, 48, 101, 24, 446, 777, 463}, - {24, 28, 22, 0, 7, 1, 2, 16, 14, 65, 35, 49, 158, 95, 109, 159, 55, 105, 10, 18, 124, 9, 67, 5, 239, 149, 12, 289, 108, 68, 21, 424}, - {105, 22, 131, 272, 286, 98, 55, 239, 1, 31, 320, 9, 127, 327, 36, 185, 28, 374, 86, 219, 0, 64, 187, 44, 578, 164, 224, 913, 535, 115, 601, 13}, - {22, 31, 28, 301, 127, 98, 44, 0, 105, 1, 512, 395, 9, 293, 109, 299, 95, 338, 239, 125, 242, 116, 36, 320, 55, 841, 900, 685, 599, 23, 13, 763}, - {2, 1, 58, 29, 5, 14, 52, 46, 186, 334, 45, 155, 151, 50, 400, 75, 38, 69, 502, 61, 48, 227, 223, 7, 163, 17, 262, 67, 549, 21, 70, 113}, - {7, 107, 135, 232, 97, 14, 2, 92, 66, 16, 172, 192, 278, 387, 298, 356, 38, 35, 448, 52, 46, 43, 60, 29, 20, 126, 324, 526, 357, 359, 64, 5}, - {20, 43, 104, 426, 173, 7, 560, 414, 707, 784, 319, 81, 0, 861, 422, 819, 38, 74, 715, 52, 376, 97, 879, 32, 330, 22, 49, 64, 66, 95, 192, 526}, - {104, 74, 636, 66, 204, 0, 355, 81, 222, 25, 29, 319, 145, 784, 20, 65, 90, 4, 174, 194, 7, 64, 6, 746, 138, 173, 750, 715, 91, 43, 192, 32}, - {0, 9, 101, 35, 68, 39, 65, 28, 252, 124, 67, 154, 364, 336, 100, 166, 30, 1, 289, 55, 149, 346, 16, 114, 158, 88, 439, 24, 429, 22, 570, 194}, - {57, 14, 4, 231, 236, 585, 176, 59, 369, 23, 361, 13, 719, 51, 300, 342, 12, 457, 56, 3, 62, 38, 202, 401, 34, 46, 2, 322, 11, 215, 210, 507}, - {1, 2, 15, 3, 141, 0, 515, 5, 33, 700, 13, 64, 77, 180, 6, 128, 753, 10, 4, 269, 102, 202, 11, 7, 134, 197, 352, 120, 117, 318, 12, 291}, - {5, 1, 21, 202, 13, 32, 48, 23, 0, 61, 259, 22, 494, 120, 70, 49, 51, 18, 137, 128, 465, 12, 178, 115, 2, 453, 403, 141, 58, 3, 90, 450}, - {141, 205, 4, 72, 59, 79, 245, 11, 352, 94, 152, 76, 247, 216, 21, 188, 452, 217, 497, 12, 89, 37, 111, 339, 588, 77, 64, 875, 864, 115, 358, 464}, - {15, 515, 700, 753, 0, 1, 2, 13, 5, 4, 23, 3, 8, 341, 365, 51, 115, 10, 120, 457, 6, 141, 77, 197, 31, 7, 165, 9, 202, 450, 961, 260}, - {5, 2, 50, 14, 58, 38, 171, 46, 29, 1, 45, 186, 17, 52, 155, 218, 48, 281, 61, 487, 54, 36, 67, 21, 328, 334, 151, 227, 760, 114, 400, 133}, - {457, 120, 70, 125, 318, 64, 23, 48, 795, 291, 202, 761, 751, 415, 77, 846, 269, 758, 21, 237, 96, 260, 391, 165, 87, 1, 128, 5, 221, 13, 137, 763}, - {13, 23, 51, 33, 4, 40, 117, 102, 453, 64, 153, 196, 0, 77, 15, 11, 12, 475, 1, 65, 134, 10, 515, 22, 21, 14, 700, 59, 403, 141, 2, 753}, - {229, 152, 57, 266, 452, 381, 432, 12, 313, 184, 99, 471, 17, 4, 62, 339, 157, 3, 129, 59, 128, 11, 369, 37, 77, 38, 40, 123, 5, 497, 188, 257}, - {49, 28, 109, 22, 159, 9, 272, 95, 105, 131, 55, 35, 254, 168, 39, 327, 169, 0, 1, 286, 175, 374, 347, 158, 420, 67, 36, 194, 312, 424, 627, 346}, - {5, 2, 61, 29, 45, 58, 80, 311, 1, 17, 209, 227, 52, 243, 106, 869, 454, 151, 592, 496, 48, 334, 14, 155, 6, 186, 46, 171, 75, 21, 255, 667}, - {244, 44, 110, 141, 260, 30, 269, 352, 839, 131, 574, 228, 373, 276, 1, 406, 219, 717, 217, 137, 253, 224, 120, 93, 36, 31, 567, 116, 661, 187, 341, 88}, - {12, 99, 79, 139, 11, 453, 196, 51, 277, 474, 111, 23, 542, 37, 94, 188, 33, 13, 401, 775, 40, 961, 313, 102, 4, 339, 153, 485, 629, 134, 300, 431}, - {16, 35, 9, 0, 68, 24, 149, 69, 67, 18, 1, 114, 65, 230, 71, 7, 103, 133, 50, 167, 212, 118, 101, 191, 140, 64, 399, 28, 124, 283, 55, 565}, - {88, 30, 274, 435, 131, 613, 190, 100, 93, 829, 166, 1, 187, 795, 530, 127, 382, 957, 960, 160, 31, 137, 466, 264, 39, 800, 406, 254, 28, 473, 521, 219}, - {167, 16, 18, 118, 212, 24, 60, 71, 101, 68, 191, 9, 375, 411, 363, 35, 0, 1, 589, 199, 302, 21, 447, 55, 146, 126, 92, 271, 647, 121, 562, 48}, - {64, 141, 86, 177, 77, 128, 147, 597, 304, 95, 269, 102, 275, 4, 352, 49, 120, 5, 372, 194, 465, 13, 588, 237, 947, 216, 202, 180, 612, 751, 107, 534}, - {18, 65, 90, 403, 523, 289, 240, 214, 194, 102, 701, 475, 202, 217, 283, 862, 389, 51, 33, 0, 494, 421, 453, 817, 84, 64, 847, 899, 352, 13, 23, 437}, - {13, 51, 23, 202, 5, 12, 21, 128, 15, 115, 0, 1, 141, 120, 64, 32, 4, 2, 515, 403, 165, 457, 3, 10, 700, 99, 453, 318, 719, 450, 308, 401}, - {98, 223, 393, 31, 1, 271, 834, 791, 167, 44, 202, 64, 93, 697, 5, 116, 77, 125, 450, 446, 212, 18, 541, 293, 51, 120, 195, 132, 284, 13, 807, 765}, - {15, 515, 700, 753, 4, 11, 23, 13, 40, 51, 82, 165, 0, 110, 93, 33, 141, 64, 120, 5, 10, 77, 3, 102, 180, 32, 202, 125, 8, 197, 31, 21}, - {15, 515, 700, 753, 0, 1, 13, 2, 901, 23, 5, 341, 3, 51, 82, 8, 4, 180, 961, 9, 115, 10, 12, 6, 898, 7, 351, 141, 134, 22, 31, 120}, - {234, 416, 77, 5, 315, 639, 325, 202, 147, 198, 113, 49, 450, 61, 455, 142, 0, 21, 22, 342, 329, 494, 178, 58, 102, 427, 318, 230, 13, 120, 43, 470}, - {60, 146, 16, 18, 156, 126, 121, 271, 199, 360, 132, 24, 167, 0, 640, 10, 71, 522, 21, 92, 5, 340, 107, 354, 118, 150, 22, 195, 446, 35, 28, 212}, - {4, 361, 11, 14, 56, 368, 377, 161, 27, 12, 300, 77, 59, 200, 17, 554, 202, 33, 40, 494, 495, 21, 210, 80, 757, 25, 128, 23, 19, 38, 444, 53}, - {141, 82, 217, 351, 15, 352, 120, 1, 180, 260, 515, 64, 854, 36, 700, 317, 752, 372, 13, 269, 77, 753, 922, 21, 349, 23, 202, 110, 93, 137, 51, 373}, - {15, 515, 700, 753, 77, 13, 0, 1, 23, 33, 102, 2, 51, 4, 3, 5, 291, 217, 10, 9, 450, 120, 341, 7, 317, 6, 11, 117, 115, 8, 260, 180}, - {15, 515, 120, 13, 700, 23, 77, 141, 1, 260, 0, 753, 180, 51, 137, 202, 115, 365, 110, 291, 217, 5, 128, 9, 21, 341, 197, 269, 2, 450, 317, 165}, - {174, 6, 348, 85, 138, 74, 280, 204, 66, 233, 192, 355, 289, 65, 81, 580, 636, 353, 25, 91, 104, 343, 673, 214, 64, 95, 42, 712, 792, 32, 194, 90}, - {152, 497, 452, 59, 4, 216, 11, 79, 94, 77, 128, 188, 269, 339, 588, 33, 76, 529, 318, 32, 141, 471, 12, 202, 111, 21, 5, 51, 37, 90, 72, 177}, - {417, 499, 10, 141, 253, 244, 110, 559, 8, 564, 180, 260, 728, 120, 352, 638, 642, 341, 951, 206, 143, 752, 901, 93, 137, 661, 922, 373, 44, 31, 811, 197}, - {13, 77, 23, 33, 4, 51, 0, 102, 128, 59, 141, 40, 64, 115, 177, 10, 137, 22, 202, 2, 7, 11, 90, 1, 117, 180, 269, 14, 49, 6, 134, 3}, - {1, 2, 22, 0, 36, 5, 67, 50, 14, 28, 12, 86, 38, 46, 83, 168, 194, 65, 103, 114, 49, 7, 10, 95, 21, 69, 23, 24, 128, 51, 55, 13}, - {17, 106, 119, 207, 255, 306, 742, 378, 84, 62, 136, 45, 3, 5, 240, 80, 61, 56, 209, 383, 311, 790, 655, 32, 2, 440, 76, 151, 58, 29, 179, 263}, - {3, 128, 1, 141, 2, 202, 33, 5, 64, 15, 0, 515, 102, 13, 269, 10, 700, 180, 134, 51, 120, 6, 77, 318, 23, 137, 17, 117, 753, 197, 82, 153}, - {514, 38, 377, 328, 11, 57, 41, 248, 880, 266, 556, 4, 152, 361, 471, 757, 485, 403, 305, 102, 3, 211, 313, 99, 457, 130, 12, 14, 157, 40, 23, 54}, - {68, 0, 167, 101, 9, 118, 264, 520, 16, 18, 21, 478, 562, 1, 124, 212, 100, 936, 664, 777, 191, 88, 806, 154, 48, 24, 759, 604, 35, 252, 265, 65}, - {230, 689, 699, 213, 466, 352, 217, 831, 30, 443, 418, 144, 854, 201, 840, 855, 1, 251, 203, 317, 530, 957, 96, 93, 822, 539, 36, 752, 351, 137, 83, 800}, - {33, 77, 102, 117, 15, 82, 13, 134, 23, 64, 0, 515, 120, 153, 51, 4, 40, 128, 700, 260, 202, 141, 196, 22, 753, 11, 351, 10, 1, 326, 95, 269}, - {11, 40, 33, 51, 117, 13, 542, 328, 14, 134, 38, 153, 23, 12, 485, 231, 102, 54, 775, 37, 3, 377, 111, 139, 211, 4, 457, 403, 369, 475, 99, 719}, - {33, 64, 77, 128, 141, 2, 1, 202, 102, 13, 23, 117, 0, 15, 3, 153, 51, 134, 10, 40, 6, 5, 515, 269, 137, 180, 318, 165, 700, 7, 196, 753}, - {15, 515, 700, 753, 4, 1, 5, 11, 13, 21, 33, 180, 93, 141, 64, 2, 23, 77, 82, 3, 0, 102, 32, 40, 352, 341, 10, 197, 98, 110, 117, 901}, - {1, 2, 14, 67, 50, 46, 38, 24, 103, 83, 0, 5, 36, 28, 29, 133, 114, 96, 65, 52, 18, 75, 54, 108, 22, 7, 238, 58, 160, 9, 361, 69}, - {258, 201, 276, 137, 160, 860, 116, 261, 295, 843, 567, 144, 131, 44, 187, 268, 943, 219, 284, 31, 202, 935, 141, 98, 662, 203, 127, 96, 36, 93, 224, 1}, - {7, 2, 14, 16, 46, 87, 75, 52, 92, 278, 29, 38, 140, 70, 1, 5, 35, 294, 24, 262, 135, 69, 171, 172, 58, 409, 112, 60, 50, 66, 97, 12}, - {13, 23, 0, 2, 51, 1, 33, 4, 115, 10, 15, 141, 77, 3, 5, 180, 217, 515, 9, 7, 64, 11, 700, 6, 102, 40, 197, 22, 317, 753, 165, 202}, - {74, 145, 6, 66, 25, 204, 42, 29, 222, 337, 138, 26, 7, 525, 192, 174, 746, 287, 544, 135, 415, 2, 609, 632, 112, 64, 87, 0, 85, 45, 712, 396}, - {77, 33, 102, 15, 217, 13, 23, 141, 202, 515, 51, 700, 291, 4, 269, 753, 317, 180, 21, 64, 318, 115, 128, 0, 275, 2, 352, 196, 3, 5, 137, 11}, - {187, 219, 258, 871, 44, 442, 160, 574, 137, 224, 908, 116, 839, 131, 36, 926, 276, 201, 93, 228, 202, 860, 31, 613, 144, 531, 406, 1, 902, 30, 190, 318}, - {1, 372, 141, 5, 21, 77, 225, 744, 96, 30, 23, 349, 13, 291, 269, 284, 69, 442, 459, 144, 303, 839, 217, 622, 160, 330, 260, 48, 120, 410, 189, 352}, - {66, 222, 2, 74, 29, 87, 135, 6, 7, 145, 52, 25, 294, 337, 226, 172, 138, 331, 42, 70, 97, 112, 26, 1, 632, 192, 43, 5, 415, 609, 461, 353}, - {45, 17, 106, 209, 5, 2, 21, 29, 48, 207, 3, 186, 243, 155, 255, 263, 454, 119, 400, 496, 270, 14, 290, 62, 425, 1, 171, 32, 659, 52, 38, 56}, - {93, 88, 141, 120, 30, 213, 260, 373, 100, 717, 459, 82, 110, 1, 166, 450, 180, 321, 217, 372, 36, 269, 131, 225, 22, 352, 326, 466, 473, 187, 244, 410}, - {266, 57, 152, 381, 313, 471, 12, 229, 99, 369, 339, 62, 157, 3, 4, 37, 77, 38, 188, 17, 11, 162, 40, 184, 129, 59, 475, 775, 128, 452, 403, 453}, - {217, 352, 317, 141, 752, 15, 180, 515, 372, 365, 700, 341, 753, 349, 77, 21, 291, 1, 115, 244, 64, 120, 13, 98, 269, 82, 5, 498, 864, 351, 23, 144}, - {14, 514, 369, 102, 403, 377, 51, 719, 880, 153, 23, 13, 457, 11, 485, 4, 401, 12, 328, 453, 33, 40, 117, 57, 629, 38, 730, 236, 134, 670, 361, 961}, - {107, 7, 172, 14, 92, 135, 2, 359, 60, 314, 46, 16, 126, 278, 232, 150, 279, 32, 38, 392, 298, 5, 35, 97, 24, 192, 259, 288, 330, 52, 356, 312}, - {0, 4, 25, 13, 59, 90, 65, 23, 26, 19, 18, 12, 5, 216, 91, 51, 389, 33, 77, 11, 22, 85, 27, 81, 21, 177, 746, 45, 42, 194, 37, 123}, - {5, 49, 315, 202, 416, 77, 455, 639, 450, 21, 197, 137, 350, 13, 408, 0, 329, 318, 494, 344, 61, 402, 64, 509, 347, 120, 113, 48, 95, 713, 308, 401}, - {130, 47, 381, 390, 59, 90, 200, 214, 289, 6, 65, 472, 29, 64, 874, 648, 50, 751, 624, 26, 52, 32, 4, 194, 875, 714, 85, 249, 247, 33, 881, 19}, - {51, 23, 453, 13, 719, 12, 457, 165, 37, 730, 99, 4, 386, 197, 401, 17, 11, 2, 3, 15, 5, 961, 475, 6, 515, 64, 54, 700, 32, 115, 0, 403}, - {15, 515, 1, 13, 700, 2, 23, 0, 753, 5, 3, 180, 51, 4, 165, 12, 141, 21, 197, 457, 7, 115, 6, 9, 352, 10, 120, 202, 8, 341, 11, 77}, - {0, 9, 1, 67, 35, 28, 68, 16, 24, 65, 18, 69, 50, 114, 103, 12, 22, 13, 5, 101, 2, 96, 23, 83, 149, 21, 39, 55, 7, 175, 433, 124}, - {28, 105, 22, 0, 1, 320, 170, 9, 49, 301, 109, 95, 127, 31, 98, 55, 65, 35, 2, 24, 168, 159, 36, 713, 16, 740, 13, 338, 21, 44, 512, 23}, - {13, 77, 4, 51, 23, 33, 102, 202, 128, 59, 40, 0, 64, 141, 117, 403, 115, 11, 15, 318, 153, 269, 22, 515, 475, 134, 10, 494, 177, 1, 90, 210}, - {13, 23, 0, 51, 77, 33, 2, 141, 4, 10, 1, 64, 115, 102, 3, 6, 22, 15, 217, 11, 180, 7, 40, 515, 165, 202, 177, 9, 269, 128, 700, 5}, - {456, 116, 492, 8, 949, 268, 867, 391, 203, 51, 499, 13, 719, 386, 31, 791, 457, 918, 125, 10, 23, 93, 479, 685, 417, 0, 22, 338, 506, 551, 870, 730}, - {17, 237, 45, 180, 106, 62, 32, 64, 115, 41, 136, 498, 255, 21, 197, 129, 241, 13, 3, 227, 23, 352, 165, 752, 350, 365, 449, 155, 4, 546, 476, 38}, - {1, 15, 180, 515, 0, 2, 341, 700, 901, 352, 4, 141, 13, 3, 752, 5, 753, 217, 317, 115, 365, 23, 197, 21, 51, 165, 31, 6, 269, 202, 77, 7}, - {205, 141, 216, 269, 497, 4, 588, 76, 59, 152, 128, 452, 79, 77, 875, 11, 72, 94, 188, 217, 352, 12, 247, 37, 90, 64, 32, 1, 474, 23, 947, 372}, - {64, 247, 217, 237, 317, 180, 752, 115, 349, 141, 498, 13, 437, 304, 23, 372, 352, 164, 579, 291, 33, 864, 177, 197, 0, 490, 72, 10, 482, 77, 269, 51}, - {2, 1, 0, 13, 15, 141, 3, 77, 5, 515, 64, 33, 23, 180, 6, 700, 4, 117, 217, 7, 10, 11, 102, 165, 753, 197, 115, 134, 40, 352, 12, 269}, - {11, 40, 38, 328, 33, 542, 12, 313, 41, 339, 23, 157, 377, 117, 369, 51, 471, 99, 775, 485, 13, 305, 457, 57, 14, 475, 37, 248, 4, 54, 188, 719}, - {33, 77, 102, 40, 13, 23, 0, 51, 4, 128, 64, 202, 117, 141, 22, 196, 153, 10, 134, 15, 59, 269, 1, 137, 65, 11, 403, 318, 453, 86, 515, 177}, - {472, 80, 34, 250, 495, 161, 17, 14, 469, 176, 128, 4, 389, 106, 283, 436, 216, 527, 3, 297, 483, 177, 53, 56, 231, 194, 119, 84, 719, 57, 255, 59}, - {317, 352, 180, 141, 217, 752, 115, 341, 365, 244, 1, 269, 202, 901, 253, 15, 21, 498, 372, 4, 137, 515, 13, 2, 700, 318, 5, 197, 23, 143, 753, 349}, - {9, 39, 101, 18, 265, 100, 333, 520, 252, 16, 0, 329, 593, 1, 553, 364, 68, 167, 310, 30, 121, 254, 118, 158, 363, 166, 60, 604, 272, 24, 286, 404}, - {15, 515, 1, 180, 700, 901, 0, 2, 753, 341, 752, 4, 3, 13, 115, 365, 317, 5, 23, 197, 141, 217, 165, 352, 6, 22, 36, 9, 137, 51, 7, 10}, - {131, 39, 9, 829, 166, 613, 578, 827, 1, 30, 716, 254, 100, 98, 31, 224, 0, 406, 228, 310, 616, 219, 44, 846, 127, 190, 938, 96, 265, 371, 856, 438}, - {17, 64, 62, 106, 141, 751, 136, 292, 32, 129, 352, 41, 38, 476, 86, 128, 214, 237, 5, 177, 123, 209, 217, 45, 269, 954, 162, 710, 180, 3, 90, 4}, - {25, 42, 235, 65, 650, 736, 605, 6, 630, 85, 123, 343, 233, 256, 26, 122, 63, 389, 141, 249, 416, 444, 368, 194, 19, 108, 138, 174, 90, 0, 544, 511}, - {184, 229, 152, 57, 266, 432, 497, 452, 17, 381, 619, 257, 313, 12, 4, 205, 59, 3, 99, 471, 157, 128, 5, 129, 339, 369, 77, 11, 32, 45, 202, 2}, - {137, 202, 160, 860, 141, 30, 93, 567, 36, 276, 295, 261, 131, 39, 9, 964, 201, 843, 1, 98, 800, 318, 116, 22, 943, 187, 10, 219, 206, 44, 269, 535}, - {0, 493, 125, 64, 49, 9, 279, 10, 35, 18, 93, 55, 293, 31, 14, 13, 194, 165, 325, 48, 22, 132, 21, 107, 98, 389, 44, 581, 342, 259, 174, 137}, - {15, 515, 700, 753, 4, 33, 13, 77, 23, 5, 51, 32, 102, 40, 93, 11, 349, 141, 21, 8, 82, 202, 64, 31, 110, 10, 117, 0, 1, 44, 3, 318}, - {110, 253, 854, 811, 352, 141, 244, 951, 180, 642, 661, 384, 498, 143, 752, 317, - 911, 10, 269, 206, 559, 351, 261, 120, 902, 533, 922, 959, 365, 160, 332, 217}, - {2, 29, 70, 1, 75, 52, 6, 220, 26, 112, 145, 331, 74, 163, 19, 69, 38, 324, 46, 58, 14, 5, 25, 21, 278, 223, 50, 307, 66, 7, 67, 409}, - {13, 23, 77, 33, 51, 4, 64, 141, 115, 102, 0, 2, 128, 177, 40, 11, 202, 10, 6, 180, 7, 15, 269, 1, 32, 217, 59, 22, 291, 3, 137, 515}, - {340, 897, 691, 478, 658, 264, 914, 382, 100, 812, 363, 1, 724, 156, 166, 698, 88, 521, 39, 404, 682, 447, 296, 96, 303, 411, 30, 909, 9, 274, 656, 772}, - {9, 18, 310, 101, 265, 159, 326, 120, 105, 158, 33, 363, 77, 195, 51, 55, 13, 39, 354, 132, 23, 7, 28, 639, 16, 137, 98, 1, 252, 272, 709, 49}, - {57, 313, 471, 12, 99, 369, 157, 339, 266, 152, 38, 37, 475, 453, 328, 775, 11, 40, 59, 188, 77, 514, 401, 403, 342, 4, 139, 33, 377, 51, 229, 14}, - {16, 7, 24, 14, 35, 140, 60, 92, 18, 69, 71, 2, 189, 1, 46, 230, 108, 388, 150, 38, 21, 172, 278, 67, 246, 267, 50, 309, 236, 135, 451, 0}, - {206, 417, 93, 940, 959, 473, 499, 203, 8, 137, 559, 728, 31, 202, 44, 120, 450, 141, 10, 260, 116, 564, 22, 326, 269, 318, 268, 244, 0, 1, 253, 638}, - {15, 515, 700, 753, 1, 0, 13, 2, 23, 4, 3, 51, 5, 217, 7, 77, 341, 115, 8, 9, 10, 33, 6, 180, 317, 349, 291, 120, 11, 165, 457, 901}, - {1, 2, 5, 14, 48, 21, 290, 32, 50, 45, 38, 46, 263, 207, 155, 72, 76, 29, 17, 408, 425, 171, 89, 52, 7, 0, 292, 449, 3, 227, 513, 428}, - {121, 132, 354, 167, 271, 223, 146, 98, 18, 463, 1, 668, 446, 195, 407, 60, 212, 447, 781, 48, 360, 363, 411, 522, 156, 393, 807, 9, 21, 16, 293, 13}, - {131, 578, 105, 371, 219, 224, 716, 616, 187, 49, 9, 254, 737, 159, 385, 98, 258, 127, 272, 761, 0, 916, 623, 910, 28, 286, 39, 31, 22, 518, 924, 242}, - {302, 467, 97, 6, 273, 1, 24, 484, 124, 51, 36, 18, 2, 398, 453, 421, 523, 69, 7, 23, 13, 403, 386, 150, 66, 0, 298, 65, 426, 165, 22, 158}, - {30, 190, 530, 88, 1, 100, 778, 539, 625, 274, 382, 410, 96, 731, 960, 39, 795, 321, 9, 131, 264, 144, 840, 748, 44, 166, 669, 957, 36, 31, 435, 228}, - {141, 1, 2, 128, 64, 33, 15, 202, 3, 0, 180, 5, 13, 77, 515, 134, 269, 102, 197, 700, 10, 137, 318, 6, 120, 165, 753, 352, 4, 82, 23, 117}, - {44, 201, 567, 116, 131, 224, 295, 662, 489, 268, 219, 31, 434, 144, 187, 276, 110, 384, 93, 261, 699, 137, 36, 442, 120, 1, 613, 30, 228, 64, 141, 244}, - {12, 15, 51, 23, 515, 37, 99, 13, 700, 0, 10, 117, 753, 38, 165, 82, 134, 120, 11, 453, 197, 64, 115, 569, 1, 629, 401, 22, 457, 474, 110, 153}, - {7, 135, 2, 92, 172, 14, 66, 140, 38, 52, 97, 46, 29, 74, 16, 324, 278, 226, 6, 87, 1, 571, 262, 5, 357, 232, 35, 380, 69, 314, 24, 330}, - {125, 386, 23, 963, 949, 60, 51, 391, 165, 221, 13, 197, 118, 21, 719, 193, 541, 421, 517, 150, 393, 7, 401, 453, 308, 5, 791, 551, 326, 558, 48, 173}, - {6, 85, 42, 25, 138, 222, 174, 235, 280, 256, 525, 289, 26, 214, 64, 746, 90, 32, 544, 65, 204, 19, 66, 337, 355, 95, 348, 415, 74, 29, 5, 312}, - {1, 14, 5, 50, 2, 67, 24, 0, 46, 69, 48, 21, 58, 103, 16, 12, 18, 38, 54, 96, 83, 7, 502, 45, 36, 181, 35, 9, 430, 28, 10, 155}, - {811, 351, 642, 180, 951, 752, 110, 638, 253, 10, 82, 352, 197, 341, 365, 564, 499, 854, 873, 55, 9, 417, 282, 901, 244, 22, 559, 143, 206, 141, 28, 898}, - {23, 13, 51, 15, 12, 453, 403, 165, 4, 515, 115, 719, 475, 457, 700, 523, 2, 21, 0, 99, 202, 197, 14, 5, 386, 753, 128, 401, 37, 308, 33, 117}, - {120, 13, 23, 77, 141, 1, 15, 93, 217, 82, 260, 51, 137, 202, 110, 515, 21, 180, 165, 5, 128, 102, 64, 351, 291, 700, 269, 352, 326, 203, 177, 0}, - {1, 5, 0, 22, 12, 2, 36, 21, 10, 23, 86, 13, 28, 51, 9, 128, 48, 14, 32, 50, 7, 3, 96, 137, 54, 4, 202, 49, 37, 65, 208, 323}, - {219, 98, 23, 127, 301, 51, 258, 308, 170, 910, 13, 165, 22, 105, 293, 616, 125, 242, 276, 401, 201, 395, 964, 115, 55, 284, 31, 374, 327, 206, 512, 900}, - {64, 180, 80, 165, 5, 237, 2, 250, 34, 58, 297, 61, 197, 17, 22, 29, 186, 498, 231, 445, 247, 3, 752, 311, 95, 32, 483, 153, 27, 45, 115, 469}, - {13, 77, 23, 33, 0, 2, 1, 64, 141, 51, 102, 10, 15, 3, 115, 40, 180, 6, 515, 128, 7, 22, 269, 202, 4, 217, 700, 5, 177, 117, 14, 165}, - {15, 120, 51, 515, 13, 450, 23, 700, 202, 153, 196, 753, 260, 64, 128, 141, 730, 4, 326, 386, 21, 523, 33, 318, 5, 457, 95, 32, 403, 1, 77, 269}, - {2, 1, 5, 29, 32, 45, 207, 263, 14, 425, 58, 72, 76, 21, 7, 408, 48, 46, 52, 186, 17, 292, 38, 6, 61, 89, 476, 50, 155, 720, 119, 3}, - {15, 515, 700, 753, 4, 13, 11, 5, 1, 23, 33, 21, 3, 141, 32, 2, 40, 180, 117, 64, 269, 202, 102, 197, 0, 165, 120, 51, 341, 352, 153, 12}, - {76, 5, 214, 129, 2, 123, 45, 710, 17, 249, 618, 460, 179, 32, 1, 257, 205, 519, 90, 207, 245, 184, 162, 61, 769, 209, 292, 106, 6, 29, 14, 128}, - {1, 15, 23, 13, 120, 141, 51, 515, 202, 21, 700, 165, 0, 180, 137, 2, 5, 77, 128, 93, 753, 260, 269, 197, 326, 33, 110, 352, 82, 102, 318, 48}, - {7, 2, 135, 14, 29, 87, 66, 52, 97, 172, 70, 112, 5, 58, 46, 337, 92, 16, 20, 43, 1, 38, 232, 155, 74, 294, 6, 461, 409, 151, 262, 32}, - {574, 187, 384, 926, 860, 110, 258, 434, 269, 531, 141, 244, 160, 261, 253, 116, - 699, 959, 940, 717, 533, 36, 219, 31, 902, 661, 871, 295, 201, 352, 10, 260}, - {156, 354, 296, 1, 182, 586, 64, 379, 340, 937, 850, 698, 31, 48, 98, 44, 120, 18, 163, 23, 30, 658, 195, 125, 77, 284, 223, 291, 774, 481, 96, 39}, - {250, 80, 34, 472, 17, 495, 176, 469, 33, 194, 64, 483, 4, 297, 141, 14, 161, 27, 53, 667, 56, 833, 73, 527, 585, 231, 106, 51, 84, 814, 2, 59}, - {97, 7, 81, 140, 66, 92, 172, 192, 24, 298, 43, 6, 74, 69, 314, 426, 462, 14, 501, 16, 21, 508, 60, 189, 267, 232, 230, 104, 48, 20, 135, 330}, - {31, 44, 116, 144, 268, 393, 492, 434, 367, 489, 127, 98, 918, 0, 384, 9, 22, 206, 948, 105, 93, 203, 1, 456, 332, 940, 299, 28, 137, 49, 293, 125}, - {15, 128, 33, 3, 13, 51, 141, 1, 202, 64, 23, 2, 515, 120, 102, 0, 5, 82, 10, 700, 165, 197, 269, 153, 403, 110, 753, 137, 196, 318, 117, 12}, - {31, 98, 127, 9, 0, 105, 22, 28, 44, 512, 293, 395, 299, 1, 242, 49, 685, 763, 320, 599, 125, 116, 109, 276, 284, 95, 870, 159, 23, 456, 36, 900}, - {7, 24, 124, 1, 6, 97, 2, 69, 14, 18, 23, 92, 21, 67, 66, 16, 5, 484, 43, 20, 118, 65, 36, 22, 28, 0, 51, 140, 13, 71, 29, 150}, - {1, 64, 442, 303, 284, 349, 202, 141, 622, 67, 154, 447, 260, 44, 652, 429, 9, 335, 237, 919, 197, 98, 167, 33, 682, 269, 547, 77, 863, 411, 340, 201}, - {1, 15, 2, 141, 515, 0, 700, 13, 3, 180, 10, 753, 5, 64, 77, 33, 4, 6, 7, 197, 102, 269, 165, 23, 134, 11, 352, 341, 291, 349, 22, 120}, - {99, 139, 12, 453, 196, 277, 775, 40, 475, 33, 23, 401, 215, 51, 11, 14, 77, 111, 313, 130, 38, 211, 37, 266, 129, 15, 339, 153, 719, 3, 369, 515}, - {33, 77, 102, 4, 23, 128, 13, 141, 202, 64, 51, 0, 40, 59, 269, 115, 117, 137, 153, 1, 318, 11, 10, 177, 15, 134, 22, 90, 196, 2, 403, 32}, - {7, 2, 14, 58, 70, 112, 16, 5, 87, 38, 46, 52, 6, 128, 135, 1, 32, 21, 155, 29, 66, 64, 0, 97, 92, 186, 172, 294, 13, 23, 20, 37}, - {15, 13, 515, 1, 700, 2, 23, 0, 753, 5, 3, 4, 51, 10, 341, 115, 365, 180, 11, 33, 317, 77, 6, 7, 217, 12, 197, 165, 117, 9, 64, 102}, - {2, 1, 14, 29, 75, 69, 67, 6, 52, 46, 38, 24, 103, 220, 83, 25, 70, 87, 262, 74, 96, 267, 50, 366, 26, 16, 226, 394, 357, 66, 108, 19}, - {9, 105, 18, 39, 1, 0, 16, 557, 101, 272, 252, 890, 326, 49, 265, 21, 137, 100, 23, 938, 13, 310, 159, 5, 31, 24, 254, 51, 30, 128, 202, 132}, - {80, 209, 45, 61, 667, 17, 6, 106, 5, 2, 151, 29, 483, 255, 454, 833, 27, 311, 112, 19, 738, 378, 1, 58, 113, 26, 25, 469, 119, 887, 32, 64}, - {13, 23, 51, 15, 5, 1, 515, 0, 21, 2, 12, 141, 700, 165, 202, 115, 753, 32, 180, 4, 3, 197, 10, 120, 457, 9, 269, 128, 64, 341, 7, 33}, - {99, 12, 453, 277, 139, 157, 369, 474, 339, 51, 38, 23, 37, 196, 188, 401, 775, 111, 11, 313, 328, 475, 153, 266, 4, 471, 79, 40, 33, 629, 102, 14}, - {7, 92, 16, 232, 97, 140, 126, 14, 60, 107, 66, 35, 298, 387, 314, 104, 246, 462, 441, 150, 0, 38, 24, 2, 172, 357, 230, 330, 5, 633, 22, 289}, - {13, 77, 23, 202, 318, 141, 33, 4, 51, 269, 102, 177, 115, 403, 137, 2, 40, 494, 90, 11, 342, 128, 31, 117, 21, 32, 7, 12, 64, 134, 14, 10}, - {13, 2, 0, 23, 141, 1, 77, 3, 180, 33, 6, 64, 15, 10, 115, 51, 4, 5, 217, 197, 7, 165, 515, 102, 22, 11, 700, 269, 40, 352, 177, 14}, - {15, 515, 700, 753, 4, 11, 1, 93, 13, 5, 180, 110, 82, 21, 120, 23, 2, 33, 10, 141, 3, 165, 197, 102, 901, 0, 32, 341, 117, 40, 153, 12}, - {15, 515, 700, 753, 1, 13, 0, 2, 23, 4, 77, 51, 3, 5, 341, 291, 7, 33, 6, 115, 10, 9, 8, 217, 11, 177, 120, 180, 102, 165, 197, 365}, - {20, 43, 198, 325, 173, 904, 104, 234, 66, 147, 77, 319, 416, 422, 97, 426, 5, 0, 7, 450, 861, 202, 712, 725, 2, 32, 639, 376, 38, 324, 945, 315}, - {105, 0, 9, 28, 49, 301, 170, 1, 127, 159, 22, 16, 31, 98, 512, 623, 24, 109, 158, 395, 35, 68, 371, 65, 713, 55, 2, 242, 293, 21, 44, 18}, - {213, 88, 689, 466, 230, 30, 321, 435, 699, 352, 217, 201, 795, 831, 144, 854, 1, 443, 96, 539, 530, 840, 418, 251, 855, 190, 93, 100, 669, 31, 957, 662}, - {130, 453, 47, 196, 4, 57, 14, 59, 236, 711, 51, 153, 730, 77, 412, 381, 23, 202, 108, 128, 361, 13, 283, 117, 11, 719, 200, 46, 34, 78, 210, 2}, - {1, 2, 5, 14, 0, 50, 36, 22, 38, 46, 65, 67, 12, 86, 114, 28, 103, 29, 208, 7, 10, 128, 21, 83, 218, 23, 96, 54, 194, 6, 133, 51}, - {6, 26, 74, 19, 165, 453, 14, 730, 1, 125, 197, 50, 29, 51, 138, 357, 13, 2, 108, 391, 70, 719, 46, 457, 47, 500, 386, 262, 112, 23, 235, 52}, - {9, 10, 376, 20, 43, 0, 49, 18, 30, 120, 2, 33, 325, 104, 501, 470, 77, 788, 725, 102, 523, 39, 858, 5, 904, 414, 174, 55, 137, 37, 342, 13}, - {15, 515, 700, 753, 0, 1, 13, 23, 51, 77, 120, 202, 341, 82, 5, 4, 9, 260, 2, 137, 141, 128, 115, 351, 901, 8, 180, 10, 197, 21, 450, 33}, - {105, 131, 272, 578, 9, 49, 371, 219, 159, 616, 286, 320, 224, 187, 716, 98, 28, 22, 0, 623, 127, 258, 910, 737, 385, 31, 239, 347, 254, 109, 424, 95}, - {457, 51, 13, 23, 961, 12, 719, 99, 453, 15, 4, 515, 165, 401, 629, 3, 700, 11, 17, 14, 2, 37, 753, 41, 57, 569, 38, 45, 0, 33, 5, 32}, - {202, 120, 5, 33, 318, 77, 450, 102, 1, 260, 403, 128, 494, 21, 165, 13, 269, 12, 326, 23, 342, 523, 402, 2, 817, 64, 15, 141, 125, 82, 457, 475}, - {141, 269, 352, 217, 180, 64, 349, 137, 202, 160, 317, 15, 372, 515, 700, 752, 318, 753, 244, 13, 437, 291, 165, 864, 22, 237, 5, 82, 954, 21, 77, 418}, - {70, 29, 2, 145, 74, 112, 26, 6, 75, 52, 19, 66, 632, 1, 87, 220, 5, 135, 163, 287, 307, 25, 226, 7, 58, 396, 294, 278, 113, 409, 69, 151}, - {82, 351, 317, 15, 752, 180, 898, 352, 141, 901, 515, 341, 10, 700, 365, 1, 753, 498, 0, 217, 253, 115, 55, 854, 33, 5, 143, 32, 21, 160, 36, 197}, - {39, 9, 310, 254, 0, 30, 101, 49, 252, 272, 100, 265, 105, 455, 159, 557, 190, 333, 286, 688, 18, 166, 1, 158, 709, 16, 625, 627, 31, 131, 327, 329}, - {2, 58, 29, 5, 1, 151, 186, 52, 70, 45, 7, 549, 14, 75, 112, 400, 113, 155, 61, 46, 227, 163, 311, 315, 66, 6, 307, 27, 17, 220, 287, 74}, - {141, 217, 13, 21, 352, 23, 269, 77, 180, 115, 317, 64, 202, 15, 349, 137, 5, 51, 165, 291, 318, 752, 372, 4, 0, 102, 33, 365, 197, 32, 341, 125}, - {68, 35, 0, 9, 65, 101, 149, 124, 24, 154, 175, 16, 28, 7, 67, 1, 18, 189, 114, 398, 55, 14, 345, 39, 118, 133, 69, 2, 230, 429, 71, 283}, - {66, 7, 29, 2, 112, 52, 20, 43, 97, 151, 74, 192, 135, 5, 173, 525, 337, 45, 145, 58, 415, 25, 14, 32, 644, 70, 544, 226, 222, 21, 6, 580}, - {31, 125, 44, 22, 116, 299, 242, 55, 1, 170, 64, 36, 479, 870, 456, 685, 10, 599, 558, 0, 268, 506, 28, 740, 23, 903, 492, 164, 393, 206, 2, 86}, - {188, 11, 79, 12, 99, 377, 94, 33, 542, 339, 40, 474, 111, 37, 4, 51, 102, 453, 139, 775, 13, 475, 23, 961, 277, 471, 134, 57, 431, 266, 115, 117}, - {658, 698, 340, 98, 296, 303, 1, 31, 850, 363, 156, 919, 44, 774, 586, 385, 120, 77, 82, 10, 223, 30, 354, 291, 23, 914, 478, 87, 260, 163, 48, 13}, - {15, 515, 700, 753, 82, 4, 1, 13, 901, 33, 197, 11, 5, 10, 23, 165, 2, 0, 180, 3, 21, 77, 51, 120, 365, 115, 217, 40, 117, 102, 32, 401}, - {15, 515, 700, 753, 4, 11, 5, 13, 1, 141, 3, 180, 23, 202, 21, 2, 269, 64, 165, 33, 40, 32, 0, 318, 120, 128, 12, 197, 117, 352, 51, 17}, - {91, 6, 233, 85, 370, 718, 81, 65, 25, 256, 63, 343, 42, 74, 235, 123, 138, 511, 397, 249, 26, 194, 650, 355, 64, 87, 544, 18, 90, 643, 66, 214}, - {23, 13, 202, 51, 21, 120, 1, 5, 141, 128, 450, 64, 318, 403, 15, 137, 260, 33, 12, 48, 32, 31, 125, 494, 269, 102, 165, 515, 77, 2, 197, 14}, - {180, 317, 365, 341, 752, 217, 115, 352, 901, 482, 372, 498, 1, 141, 15, 253, 515, 244, 2, 700, 0, 21, 13, 82, 23, 4, 579, 351, 753, 291, 269, 77}, - {13, 115, 197, 341, 9, 352, 468, 237, 64, 498, 23, 165, 22, 509, 901, 546, 482, 180, 28, 569, 317, 51, 365, 873, 391, 95, 86, 217, 49, 837, 752, 706}, - {13, 23, 51, 1, 141, 5, 165, 202, 21, 120, 64, 125, 180, 15, 2, 33, 197, 115, 128, 32, 260, 269, 12, 82, 4, 515, 137, 7, 318, 93, 0, 700}, - {214, 289, 90, 174, 874, 6, 138, 280, 65, 81, 64, 85, 355, 751, 194, 233, 312, 348, 835, 91, 0, 32, 343, 636, 249, 29, 875, 288, 519, 104, 247, 74}, - {15, 515, 700, 753, 4, 5, 11, 13, 1, 33, 23, 21, 2, 3, 102, 32, 141, 77, 180, 117, 31, 64, 0, 40, 134, 196, 120, 352, 12, 44, 197, 6}, - {33, 15, 13, 515, 117, 23, 700, 217, 134, 753, 0, 51, 153, 77, 141, 2, 4, 64, 196, 1, 3, 180, 10, 115, 5, 102, 6, 11, 22, 202, 165, 7}, - {15, 515, 700, 753, 33, 4, 77, 102, 1, 40, 13, 117, 11, 115, 134, 5, 21, 153, 23, 217, 3, 32, 2, 317, 120, 196, 180, 141, 51, 12, 59, 260}, - {15, 515, 700, 753, 13, 0, 1, 23, 2, 217, 51, 3, 4, 5, 8, 317, 115, 9, 341, 10, 202, 180, 6, 365, 7, 82, 457, 22, 120, 901, 33, 291}, - {7, 2, 135, 20, 97, 14, 66, 52, 337, 673, 192, 29, 43, 355, 353, 5, 16, 294, 107, 376, 147, 226, 331, 560, 64, 470, 222, 104, 415, 32, 4, 324}, - {195, 132, 142, 167, 146, 77, 363, 271, 121, 354, 202, 120, 647, 178, 786, 212, 687, 0, 101, 878, 16, 522, 60, 5, 450, 411, 35, 55, 98, 639, 259, 318}, - {202, 77, 20, 0, 318, 66, 104, 128, 102, 269, 177, 43, 33, 7, 216, 291, 494, 5, 2, 342, 74, 173, 97, 112, 450, 22, 337, 10, 234, 52, 64, 678}, - {107, 362, 612, 356, 359, 97, 414, 43, 259, 20, 392, 7, 298, 147, 819, 683, 465, 173, 729, 660, 319, 14, 5, 779, 581, 595, 246, 35, 501, 92, 0, 230}, - {6, 165, 14, 453, 13, 51, 19, 23, 386, 457, 74, 391, 308, 2, 26, 401, 47, 758, 603, 108, 719, 366, 1, 29, 309, 730, 324, 197, 133, 70, 115, 867}, - {179, 72, 205, 180, 247, 245, 4, 490, 352, 59, 317, 152, 79, 498, 94, 217, 148, 76, 752, 864, 11, 216, 141, 405, 89, 452, 197, 111, 497, 188, 37, 21}, - {107, 7, 298, 314, 14, 359, 32, 392, 232, 279, 172, 97, 60, 581, 387, 126, 121, 0, 534, 493, 356, 92, 441, 95, 13, 21, 35, 147, 22, 5, 16, 362}, - {156, 271, 354, 586, 360, 132, 591, 195, 121, 18, 340, 1, 5, 13, 21, 48, 668, 446, 23, 463, 296, 658, 60, 55, 407, 698, 146, 70, 626, 51, 163, 24}, - {13, 23, 51, 4, 0, 12, 457, 15, 11, 453, 2, 515, 5, 1, 99, 10, 115, 165, 700, 475, 401, 403, 3, 961, 40, 14, 37, 753, 719, 32, 64, 569}, - {48, 125, 21, 165, 13, 221, 23, 763, 423, 508, 197, 5, 98, 92, 193, 16, 441, 386, 64, 314, 293, 457, 391, 140, 49, 60, 102, 693, 683, 51, 35, 867}, - {202, 77, 120, 450, 5, 318, 1, 494, 0, 195, 18, 132, 523, 403, 326, 604, 354, 260, 121, 576, 203, 167, 234, 817, 682, 49, 35, 615, 21, 20, 13, 102}, - {39, 9, 166, 30, 0, 101, 158, 68, 404, 190, 333, 274, 252, 310, 88, 100, 49, 28, 344, 35, 21, 22, 419, 131, 438, 1, 16, 65, 530, 694, 124, 10}, - {15, 515, 700, 753, 110, 4, 1, 11, 165, 180, 93, 13, 82, 5, 2, 197, 33, 120, 0, 3, 10, 23, 21, 115, 901, 217, 341, 77, 317, 51, 32, 117}, - {2, 29, 1, 14, 6, 52, 5, 46, 50, 26, 70, 19, 103, 58, 38, 67, 96, 262, 516, 309, 218, 133, 108, 27, 75, 17, 112, 114, 24, 487, 331, 83}, - {120, 77, 15, 13, 1, 141, 260, 23, 515, 217, 110, 51, 137, 700, 317, 202, 165, 291, 180, 21, 753, 128, 0, 177, 326, 93, 450, 82, 64, 269, 197, 5}, - {255, 59, 554, 297, 183, 56, 33, 444, 108, 358, 123, 196, 269, 122, 77, 153, 57, 177, 117, 730, 19, 467, 605, 130, 128, 50, 275, 4, 291, 475, 134, 133}, - {13, 23, 51, 12, 153, 14, 117, 120, 165, 134, 99, 401, 38, 453, 15, 128, 197, 719, 64, 515, 475, 403, 37, 33, 196, 700, 40, 125, 5, 0, 54, 2}, - {64, 33, 174, 348, 95, 108, 467, 554, 56, 0, 25, 306, 233, 6, 63, 511, 343, 120, 13, 85, 29, 561, 543, 707, 319, 180, 899, 355, 77, 49, 256, 18}, - {120, 260, 51, 23, 77, 15, 202, 1, 93, 82, 141, 450, 13, 326, 515, 137, 21, 5, 64, 33, 110, 700, 128, 165, 318, 203, 269, 102, 351, 753, 197, 125}, - {15, 515, 700, 753, 4, 13, 11, 1, 5, 21, 23, 2, 33, 64, 3, 180, 32, 141, 22, 102, 77, 0, 10, 93, 82, 352, 117, 40, 341, 31, 165, 6}, - {15, 515, 700, 753, 341, 13, 23, 141, 33, 1, 0, 217, 4, 77, 180, 10, 82, 351, 51, 137, 5, 64, 9, 317, 21, 11, 102, 40, 260, 202, 854, 115}, - {105, 272, 131, 22, 327, 286, 28, 239, 320, 9, 109, 578, 219, 49, 98, 224, 95, 159, 538, 371, 616, 127, 187, 64, 713, 55, 0, 170, 168, 258, 716, 623}, - {16, 18, 68, 35, 24, 60, 71, 118, 92, 126, 0, 9, 101, 191, 7, 55, 154, 175, 212, 14, 167, 150, 302, 28, 375, 1, 107, 124, 346, 273, 21, 108}, - {20, 147, 43, 470, 376, 142, 904, 178, 427, 798, 0, 595, 198, 325, 858, 319, 61, 202, 173, 97, 5, 422, 14, 22, 107, 259, 32, 49, 887, 77, 414, 392}, - {13, 23, 51, 12, 33, 15, 99, 64, 128, 515, 453, 202, 117, 153, 37, 102, 700, 40, 134, 196, 120, 0, 2, 753, 141, 14, 38, 3, 82, 403, 77, 21}, - {383, 17, 62, 136, 84, 119, 56, 440, 3, 504, 240, 80, 378, 129, 123, 548, 106, 128, 4, 11, 14, 555, 162, 32, 184, 361, 59, 64, 205, 5, 469, 57}, - {70, 1, 48, 652, 5, 638, 846, 888, 21, 349, 269, 260, 340, 562, 767, 761, 163, 883, 774, 141, 125, 518, 591, 0, 23, 9, 87, 13, 371, 303, 622, 31}, - {66, 135, 6, 97, 74, 278, 69, 7, 14, 324, 267, 172, 2, 140, 462, 1, 357, 38, 808, 550, 92, 841, 189, 29, 16, 25, 298, 87, 75, 204, 24, 335}, - {51, 23, 33, 13, 102, 40, 12, 128, 64, 77, 10, 202, 0, 196, 117, 4, 14, 99, 134, 453, 65, 153, 11, 475, 139, 403, 22, 141, 86, 2, 21, 15}, - {88, 100, 264, 166, 274, 435, 772, 1, 382, 921, 96, 478, 30, 438, 639, 909, 897, 521, 190, 466, 960, 410, 9, 144, 530, 418, 31, 329, 265, 691, 778, 93}, - {62, 440, 136, 56, 84, 3, 504, 548, 555, 383, 4, 17, 129, 128, 507, 361, 123, 59, 119, 162, 14, 57, 152, 328, 161, 11, 202, 495, 184, 27, 80, 215}, - {911, 617, 332, 959, 206, 141, 253, 244, 282, 384, 110, 120, 10, 260, 352, 143, - 951, 811, 269, 373, 160, 417, 93, 531, 728, 203, 434, 940, 137, 55, 36, 717}, - {120, 15, 260, 141, 77, 1, 515, 82, 700, 351, 33, 23, 450, 13, 110, 326, 64, 217, 269, 753, 203, 137, 102, 5, 165, 21, 51, 291, 93, 177, 373, 128}, - {15, 515, 700, 753, 0, 1, 2, 23, 13, 51, 5, 9, 82, 901, 180, 8, 3, 4, 120, 6, 7, 141, 93, 12, 197, 341, 10, 33, 115, 730, 64, 125}, - {7, 104, 97, 107, 356, 232, 66, 560, 298, 289, 14, 707, 38, 568, 359, 64, 20, 0, 65, 324, 22, 214, 92, 32, 192, 5, 387, 43, 712, 90, 172, 95}, - {6, 1, 2, 66, 67, 14, 74, 24, 108, 29, 69, 83, 458, 7, 25, 38, 135, 103, 36, 150, 451, 114, 52, 594, 75, 65, 380, 18, 267, 602, 19, 278}, - {13, 23, 51, 12, 115, 21, 202, 5, 457, 15, 4, 1, 64, 719, 0, 403, 2, 3, 453, 165, 99, 141, 401, 128, 32, 515, 10, 37, 523, 197, 120, 700}, - {57, 59, 4, 11, 412, 381, 77, 53, 421, 291, 250, 368, 99, 14, 27, 369, 803, 283, 23, 108, 403, 19, 339, 210, 0, 401, 12, 444, 236, 40, 361, 736}, - {15, 515, 700, 1, 0, 753, 2, 13, 23, 5, 51, 180, 3, 115, 6, 7, 457, 4, 9, 8, 12, 82, 197, 165, 141, 901, 120, 719, 33, 64, 21, 22}, - {64, 95, 180, 247, 929, 146, 90, 126, 197, 32, 237, 60, 288, 165, 316, 92, 5, 13, 77, 7, 217, 955, 522, 22, 16, 314, 132, 4, 317, 10, 312, 86}, - {15, 1, 120, 13, 23, 515, 0, 51, 700, 180, 141, 2, 5, 202, 21, 260, 753, 165, 137, 33, 77, 110, 197, 128, 326, 7, 450, 4, 102, 9, 269, 12}, - {14, 2, 16, 46, 1, 7, 24, 69, 75, 35, 38, 50, 29, 220, 52, 140, 267, 67, 18, 54, 70, 309, 5, 60, 92, 189, 171, 87, 71, 163, 58, 0}, - {31, 98, 127, 44, 9, 299, 0, 276, 293, 284, 116, 49, 935, 599, 105, 22, 456, 201, 28, 1, 39, 125, 242, 137, 371, 144, 131, 492, 159, 272, 51, 395}, - {6, 27, 151, 53, 573, 445, 297, 113, 26, 73, 436, 19, 491, 250, 396, 315, 45, 112, 145, 58, 614, 881, 25, 34, 611, 200, 17, 80, 70, 5, 138, 631}, - {32, 693, 81, 788, 90, 804, 403, 56, 494, 21, 84, 397, 202, 65, 18, 77, 64, 681, 214, 725, 523, 784, 526, 33, 102, 825, 240, 0, 115, 241, 817, 91}, - {24, 7, 14, 2, 18, 16, 65, 0, 108, 149, 28, 69, 1, 71, 154, 36, 124, 35, 67, 140, 189, 429, 92, 68, 66, 22, 55, 118, 302, 150, 9, 6}, - {0, 68, 9, 35, 65, 101, 189, 212, 114, 67, 124, 69, 1, 154, 149, 39, 230, 64, 252, 16, 88, 702, 103, 100, 18, 336, 28, 329, 520, 83, 30, 755}, - {5, 2, 186, 29, 61, 45, 17, 1, 52, 48, 58, 171, 155, 227, 80, 209, 311, 21, 14, 46, 50, 106, 243, 513, 334, 502, 496, 38, 3, 6, 32, 592}, - {15, 515, 700, 753, 13, 1, 2, 0, 3, 4, 5, 23, 341, 11, 10, 33, 6, 51, 165, 117, 153, 7, 180, 12, 365, 901, 77, 569, 197, 115, 64, 9}, - {13, 15, 23, 515, 0, 51, 1, 700, 4, 2, 753, 10, 3, 5, 12, 77, 33, 961, 165, 457, 197, 11, 115, 9, 22, 102, 40, 403, 202, 21, 14, 59}, - {15, 515, 700, 753, 13, 0, 1, 23, 2, 33, 102, 5, 4, 10, 9, 3, 51, 115, 77, 7, 6, 341, 12, 11, 217, 40, 457, 196, 180, 165, 8, 523}, - {166, 39, 30, 274, 190, 100, 333, 438, 530, 310, 88, 252, 0, 9, 539, 265, 1, 656, 404, 101, 625, 131, 778, 254, 31, 455, 676, 329, 724, 158, 21, 23}, - {734, 148, 94, 308, 431, 115, 37, 89, 111, 413, 79, 468, 197, 629, 341, 474, 569, 12, 13, 873, 179, 401, 11, 4, 180, 23, 205, 72, 59, 365, 134, 51}, - {539, 228, 224, 219, 816, 190, 30, 258, 871, 840, 669, 93, 406, 530, 957, 187, 160, 531, 748, 137, 131, 88, 863, 36, 728, 839, 44, 213, 352, 116, 202, 466}, - {393, 791, 125, 801, 730, 551, 386, 23, 31, 175, 93, 98, 51, 13, 144, 788, 126, 203, 21, 345, 116, 22, 949, 110, 575, 165, 326, 44, 0, 4, 60, 221}, - {13, 23, 77, 141, 0, 4, 51, 2, 33, 115, 64, 1, 10, 3, 6, 15, 11, 102, 7, 217, 180, 40, 515, 22, 128, 177, 202, 9, 700, 269, 165, 5}, - {2, 29, 7, 70, 52, 14, 1, 58, 112, 46, 75, 5, 171, 163, 87, 220, 307, 151, 186, 334, 38, 66, 155, 16, 69, 135, 278, 45, 262, 97, 6, 21}, - {88, 321, 213, 100, 230, 435, 689, 466, 1, 382, 30, 352, 217, 699, 410, 96, 795, 36, 921, 752, 190, 141, 144, 180, 44, 831, 317, 83, 443, 31, 840, 251}, - {363, 411, 101, 520, 354, 9, 195, 668, 132, 156, 447, 1, 905, 364, 18, 23, 765, 664, 146, 5, 360, 13, 121, 96, 98, 31, 252, 39, 100, 759, 264, 551}, - {13, 23, 51, 730, 12, 719, 453, 457, 401, 475, 5, 21, 403, 2, 0, 1, 15, 4, 3, 899, 99, 32, 165, 11, 515, 308, 197, 115, 6, 961, 700, 523}, - {72, 76, 89, 12, 37, 4, 308, 179, 38, 528, 90, 431, 54, 205, 148, 184, 401, 57, 152, 474, 23, 59, 51, 245, 428, 11, 32, 99, 405, 316, 257, 21}, - {376, 20, 43, 147, 470, 173, 97, 595, 107, 319, 414, 142, 819, 5, 729, 178, 858, 7, 427, 32, 426, 104, 14, 0, 392, 362, 259, 61, 230, 77, 560, 246}, - {202, 141, 269, 494, 318, 137, 51, 128, 403, 4, 217, 96, 77, 5, 64, 177, 291, 180, 15, 352, 102, 10, 33, 349, 2, 317, 0, 341, 120, 515, 21, 453}, - {77, 202, 33, 128, 102, 318, 494, 269, 13, 0, 117, 23, 342, 291, 403, 15, 134, 51, 153, 141, 177, 515, 82, 137, 196, 700, 203, 64, 22, 351, 753, 4}, - {253, 110, 951, 352, 499, 811, 10, 854, 180, 638, 244, 559, 642, 752, 564, 8, 141, 143, 417, 341, 901, 260, 206, 197, 922, 661, 93, 15, 498, 373, 165, 911}, - {141, 13, 23, 180, 4, 217, 5, 1, 269, 317, 21, 0, 2, 202, 115, 51, 352, 77, 3, 197, 64, 341, 318, 15, 291, 9, 137, 93, 32, 165, 515, 33}, - {9, 0, 18, 252, 16, 101, 68, 39, 24, 118, 35, 109, 158, 329, 28, 167, 60, 364, 333, 265, 49, 100, 22, 419, 553, 55, 1, 677, 71, 7, 212, 159}, - {28, 109, 9, 39, 0, 158, 49, 22, 168, 35, 55, 175, 1, 65, 67, 185, 194, 159, 289, 95, 272, 114, 30, 105, 86, 584, 36, 169, 254, 2, 83, 24}, - {15, 515, 13, 700, 1, 753, 2, 23, 0, 3, 4, 5, 33, 341, 11, 51, 6, 10, 197, 115, 901, 180, 77, 40, 102, 12, 365, 165, 141, 217, 7, 317}, - {173, 693, 104, 422, 5, 18, 61, 32, 102, 0, 20, 13, 784, 560, 33, 66, 397, 526, 49, 207, 29, 25, 510, 707, 65, 6, 11, 344, 21, 263, 81, 77}, - {23, 13, 386, 51, 308, 801, 719, 221, 401, 949, 21, 730, 165, 421, 102, 115, 125, 33, 341, 670, 468, 117, 770, 1, 120, 6, 197, 14, 403, 97, 67, 958}, - {0, 49, 105, 16, 28, 24, 159, 9, 158, 320, 1, 68, 35, 239, 170, 18, 109, 7, 55, 65, 2, 95, 301, 124, 347, 14, 21, 154, 22, 127, 286, 31}, - {2, 5, 1, 207, 45, 29, 32, 58, 76, 61, 6, 263, 292, 655, 72, 14, 17, 476, 7, 119, 52, 306, 70, 64, 21, 90, 186, 214, 106, 38, 3, 790}, - {21, 6, 125, 49, 13, 64, 715, 66, 115, 95, 197, 33, 22, 32, 204, 165, 56, 278, 0, 408, 241, 120, 4, 808, 681, 350, 263, 85, 81, 571, 135, 509}, - {612, 427, 325, 107, 202, 5, 376, 49, 64, 392, 403, 470, 21, 147, 31, 788, 494, 14, 362, 465, 858, 98, 20, 804, 518, 43, 845, 318, 125, 97, 725, 534}, - {32, 21, 76, 72, 2, 1, 14, 5, 241, 449, 89, 38, 350, 221, 155, 48, 50, 292, 37, 46, 45, 90, 270, 54, 17, 179, 214, 12, 148, 430, 476, 413}, - {24, 0, 28, 16, 7, 124, 35, 154, 14, 149, 65, 18, 9, 68, 55, 108, 175, 71, 2, 1, 22, 109, 92, 67, 484, 336, 118, 69, 302, 398, 570, 420}, - {1, 5, 14, 2, 48, 50, 38, 67, 46, 21, 0, 54, 45, 270, 281, 12, 24, 32, 155, 96, 513, 103, 290, 83, 61, 58, 36, 17, 37, 72, 69, 181}, - {13, 961, 569, 197, 37, 15, 23, 474, 515, 94, 148, 111, 12, 165, 629, 341, 700, 79, 901, 401, 51, 405, 753, 10, 134, 4, 115, 734, 873, 11, 89, 117}, - {33, 23, 102, 51, 13, 40, 77, 128, 64, 202, 141, 15, 4, 12, 0, 1, 2, 117, 22, 11, 10, 403, 153, 515, 99, 318, 137, 269, 139, 196, 700, 134}, - {0, 1, 24, 67, 9, 16, 18, 35, 28, 69, 103, 50, 5, 2, 65, 12, 83, 68, 7, 96, 14, 22, 21, 149, 75, 114, 13, 133, 23, 71, 218, 54}, - {384, 617, 940, 332, 855, 911, 206, 959, 434, 282, 141, 10, 93, 253, 244, 110, 144, 268, 120, 36, 352, 137, 417, 203, 116, 31, 44, 269, 160, 201, 143, 951}, - {30, 93, 473, 137, 31, 704, 450, 652, 190, 203, 800, 254, 166, 274, 326, 144, 269, 160, 127, 303, 120, 625, 88, 848, 110, 435, 77, 521, 349, 131, 340, 744}, - {53, 27, 73, 26, 19, 250, 297, 200, 25, 630, 17, 6, 611, 122, 34, 42, 714, 235, 472, 65, 436, 14, 80, 684, 690, 106, 45, 113, 680, 108, 64, 4}, - {15, 515, 1, 2, 700, 0, 753, 3, 5, 141, 180, 4, 13, 77, 33, 10, 217, 6, 7, 134, 11, 352, 197, 64, 165, 341, 317, 23, 12, 115, 102, 40}, - {254, 530, 39, 613, 688, 221, 30, 31, 438, 190, 228, 960, 1, 44, 141, 21, 180, 406, 23, 166, 9, 202, 13, 96, 137, 48, 131, 829, 317, 269, 393, 51}, - {9, 39, 28, 35, 30, 166, 158, 36, 0, 175, 101, 346, 364, 67, 49, 68, 168, 420, 88, 1, 194, 131, 100, 352, 55, 83, 190, 64, 137, 570, 86, 65}, - {62, 56, 3, 548, 555, 507, 440, 161, 34, 4, 215, 136, 162, 514, 361, 527, 17, 14, 211, 130, 328, 11, 383, 123, 84, 183, 38, 57, 184, 152, 205, 494}, - {92, 126, 107, 7, 356, 493, 97, 279, 359, 298, 16, 246, 35, 60, 14, 441, 362, 121, 43, 423, 5, 132, 392, 20, 508, 230, 199, 146, 232, 173, 150, 414}, - {15, 82, 141, 515, 291, 922, 349, 700, 217, 260, 372, 120, 351, 93, 77, 753, 318, 352, 373, 854, 1, 326, 269, 21, 13, 102, 144, 202, 64, 23, 203, 137}, - {141, 217, 352, 115, 180, 13, 269, 317, 752, 77, 23, 21, 341, 197, 5, 372, 244, 291, 9, 64, 51, 102, 4, 1, 365, 2, 165, 33, 3, 48, 237, 351}, - {78, 47, 390, 19, 130, 453, 108, 27, 711, 813, 730, 444, 412, 283, 196, 690, 123, 14, 128, 26, 250, 389, 650, 236, 200, 65, 51, 4, 34, 183, 297, 73}, - {34, 250, 297, 80, 472, 64, 495, 17, 311, 3, 148, 45, 667, 61, 176, 53, 243, 27, 90, 161, 469, 141, 483, 151, 62, 128, 29, 4, 58, 56, 5, 231}, - {51, 23, 33, 13, 551, 77, 102, 326, 421, 21, 523, 120, 5, 899, 453, 692, 202, 153, 308, 615, 115, 958, 450, 401, 791, 68, 221, 93, 475, 18, 403, 4}, - {98, 223, 393, 363, 411, 1, 478, 834, 664, 156, 284, 691, 447, 791, 914, 293, 354, 724, 697, 9, 807, 541, 759, 51, 18, 421, 48, 264, 948, 586, 195, 848}, - {7, 14, 107, 232, 16, 92, 2, 60, 46, 5, 359, 121, 24, 526, 220, 620, 135, 1, 172, 21, 126, 314, 132, 77, 18, 75, 32, 278, 12, 23, 52, 38}, - {32, 76, 2, 1, 21, 72, 241, 14, 5, 48, 292, 89, 476, 45, 720, 270, 179, 90, 17, 214, 148, 38, 50, 29, 129, 155, 350, 46, 290, 227, 123, 464}, - {15, 515, 700, 753, 13, 23, 33, 77, 51, 4, 102, 0, 32, 202, 1, 11, 128, 82, 117, 141, 40, 5, 110, 8, 3, 90, 137, 21, 10, 318, 403, 165}, - {66, 6, 69, 2, 1, 74, 14, 135, 278, 267, 380, 24, 29, 97, 67, 38, 103, 75, 7, 388, 324, 25, 52, 150, 87, 83, 189, 357, 335, 108, 204, 172}, - {152, 4, 339, 59, 79, 471, 188, 11, 77, 94, 128, 33, 529, 377, 12, 111, 102, 202, 452, 402, 216, 99, 13, 542, 51, 40, 474, 37, 64, 291, 23, 961}, - {15, 515, 700, 753, 1, 0, 196, 13, 33, 2, 77, 5, 23, 102, 3, 10, 9, 7, 217, 4, 6, 153, 117, 177, 14, 457, 115, 12, 40, 730, 11, 134}, - {17, 209, 45, 106, 207, 5, 255, 119, 62, 2, 61, 3, 263, 742, 306, 655, 425, 378, 32, 56, 29, 136, 84, 80, 311, 58, 186, 240, 243, 383, 14, 21}, - {120, 260, 450, 15, 1, 23, 817, 13, 515, 523, 326, 5, 700, 51, 82, 31, 202, 64, 21, 753, 318, 93, 32, 269, 98, 33, 351, 77, 102, 125, 457, 165}, - {116, 492, 268, 93, 23, 206, 203, 0, 551, 918, 13, 51, 8, 22, 417, 940, 120, 10, 499, 31, 949, 791, 125, 523, 165, 473, 341, 730, 421, 959, 401, 391}, - {15, 515, 700, 753, 165, 13, 0, 1, 197, 23, 4, 82, 120, 2, 180, 12, 260, 719, 8, 3, 386, 117, 5, 523, 901, 11, 341, 51, 10, 9, 141, 351}, - {14, 24, 69, 7, 2, 66, 108, 1, 67, 6, 36, 398, 18, 267, 150, 97, 29, 38, 83, 149, 65, 74, 28, 0, 189, 71, 388, 16, 273, 124, 46, 22}, - {330, 96, 523, 335, 367, 662, 141, 839, 1, 922, 372, 615, 244, 717, 269, 443, 418, 352, 403, 692, 217, 854, 752, 180, 36, 64, 498, 576, 349, 201, 98, 284}, - {184, 90, 257, 205, 245, 229, 57, 152, 769, 17, 524, 5, 32, 497, 45, 432, 619, 2, 452, 266, 4, 106, 1, 21, 179, 59, 76, 3, 460, 292, 381, 128}, - {7, 14, 16, 2, 46, 5, 70, 107, 87, 13, 58, 307, 92, 32, 38, 23, 202, 0, 172, 24, 18, 21, 60, 128, 77, 35, 20, 10, 9, 4, 171, 112}, - {7, 66, 140, 16, 14, 92, 97, 69, 267, 172, 189, 24, 380, 2, 35, 60, 298, 451, 230, 135, 314, 74, 150, 71, 38, 357, 6, 330, 67, 423, 21, 443}, - {121, 167, 354, 132, 18, 446, 147, 101, 212, 146, 407, 16, 55, 35, 647, 191, 20, 271, 199, 68, 60, 259, 463, 107, 9, 126, 363, 7, 195, 43, 14, 411}, - {76, 90, 179, 32, 205, 21, 184, 460, 257, 288, 45, 245, 316, 5, 57, 152, 241, 2, 358, 1, 229, 72, 524, 148, 48, 769, 17, 4, 12, 38, 14, 720}, - {147, 259, 178, 878, 427, 465, 581, 198, 786, 798, 142, 534, 325, 929, 20, 362, 35, 132, 107, 376, 43, 5, 279, 77, 49, 146, 70, 202, 590, 771, 33, 14}, - {473, 93, 450, 778, 141, 30, 855, 466, 144, 203, 330, 530, 88, 523, 459, 372, 201, 617, 839, 704, 254, 321, 934, 326, 39, 36, 82, 717, 332, 213, 559, 403}, - {523, 475, 51, 899, 730, 453, 23, 719, 403, 33, 457, 13, 421, 386, 4, 120, 117, 196, 102, 153, 15, 801, 450, 817, 515, 260, 202, 11, 700, 99, 165, 125}, - {15, 1, 13, 515, 0, 2, 700, 5, 23, 753, 4, 3, 341, 317, 10, 115, 180, 11, 33, 64, 217, 77, 117, 165, 197, 7, 6, 365, 9, 141, 102, 134}, - {19, 4, 119, 40, 33, 202, 27, 84, 102, 56, 77, 73, 504, 485, 26, 494, 757, 63, 862, 59, 23, 300, 25, 12, 128, 11, 5, 13, 342, 880, 469, 6}, - {32, 20, 2, 13, 5, 21, 23, 6, 12, 38, 43, 29, 64, 7, 95, 51, 61, 207, 48, 147, 90, 178, 17, 182, 49, 0, 115, 202, 52, 362, 37, 22}, - {339, 188, 11, 79, 4, 94, 377, 12, 99, 111, 542, 102, 37, 33, 474, 51, 471, 40, 453, 152, 77, 13, 59, 403, 342, 23, 117, 57, 475, 134, 128, 38}, - {34, 128, 283, 176, 495, 231, 318, 432, 503, 275, 529, 527, 161, 53, 3, 202, 56, 291, 585, 469, 73, 17, 14, 412, 57, 27, 80, 245, 250, 381, 402, 51}, - {15, 515, 13, 700, 1, 217, 141, 120, 23, 180, 753, 115, 365, 51, 317, 341, 77, 260, 0, 291, 110, 137, 202, 5, 21, 269, 64, 36, 349, 2, 4, 10}, - {13, 15, 961, 515, 700, 753, 4, 12, 2, 457, 3, 11, 197, 51, 37, 569, 115, 23, 5, 0, 99, 10, 1, 134, 6, 111, 165, 33, 72, 40, 38, 79}, - {15, 515, 700, 753, 13, 1, 0, 2, 23, 33, 5, 3, 10, 4, 9, 115, 7, 102, 6, 51, 12, 217, 77, 11, 40, 457, 569, 341, 117, 317, 14, 719}, - {5, 76, 2, 32, 292, 214, 45, 1, 129, 519, 123, 179, 90, 710, 17, 29, 460, 72, 14, 207, 21, 249, 58, 205, 464, 263, 618, 48, 6, 245, 3, 257}, - {72, 76, 32, 4, 21, 12, 38, 23, 99, 54, 89, 3, 14, 17, 51, 57, 11, 90, 13, 488, 179, 2, 59, 148, 45, 37, 5, 115, 401, 1, 10, 421}, - {98, 223, 393, 1, 834, 264, 284, 791, 724, 293, 478, 772, 697, 909, 363, 682, 905, 447, 541, 821, 411, 51, 421, 9, 807, 48, 765, 31, 730, 96, 386, 410}, - {341, 13, 509, 8, 23, 638, 165, 901, 762, 10, 569, 242, 391, 197, 873, 642, 506, 499, 629, 961, 15, 180, 116, 456, 206, 546, 417, 1, 338, 457, 515, 867}, - {1, 2, 5, 50, 14, 38, 46, 114, 0, 36, 29, 22, 218, 65, 86, 96, 137, 21, 133, 285, 12, 10, 323, 181, 17, 58, 51, 23, 67, 7, 28, 6}, - {481, 878, 202, 13, 5, 23, 182, 32, 269, 21, 1, 318, 77, 142, 557, 494, 141, 33, 640, 137, 70, 291, 2, 51, 260, 415, 929, 403, 120, 58, 4, 259}, - {15, 515, 700, 753, 1, 4, 13, 0, 2, 5, 341, 3, 11, 180, 134, 12, 10, 317, 197, 365, 33, 21, 23, 165, 117, 6, 77, 7, 217, 37, 32, 498}, - {25, 119, 19, 6, 26, 42, 27, 17, 4, 790, 45, 814, 2, 469, 483, 84, 122, 1, 0, 33, 32, 128, 76, 80, 611, 113, 73, 56, 5, 240, 202, 77}, - {14, 2, 7, 1, 24, 0, 65, 6, 16, 69, 67, 22, 124, 28, 108, 5, 18, 36, 86, 10, 38, 46, 66, 398, 289, 168, 12, 83, 21, 23, 610, 13}, - {51, 23, 128, 13, 15, 202, 12, 120, 33, 64, 141, 82, 10, 515, 0, 403, 700, 3, 1, 99, 117, 269, 153, 165, 753, 5, 318, 197, 102, 260, 2, 137}, - {16, 35, 24, 0, 9, 18, 7, 1, 68, 69, 50, 71, 103, 65, 67, 189, 133, 23, 28, 13, 60, 537, 149, 335, 75, 21, 64, 5, 114, 2, 12, 14}, - {754, 803, 133, 576, 880, 543, 2, 1, 657, 50, 14, 38, 46, 5, 29, 67, 218, 36, 58, 171, 52, 96, 24, 103, 775, 0, 114, 83, 181, 54, 65, 45}, - {21, 32, 5, 3, 2, 17, 14, 72, 76, 1, 12, 23, 38, 51, 4, 54, 10, 0, 89, 13, 99, 137, 45, 36, 421, 115, 543, 11, 22, 128, 221, 48}, - {434, 384, 268, 144, 855, 940, 617, 206, 332, 116, 93, 911, 959, 282, 203, 137, 141, 489, 44, 120, 10, 110, 244, 36, 98, 31, 269, 253, 367, 417, 160, 9}, - {15, 2, 1, 0, 13, 515, 5, 700, 3, 23, 180, 217, 141, 10, 753, 4, 117, 6, 77, 33, 64, 7, 11, 197, 352, 317, 341, 134, 165, 115, 12, 9}, - {2, 113, 6, 25, 1, 0, 29, 4, 7, 833, 5, 45, 32, 61, 128, 19, 77, 151, 74, 145, 64, 42, 14, 210, 655, 106, 59, 177, 27, 17, 21, 738}, - {116, 268, 918, 203, 551, 31, 8, 692, 206, 791, 403, 499, 417, 93, 940, 421, 0, 23, 22, 120, 13, 523, 44, 51, 299, 473, 959, 1, 10, 475, 202, 125}, - {107, 126, 132, 612, 362, 279, 20, 146, 259, 493, 199, 121, 590, 43, 660, 147, 35, 376, 939, 60, 941, 534, 683, 5, 0, 953, 16, 7, 49, 649, 595, 470}, - {15, 515, 700, 753, 13, 1, 0, 23, 2, 33, 77, 4, 3, 51, 5, 102, 115, 10, 9, 341, 6, 7, 11, 342, 217, 12, 120, 180, 40, 317, 141, 8}, - {53, 27, 17, 161, 469, 378, 73, 527, 19, 136, 383, 250, 495, 56, 862, 26, 62, 84, 80, 106, 200, 4, 34, 14, 440, 297, 3, 128, 585, 5, 129, 123}, - {17, 45, 209, 106, 5, 207, 243, 454, 119, 255, 2, 263, 186, 290, 29, 3, 21, 62, 425, 61, 84, 32, 58, 56, 48, 408, 655, 136, 306, 14, 742, 227}, - {4, 152, 59, 452, 128, 79, 216, 11, 339, 471, 529, 188, 94, 77, 202, 12, 291, 33, 318, 377, 99, 51, 23, 5, 402, 349, 32, 474, 102, 13, 205, 111}, - {15, 515, 700, 753, 1, 0, 2, 13, 3, 5, 23, 4, 180, 51, 115, 9, 6, 12, 7, 8, 197, 33, 10, 961, 901, 77, 141, 752, 110, 22, 120, 341}, - {951, 752, 638, 811, 351, 642, 180, 253, 10, 341, 197, 901, 110, 873, 8, 244, 15, 352, 165, 898, 143, 515, 564, 762, 499, 55, 365, 700, 82, 753, 141, 854}, - {6, 262, 197, 350, 74, 26, 115, 509, 841, 583, 165, 38, 21, 13, 47, 50, 235, 19, 33, 324, 453, 4, 308, 196, 138, 99, 64, 903, 675, 1, 223, 130}, - {125, 165, 391, 23, 386, 221, 21, 13, 558, 457, 51, 867, 197, 115, 401, 758, 77, 97, 308, 791, 7, 180, 48, 120, 963, 451, 743, 89, 603, 134, 403, 450}, - {1, 14, 2, 5, 16, 46, 7, 38, 58, 24, 50, 0, 69, 48, 35, 67, 54, 18, 12, 75, 21, 45, 513, 155, 430, 37, 270, 9, 61, 163, 223, 32}, - {23, 13, 51, 0, 12, 15, 4, 1, 115, 2, 515, 453, 10, 457, 5, 3, 202, 21, 165, 700, 403, 11, 37, 64, 77, 401, 9, 197, 753, 59, 475, 99}, - {129, 84, 17, 56, 27, 495, 19, 548, 80, 123, 162, 378, 3, 504, 161, 469, 618, 73, 40, 53, 4, 26, 205, 184, 106, 183, 62, 6, 257, 128, 862, 12}, - {28, 9, 22, 49, 109, 1, 67, 0, 39, 55, 168, 158, 83, 36, 35, 86, 420, 194, 185, 159, 95, 105, 69, 208, 272, 103, 50, 114, 2, 254, 169, 30}, - {242, 391, 8, 456, 116, 13, 23, 492, 341, 165, 867, 51, 499, 457, 479, 638, 338, 509, 719, 10, 1, 642, 417, 762, 401, 93, 206, 268, 901, 569, 22, 197}, - {211, 162, 248, 130, 57, 4, 41, 556, 507, 266, 183, 152, 305, 361, 11, 129, 62, 229, 38, 471, 514, 313, 157, 300, 377, 3, 440, 128, 123, 328, 339, 59}, - {7, 92, 97, 16, 298, 140, 60, 126, 14, 35, 279, 314, 232, 246, 43, 230, 508, 173, 71, 107, 423, 24, 150, 779, 20, 189, 66, 18, 607, 21, 0, 653}, - {15, 515, 700, 753, 1, 0, 2, 13, 23, 5, 3, 180, 51, 901, 6, 4, 7, 12, 9, 115, 8, 457, 165, 82, 120, 197, 10, 64, 141, 341, 22, 117}, - {0, 18, 403, 25, 523, 74, 6, 24, 42, 91, 22, 102, 13, 51, 49, 193, 475, 681, 95, 85, 730, 64, 899, 397, 273, 750, 247, 673, 32, 805, 757, 288}, - {56, 0, 18, 65, 33, 554, 84, 343, 64, 6, 90, 561, 22, 19, 899, 108, 27, 63, 289, 475, 240, 467, 370, 32, 233, 214, 24, 123, 95, 287, 28, 194}, - {31, 98, 127, 9, 0, 44, 293, 105, 395, 299, 49, 242, 28, 22, 599, 116, 1, 284, 276, 125, 456, 685, 763, 159, 272, 623, 23, 935, 393, 144, 201, 137}, - {1, 5, 2, 14, 38, 46, 50, 48, 21, 7, 58, 45, 270, 61, 155, 171, 0, 290, 69, 32, 29, 54, 67, 16, 24, 666, 663, 17, 37, 75, 502, 52}, - {23, 51, 13, 453, 457, 12, 719, 4, 15, 99, 401, 2, 961, 3, 11, 730, 475, 515, 0, 1, 165, 115, 629, 700, 14, 17, 403, 40, 5, 33, 37, 64}, - {968, 967, 966, 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, - 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937}, - {2, 1, 14, 29, 67, 103, 6, 46, 52, 75, 24, 133, 38, 218, 83, 309, 36, 108, 70, 114, 96, 5, 238, 74, 25, 26, 220, 236, 65, 50, 69, 87}, - {7, 71, 16, 92, 24, 60, 14, 97, 150, 140, 35, 189, 149, 298, 18, 230, 43, 508, 2, 423, 69, 0, 38, 314, 66, 279, 399, 517, 251, 20, 232, 273}, - {23, 1, 120, 51, 13, 202, 77, 141, 260, 21, 15, 5, 128, 82, 2, 450, 269, 165, 102, 318, 48, 32, 137, 515, 125, 64, 12, 115, 351, 180, 33, 7}, - {77, 13, 33, 23, 64, 51, 4, 102, 141, 128, 40, 1, 2, 202, 0, 6, 177, 115, 137, 15, 59, 10, 11, 7, 269, 22, 515, 180, 318, 3, 700, 95}, - {101, 9, 18, 363, 264, 520, 411, 604, 676, 682, 905, 271, 16, 821, 167, 0, 621, 364, 39, 100, 121, 118, 166, 781, 647, 252, 1, 848, 447, 265, 404, 60}, - {144, 203, 326, 382, 166, 418, 93, 88, 96, 822, 1, 141, 859, 77, 744, 438, 110, 269, 921, 367, 521, 274, 100, 39, 494, 120, 403, 473, 217, 576, 13, 291}, - {13, 21, 180, 125, 5, 23, 191, 32, 18, 16, 146, 199, 115, 24, 165, 118, 0, 225, 22, 1, 60, 197, 64, 901, 375, 241, 48, 12, 408, 71, 522, 818}, - {15, 515, 700, 753, 13, 0, 23, 8, 1, 51, 82, 102, 2, 33, 4, 9, 180, 165, 5, 77, 10, 110, 12, 197, 120, 260, 18, 326, 351, 403, 22, 457}, - {33, 77, 102, 64, 13, 23, 128, 51, 141, 202, 1, 40, 0, 2, 117, 10, 15, 4, 6, 318, 269, 134, 22, 515, 180, 115, 177, 153, 137, 196, 3, 700}, - {174, 544, 104, 525, 74, 0, 151, 25, 6, 624, 29, 66, 2, 636, 81, 45, 204, 177, 64, 416, 7, 644, 5, 138, 222, 319, 355, 77, 22, 122, 789, 216}, - {141, 304, 372, 352, 291, 947, 177, 269, 128, 954, 77, 349, 217, 202, 64, 318, 498, 437, 102, 864, 86, 13, 115, 180, 137, 5, 210, 197, 32, 950, 678, 7}, - {161, 200, 53, 17, 714, 27, 34, 73, 472, 62, 585, 56, 440, 383, 136, 78, 527, 19, 4, 3, 106, 361, 14, 250, 80, 514, 377, 84, 322, 390, 862, 548}, - {32, 76, 72, 21, 38, 14, 89, 54, 12, 37, 2, 241, 5, 428, 17, 1, 181, 221, 350, 45, 3, 4, 449, 90, 148, 179, 99, 292, 794, 770, 477, 46}, - {33, 23, 128, 64, 141, 13, 77, 51, 102, 202, 2, 15, 1, 3, 40, 10, 5, 153, 269, 515, 165, 0, 117, 196, 180, 318, 6, 700, 137, 134, 120, 22}, - {96, 137, 30, 0, 9, 39, 840, 202, 669, 406, 141, 530, 613, 1, 180, 88, 22, 160, 679, 576, 28, 403, 31, 219, 49, 228, 829, 100, 36, 15, 10, 856}, - {180, 141, 352, 1, 15, 752, 115, 0, 217, 365, 2, 515, 13, 901, 341, 317, 23, 4, 197, 700, 269, 5, 3, 31, 753, 244, 21, 165, 253, 202, 51, 44}, - {1, 2, 67, 0, 28, 50, 83, 65, 14, 46, 103, 114, 24, 38, 36, 9, 69, 5, 18, 7, 22, 133, 55, 218, 16, 124, 29, 54, 96, 160, 12, 480}, - {180, 115, 352, 317, 365, 217, 752, 901, 141, 15, 341, 1, 515, 253, 700, 0, 753, 873, 2, 197, 31, 137, 165, 244, 4, 120, 160, 44, 98, 5, 202, 3}, - {5, 32, 347, 49, 13, 21, 95, 713, 23, 1, 77, 33, 60, 64, 107, 4, 126, 928, 296, 850, 0, 241, 197, 102, 652, 195, 180, 534, 165, 153, 379, 10}, - {341, 180, 365, 901, 317, 115, 15, 752, 515, 700, 217, 873, 753, 82, 0, 110, 197, 141, 951, 165, 1, 564, 13, 351, 253, 12, 10, 3, 2, 4, 308, 244}, - {17, 45, 21, 3, 106, 5, 155, 38, 227, 32, 2, 209, 62, 54, 12, 243, 14, 181, 552, 587, 46, 540, 207, 794, 37, 48, 430, 119, 255, 221, 770, 29}, - {16, 24, 35, 18, 7, 0, 50, 1, 9, 14, 75, 69, 2, 5, 12, 21, 60, 13, 67, 71, 23, 48, 10, 108, 223, 181, 189, 103, 46, 64, 92, 51}, - {127, 13, 98, 165, 308, 23, 286, 293, 258, 51, 219, 395, 197, 115, 301, 401, 31, 391, 22, 105, 457, 170, 239, 276, 55, 338, 629, 116, 180, 479, 509, 569}, - {539, 213, 748, 840, 957, 669, 30, 466, 88, 217, 144, 251, 863, 190, 137, 93, - 230, 228, 679, 352, 317, 203, 617, 321, 258, 530, 160, 219, 96, 831, 816, 689}, - {5, 48, 1, 21, 2, 14, 0, 36, 12, 38, 32, 54, 430, 181, 50, 270, 72, 99, 281, 45, 17, 10, 46, 22, 37, 218, 67, 3, 290, 76, 23, 51}, - {13, 23, 0, 4, 33, 51, 2, 115, 141, 1, 77, 217, 180, 10, 9, 317, 3, 102, 11, 5, 15, 197, 7, 202, 22, 165, 40, 64, 515, 6, 341, 31}, - {13, 15, 117, 515, 23, 12, 37, 134, 165, 700, 38, 54, 457, 753, 51, 64, 153, 197, 14, 10, 33, 82, 961, 0, 99, 89, 115, 719, 141, 3, 4, 1}, - {5, 21, 2, 3, 1, 32, 14, 12, 48, 17, 0, 10, 51, 23, 38, 22, 4, 72, 13, 54, 36, 45, 137, 76, 99, 114, 86, 37, 11, 64, 540, 430}, - {202, 128, 77, 318, 291, 33, 269, 102, 275, 141, 494, 342, 40, 678, 0, 177, 20, 210, 402, 7, 4, 5, 137, 6, 13, 450, 403, 32, 49, 120, 23, 22}, - {1, 2, 24, 14, 67, 46, 69, 50, 38, 103, 16, 18, 75, 35, 83, 29, 52, 96, 5, 108, 0, 7, 54, 71, 149, 394, 236, 309, 70, 133, 220, 58}, - {15, 515, 1, 700, 0, 2, 753, 13, 23, 5, 180, 3, 51, 4, 165, 457, 12, 197, 115, 6, 7, 21, 9, 141, 8, 901, 33, 82, 120, 77, 10, 110}, - {0, 28, 65, 14, 67, 2, 124, 24, 1, 9, 7, 69, 55, 154, 36, 16, 46, 114, 175, 35, 83, 22, 429, 18, 109, 149, 68, 189, 108, 336, 251, 133}, - {56, 162, 403, 3, 129, 775, 99, 161, 17, 40, 527, 33, 880, 4, 14, 128, 475, 12, 548, 23, 102, 202, 361, 117, 34, 184, 383, 200, 183, 196, 64, 53}, - {151, 2, 29, 58, 112, 45, 186, 113, 5, 70, 52, 1, 311, 6, 315, 66, 61, 7, 74, 27, 631, 17, 80, 87, 287, 243, 209, 227, 14, 491, 19, 869}, - {6, 1, 74, 2, 75, 29, 25, 66, 26, 70, 52, 138, 67, 324, 357, 42, 19, 220, 14, 85, 87, 108, 38, 451, 309, 103, 24, 69, 380, 135, 114, 65}, - {15, 515, 700, 13, 23, 0, 1, 120, 753, 51, 180, 2, 260, 202, 5, 141, 77, 102, 9, 450, 115, 21, 197, 165, 7, 137, 110, 33, 12, 269, 901, 4}, - {5, 45, 17, 2, 14, 46, 48, 38, 181, 50, 155, 3, 186, 54, 61, 29, 21, 227, 281, 80, 540, 106, 12, 400, 52, 1, 58, 32, 328, 171, 209, 487}, - {16, 18, 265, 121, 158, 35, 60, 9, 39, 7, 329, 105, 252, 68, 24, 1, 132, 167, 159, 22, 0, 49, 286, 101, 21, 146, 23, 327, 120, 709, 5, 14}, - {108, 467, 283, 56, 389, 650, 123, 412, 33, 177, 899, 475, 216, 453, 269, 349, 619, 65, 51, 730, 403, 670, 23, 196, 523, 128, 84, 13, 401, 789, 503, 543}, - {514, 3, 11, 377, 328, 4, 361, 507, 57, 403, 14, 880, 130, 485, 176, 215, 236, 38, 152, 102, 211, 56, 62, 757, 54, 585, 300, 556, 34, 555, 40, 229}, - {3, 555, 62, 266, 130, 99, 507, 139, 514, 12, 152, 229, 215, 305, 57, 40, 440, 33, 403, 471, 38, 56, 475, 14, 361, 313, 775, 328, 196, 548, 123, 23}, - {120, 202, 318, 15, 77, 13, 1, 450, 33, 269, 515, 260, 5, 128, 494, 51, 23, 700, 102, 141, 40, 753, 326, 403, 817, 137, 523, 21, 177, 922, 342, 7}, - {15, 1, 515, 23, 0, 13, 700, 2, 51, 753, 180, 5, 165, 21, 197, 12, 3, 120, 115, 4, 141, 6, 9, 7, 457, 33, 386, 202, 82, 8, 31, 341}, - {15, 180, 515, 82, 351, 700, 10, 317, 753, 115, 217, 365, 141, 898, 33, 901, 13, 23, 110, 854, 752, 77, 1, 197, 4, 341, 143, 36, 64, 352, 102, 9}, - {104, 289, 66, 707, 214, 90, 712, 64, 97, 173, 20, 0, 414, 194, 874, 43, 32, 7, 568, 560, 65, 38, 426, 312, 715, 192, 376, 74, 835, 5, 324, 147}, - {84, 56, 0, 554, 63, 65, 453, 249, 123, 643, 18, 26, 847, 475, 511, 403, 416, 561, 524, 289, 370, 73, 9, 19, 45, 42, 719, 194, 27, 467, 33, 730}, - {21, 346, 13, 350, 308, 826, 197, 101, 352, 68, 570, 0, 165, 23, 9, 841, 115, 100, 509, 694, 221, 230, 35, 217, 569, 88, 124, 749, 1, 777, 212, 154}, - {16, 92, 7, 24, 60, 18, 35, 140, 126, 14, 50, 71, 46, 330, 2, 75, 246, 5, 121, 267, 571, 1, 230, 309, 220, 0, 9, 64, 146, 236, 54, 108}, - {82, 15, 515, 898, 365, 700, 180, 33, 341, 753, 77, 901, 10, 115, 55, 351, 21, 5, 1, 4, 13, 102, 36, 217, 2, 165, 752, 120, 197, 117, 11, 317}, - {16, 24, 35, 18, 69, 71, 140, 1, 103, 7, 189, 68, 0, 50, 9, 108, 2, 133, 60, 267, 230, 46, 149, 67, 167, 118, 92, 14, 75, 21, 191, 38}, - {60, 71, 16, 18, 7, 20, 43, 118, 35, 68, 375, 28, 608, 0, 175, 566, 154, 92, 14, 149, 628, 33, 22, 13, 2, 10, 279, 23, 107, 356, 55, 117}, - {187, 258, 871, 295, 201, 434, 219, 224, 489, 384, 268, 110, 261, 839, 44, 699, - 93, 116, 36, 131, 141, 228, 144, 160, 940, 567, 244, 406, 137, 574, 98, 253}, - {66, 7, 97, 172, 192, 712, 232, 324, 204, 74, 43, 448, 387, 426, 568, 20, 526, 107, 104, 135, 356, 729, 173, 0, 22, 5, 32, 95, 2, 64, 500, 560}, - {15, 515, 700, 753, 1, 4, 0, 341, 13, 3, 134, 2, 5, 33, 11, 77, 12, 10, 23, 197, 365, 901, 7, 40, 217, 32, 21, 6, 51, 180, 961, 37}, - {0, 28, 24, 9, 35, 65, 16, 124, 68, 55, 109, 154, 7, 39, 22, 149, 158, 14, 175, 1, 49, 252, 18, 71, 2, 168, 289, 419, 108, 420, 67, 101}, - {7, 16, 14, 92, 2, 46, 140, 24, 220, 35, 38, 60, 75, 1, 50, 18, 87, 54, 5, 126, 29, 52, 278, 262, 314, 107, 71, 21, 172, 135, 330, 394}, - {7, 92, 16, 14, 172, 126, 2, 60, 140, 35, 135, 314, 278, 46, 24, 38, 232, 107, 330, 66, 5, 18, 150, 246, 230, 97, 52, 1, 121, 563, 279, 21}, - {6, 26, 235, 53, 297, 436, 27, 19, 25, 73, 113, 445, 90, 214, 65, 42, 64, 289, 250, 611, 624, 32, 45, 648, 614, 17, 85, 491, 34, 122, 200, 416}, - {352, 141, 1, 217, 854, 752, 351, 180, 244, 36, 110, 661, 82, 258, 816, 160, 295, 219, 567, 224, 230, 269, 922, 144, 260, 268, 93, 201, 137, 116, 489, 202}, - {16, 60, 35, 18, 126, 107, 68, 191, 92, 121, 7, 14, 598, 20, 493, 279, 167, 446, 118, 0, 28, 43, 463, 55, 24, 212, 375, 566, 9, 150, 575, 21}, - {15, 1, 515, 2, 4, 13, 0, 700, 3, 5, 23, 753, 341, 77, 51, 115, 33, 11, 180, 10, 197, 141, 6, 165, 7, 901, 102, 40, 9, 202, 217, 12}, - {23, 51, 13, 202, 21, 5, 1, 120, 15, 137, 128, 125, 32, 2, 12, 141, 33, 165, 64, 515, 403, 318, 700, 48, 180, 7, 6, 450, 115, 523, 475, 260}, - {131, 716, 224, 371, 219, 187, 737, 616, 385, 254, 9, 98, 105, 924, 31, 258, 836, 39, 127, 578, 49, 916, 44, 761, 272, 137, 944, 159, 0, 242, 442, 22}, - {15, 515, 700, 1, 753, 2, 5, 0, 4, 13, 3, 180, 11, 141, 197, 10, 341, 217, 33, 134, 165, 6, 77, 7, 317, 12, 352, 64, 365, 32, 102, 40}, - {66, 74, 7, 173, 174, 29, 192, 2, 222, 20, 226, 43, 353, 52, 712, 6, 0, 138, 500, 204, 97, 145, 64, 104, 426, 673, 355, 90, 25, 5, 65, 87}, - {5, 259, 786, 534, 590, 493, 279, 49, 13, 581, 465, 21, 929, 35, 941, 132, 147, 32, 23, 612, 362, 626, 107, 121, 178, 0, 146, 61, 48, 939, 10, 18}, - {2, 14, 16, 7, 278, 69, 135, 140, 46, 24, 267, 35, 92, 38, 1, 189, 29, 52, 309, 60, 66, 75, 71, 172, 74, 357, 18, 87, 67, 6, 230, 5}, - {165, 13, 308, 197, 391, 23, 401, 15, 51, 457, 180, 509, 115, 569, 3, 629, 961, 719, 34, 758, 317, 734, 14, 29, 46, 2, 17, 901, 38, 453, 5, 217}, - {1, 22, 2, 14, 0, 28, 7, 168, 67, 49, 65, 24, 36, 95, 5, 105, 55, 35, 12, 46, 69, 16, 114, 159, 194, 50, 10, 9, 158, 83, 164, 109}, - {34, 453, 3, 196, 130, 14, 322, 11, 47, 51, 377, 236, 361, 4, 730, 153, 514, 711, 57, 440, 62, 17, 161, 108, 176, 59, 485, 56, 162, 412, 202, 117}, - {18, 16, 21, 23, 48, 13, 24, 35, 121, 5, 156, 60, 51, 1, 7, 132, 141, 221, 163, 115, 0, 271, 447, 340, 363, 202, 125, 71, 2, 781, 22, 698}, - {165, 13, 457, 23, 197, 961, 629, 569, 341, 41, 12, 38, 401, 901, 54, 51, 115, 17, 15, 509, 421, 37, 62, 45, 719, 57, 32, 328, 117, 758, 157, 99}, - {2, 1, 77, 141, 33, 64, 3, 102, 0, 23, 13, 5, 128, 10, 6, 15, 180, 202, 269, 40, 51, 515, 7, 165, 137, 117, 318, 4, 700, 153, 197, 352}, - {68, 212, 0, 124, 101, 9, 154, 16, 562, 191, 21, 149, 65, 24, 35, 1, 118, 167, 818, 350, 520, 100, 722, 841, 264, 71, 13, 302, 478, 23, 375, 346}, - {98, 23, 48, 598, 13, 293, 541, 21, 125, 121, 51, 807, 0, 31, 35, 259, 126, 7, 386, 1, 223, 783, 10, 107, 199, 20, 221, 144, 342, 963, 49, 64}, - {21, 13, 5, 586, 1, 23, 167, 48, 33, 781, 647, 49, 165, 18, 51, 271, 77, 32, 761, 118, 0, 82, 391, 22, 146, 141, 459, 31, 197, 156, 115, 4}, - {2, 1, 5, 61, 29, 7, 58, 45, 14, 6, 425, 32, 70, 52, 290, 738, 207, 21, 72, 112, 66, 76, 655, 17, 186, 46, 64, 263, 38, 0, 128, 87}, - {39, 265, 9, 100, 1, 333, 363, 101, 18, 411, 447, 254, 166, 310, 31, 98, 264, 30, 639, 404, 156, 286, 16, 93, 593, 203, 272, 682, 0, 905, 44, 821}, - {6, 2, 1, 19, 29, 51, 26, 108, 25, 74, 5, 23, 14, 114, 13, 386, 133, 103, 42, 66, 453, 70, 309, 138, 719, 324, 65, 38, 64, 96, 52, 75}, - {20, 43, 356, 107, 49, 858, 595, 7, 414, 359, 0, 5, 392, 319, 97, 612, 422, 819, 14, 376, 173, 246, 22, 470, 147, 427, 230, 92, 197, 33, 683, 95}, - {0, 9, 68, 35, 65, 67, 114, 101, 28, 1, 124, 175, 336, 69, 154, 103, 83, 24, 189, 133, 39, 16, 50, 7, 2, 149, 55, 251, 18, 345, 230, 36}, - {23, 13, 51, 15, 0, 1, 515, 115, 165, 2, 5, 12, 700, 202, 4, 21, 141, 457, 753, 197, 10, 3, 180, 120, 32, 9, 318, 11, 453, 64, 6, 269}, - {121, 195, 60, 16, 126, 107, 98, 271, 146, 407, 132, 35, 1, 167, 199, 223, 493, 191, 279, 20, 18, 5, 43, 7, 21, 92, 48, 393, 0, 362, 212, 467}, - {31, 44, 299, 116, 393, 144, 492, 456, 268, 22, 105, 0, 367, 918, 384, 434, 127, 489, 98, 9, 963, 125, 242, 948, 1, 28, 206, 49, 36, 51, 93, 293}, - {23, 13, 457, 51, 165, 401, 719, 758, 197, 453, 961, 629, 308, 14, 15, 12, 730, 3, 386, 569, 391, 29, 739, 515, 34, 828, 832, 901, 115, 514, 670, 341}, - {105, 36, 131, 22, 180, 115, 341, 127, 169, 1, 9, 31, 64, 98, 44, 365, 317, 141, 272, 143, 160, 55, 219, 86, 197, 776, 239, 187, 0, 535, 13, 752}, - {1, 6, 2, 14, 66, 25, 29, 5, 108, 67, 65, 114, 19, 38, 26, 52, 74, 7, 24, 18, 69, 86, 36, 388, 64, 51, 17, 83, 23, 46, 42, 75}, - {51, 386, 23, 453, 719, 13, 730, 6, 457, 670, 758, 19, 401, 165, 2, 475, 47, 26, 899, 14, 108, 17, 1, 5, 197, 29, 894, 754, 236, 74, 27, 285}, - {252, 18, 9, 101, 121, 16, 132, 0, 419, 167, 364, 60, 604, 35, 265, 363, 146, 271, 39, 158, 68, 109, 28, 329, 848, 24, 647, 907, 682, 159, 212, 55}, - {283, 503, 128, 432, 26, 193, 63, 269, 789, 529, 102, 122, 389, 275, 678, 6, 25, 318, 445, 4, 342, 27, 573, 605, 177, 862, 643, 291, 216, 57, 235, 59}, - {2, 1, 29, 75, 69, 52, 14, 6, 46, 74, 87, 7, 220, 226, 278, 38, 135, 66, 267, 70, 16, 262, 25, 24, 380, 324, 357, 140, 67, 394, 97, 222}, - {97, 298, 69, 7, 66, 140, 189, 24, 16, 267, 172, 423, 60, 150, 14, 314, 92, 71, 81, 501, 43, 35, 74, 6, 517, 232, 149, 607, 83, 330, 18, 2}, - {475, 421, 403, 899, 51, 805, 523, 958, 453, 817, 23, 615, 401, 801, 120, 326, 202, 670, 494, 730, 450, 386, 115, 629, 260, 576, 77, 365, 569, 0, 165, 13}, - {7, 20, 14, 128, 77, 97, 112, 202, 2, 177, 16, 415, 269, 318, 275, 66, 107, 43, 141, 414, 135, 38, 307, 10, 58, 0, 6, 291, 32, 5, 4, 40}, - {24, 14, 7, 0, 2, 1, 22, 28, 16, 65, 168, 124, 35, 67, 108, 109, 18, 49, 10, 149, 69, 158, 5, 95, 289, 12, 55, 6, 36, 71, 46, 21}, - {26, 80, 27, 73, 122, 25, 19, 17, 6, 42, 684, 209, 445, 573, 667, 106, 45, 690, 4, 611, 255, 680, 297, 495, 65, 59, 128, 119, 483, 113, 64, 53}, - {107, 259, 362, 376, 465, 20, 470, 147, 595, 534, 612, 683, 660, 43, 5, 49, 581, 0, 858, 35, 427, 246, 97, 786, 178, 356, 14, 21, 142, 878, 7, 279}, - {131, 30, 228, 190, 856, 406, 224, 88, 219, 530, 863, 613, 778, 274, 944, 816, 187, 39, 100, 160, 258, 31, 44, 93, 1, 321, 539, 36, 871, 137, 435, 531}, - {113, 6, 311, 25, 45, 491, 80, 611, 27, 26, 209, 667, 17, 73, 122, 42, 684, 396, 19, 85, 106, 5, 614, 4, 2, 255, 151, 29, 1, 64, 648, 61}, - {15, 515, 700, 753, 0, 1, 23, 51, 120, 2, 13, 82, 5, 260, 9, 4, 341, 77, 180, 115, 141, 10, 7, 12, 450, 8, 202, 901, 197, 351, 165, 93}, - {219, 127, 98, 258, 395, 421, 924, 293, 242, 201, 697, 105, 276, 51, 308, 23, 453, 272, 401, 944, 512, 137, 13, 31, 284, 567, 386, 365, 116, 131, 964, 125}, - {15, 180, 352, 141, 515, 752, 217, 82, 1, 317, 854, 700, 351, 753, 115, 341, 110, 13, 260, 120, 21, 36, 33, 898, 23, 10, 5, 365, 4, 160, 901, 137}, - {129, 123, 17, 257, 162, 184, 205, 249, 183, 769, 5, 80, 3, 4, 229, 130, 119, 45, 90, 99, 618, 106, 57, 497, 12, 128, 2, 84, 59, 152, 27, 40}, - {33, 102, 23, 77, 64, 128, 51, 13, 0, 202, 10, 141, 40, 15, 1, 22, 117, 137, 2, 86, 4, 403, 269, 153, 515, 196, 65, 11, 700, 115, 99, 5}, - {7, 14, 2, 16, 172, 107, 46, 92, 5, 135, 35, 202, 294, 87, 38, 232, 29, 97, 20, 21, 24, 1, 60, 220, 66, 43, 12, 0, 126, 52, 54, 70}, - {403, 576, 615, 523, 475, 326, 805, 817, 494, 421, 51, 202, 120, 450, 137, 453, 23, 859, 260, 401, 402, 77, 33, 670, 0, 958, 15, 197, 386, 515, 165, 480}, - {141, 352, 217, 137, 0, 180, 202, 349, 9, 269, 23, 51, 115, 291, 77, 372, 13, 317, 120, 752, 365, 351, 93, 22, 2, 341, 64, 10, 82, 854, 28, 18}, - {1, 23, 13, 51, 202, 141, 5, 165, 21, 15, 120, 180, 64, 2, 197, 125, 33, 102, 12, 7, 137, 515, 48, 128, 269, 318, 93, 700, 0, 403, 9, 4}, - {25, 151, 6, 145, 122, 29, 174, 45, 113, 74, 4, 665, 42, 138, 2, 614, 416, 287, 19, 348, 746, 0, 66, 26, 1, 7, 64, 243, 311, 396, 81, 624}, - {30, 190, 254, 166, 100, 382, 731, 829, 88, 131, 264, 795, 9, 93, 625, 274, 438, 1, 578, 613, 716, 31, 44, 39, 530, 36, 616, 921, 265, 203, 160, 77}, - {132, 5, 21, 13, 1, 23, 32, 195, 379, 687, 156, 121, 626, 296, 48, 70, 850, 146, 51, 82, 883, 771, 35, 49, 652, 407, 60, 4, 260, 0, 845, 33}, - {9, 254, 0, 49, 272, 131, 39, 159, 688, 101, 105, 578, 518, 158, 286, 28, 327, 333, 68, 224, 252, 219, 344, 16, 22, 1, 716, 31, 30, 228, 24, 890}, - {16, 7, 35, 60, 18, 20, 14, 68, 9, 0, 28, 118, 43, 92, 126, 55, 107, 2, 101, 154, 24, 71, 5, 202, 121, 109, 22, 252, 21, 97, 1, 621}, - {15, 515, 700, 753, 13, 1, 341, 2, 0, 4, 3, 5, 11, 23, 10, 33, 117, 12, 901, 197, 6, 134, 77, 8, 165, 317, 21, 365, 217, 7, 17, 40}, - {78, 19, 444, 47, 26, 390, 27, 453, 130, 813, 108, 730, 711, 65, 412, 122, 51, 680, 113, 235, 690, 196, 630, 283, 128, 236, 14, 64, 73, 53, 200, 445}, - {2, 7, 29, 5, 61, 6, 45, 1, 66, 113, 112, 14, 52, 315, 738, 128, 32, 151, 74, 16, 20, 64, 70, 21, 592, 0, 25, 4, 425, 43, 491, 222}, - {145, 112, 74, 66, 6, 29, 26, 70, 19, 396, 25, 87, 2, 287, 135, 151, 138, 222, 5, 226, 42, 122, 7, 307, 1, 644, 45, 58, 113, 651, 635, 632}, - {92, 16, 7, 60, 126, 24, 140, 35, 14, 232, 18, 121, 246, 71, 46, 267, 172, 150, 107, 314, 132, 146, 230, 2, 278, 108, 330, 199, 236, 5, 38, 572}, - {13, 115, 197, 538, 569, 341, 98, 55, 165, 127, 365, 762, 219, 286, 844, 23, 170, 206, 734, 638, 535, 901, 169, 253, 629, 0, 873, 509, 180, 10, 332, 258}, - {58, 151, 74, 53, 287, 27, 29, 396, 6, 70, 2, 73, 5, 52, 112, 26, 651, 1, 297, 113, 17, 75, 19, 45, 334, 445, 145, 34, 315, 549, 436, 331}, - {214, 289, 90, 874, 104, 751, 64, 65, 312, 835, 204, 249, 750, 194, 74, 81, 875, 32, 519, 288, 348, 0, 174, 247, 636, 715, 138, 192, 784, 6, 524, 280}, - {9, 39, 28, 35, 30, 0, 166, 49, 1, 175, 439, 158, 64, 346, 36, 101, 67, 364, 86, 88, 274, 100, 168, 55, 23, 10, 420, 22, 190, 141, 505, 180}, - {341, 901, 15, 515, 700, 753, 1, 365, 10, 0, 569, 180, 2, 197, 115, 31, 165, 3, 5, 4, 44, 22, 317, 13, 9, 951, 23, 253, 116, 143, 762, 93}, - {120, 202, 77, 450, 260, 15, 128, 318, 102, 515, 494, 13, 817, 700, 269, 5, 403, 51, 1, 33, 23, 753, 82, 326, 141, 342, 291, 137, 21, 523, 351, 32}, - {13, 115, 241, 64, 180, 32, 125, 197, 165, 4, 118, 22, 21, 23, 16, 247, 237, 28, 225, 191, 95, 141, 167, 5, 0, 341, 288, 35, 459, 18, 177, 24}, - {16, 24, 35, 14, 1, 2, 7, 69, 18, 46, 60, 50, 267, 140, 71, 189, 108, 38, 75, 92, 0, 5, 9, 230, 67, 21, 309, 335, 54, 236, 394, 220}, - {15, 515, 700, 753, 898, 180, 901, 341, 197, 638, 10, 165, 33, 1, 115, 4, 77, 365, 317, 13, 102, 217, 117, 0, 5, 2, 253, 3, 82, 569, 21, 752}, - {193, 523, 18, 84, 56, 730, 233, 65, 4, 817, 90, 33, 643, 403, 91, 511, 453, 240, 59, 11, 214, 51, 719, 196, 153, 475, 32, 123, 64, 847, 102, 561}, - {112, 29, 151, 2, 74, 6, 66, 7, 222, 145, 287, 45, 5, 624, 52, 25, 113, 416, 58, 122, 19, 70, 186, 204, 4, 87, 644, 549, 337, 884, 32, 0}, - {13, 0, 23, 2, 1, 15, 33, 3, 77, 515, 141, 5, 4, 217, 10, 51, 64, 180, 700, 115, 6, 117, 11, 7, 753, 40, 102, 165, 197, 22, 317, 153}, - {28, 0, 1, 67, 65, 9, 2, 114, 83, 69, 103, 50, 36, 22, 55, 24, 46, 14, 124, 109, 35, 7, 16, 38, 133, 160, 389, 323, 18, 12, 154, 5}, - {121, 132, 18, 167, 271, 146, 101, 363, 621, 9, 411, 647, 16, 354, 520, 60, 212, 932, 1, 806, 55, 0, 195, 446, 68, 35, 31, 364, 777, 252, 407, 118}, - {26, 6, 85, 396, 122, 624, 25, 19, 42, 445, 64, 648, 573, 416, 174, 680, 665, 214, 45, 348, 90, 65, 194, 145, 113, 881, 138, 289, 112, 436, 297, 544}, - {16, 146, 18, 92, 24, 199, 60, 71, 121, 126, 35, 108, 156, 953, 271, 674, 132, 7, 32, 640, 360, 246, 649, 118, 21, 95, 5, 517, 14, 9, 1, 314}, - {51, 13, 23, 453, 475, 730, 719, 15, 457, 403, 64, 115, 33, 95, 4, 523, 3, 12, 21, 6, 899, 102, 5, 128, 401, 202, 11, 141, 308, 515, 22, 125}, - {151, 396, 6, 53, 27, 113, 58, 26, 73, 112, 74, 287, 45, 29, 297, 19, 145, 70, 138, 445, 315, 436, 34, 2, 17, 573, 5, 61, 549, 491, 1, 80}, - {223, 1, 888, 774, 260, 98, 269, 385, 349, 202, 96, 141, 421, 622, 730, 863, 318, 697, 87, 453, 393, 418, 922, 834, 751, 5, 163, 335, 120, 291, 352, 30}, - {16, 60, 92, 35, 126, 121, 7, 150, 246, 18, 107, 1, 598, 24, 167, 195, 14, 97, 71, 279, 98, 441, 191, 199, 517, 146, 356, 223, 298, 271, 230, 0}, - {22, 1, 105, 28, 239, 170, 0, 55, 95, 31, 36, 301, 2, 320, 98, 127, 9, 49, 44, 64, 35, 67, 10, 86, 5, 12, 109, 23, 168, 13, 21, 312}, - {2, 6, 5, 207, 292, 76, 1, 119, 45, 32, 17, 29, 61, 306, 790, 58, 240, 106, 14, 64, 214, 151, 476, 710, 7, 72, 84, 128, 4, 179, 70, 25}, - {51, 23, 221, 254, 115, 13, 438, 530, 125, 48, 21, 39, 541, 960, 386, 49, 1, 613, 15, 840, 228, 308, 627, 131, 688, 401, 5, 326, 421, 158, 165, 83}, - {1, 5, 2, 0, 12, 22, 21, 36, 10, 14, 48, 86, 23, 13, 32, 54, 3, 4, 28, 65, 51, 50, 137, 37, 208, 114, 9, 38, 17, 7, 281, 202}, - {363, 23, 447, 182, 296, 340, 1, 93, 698, 478, 379, 156, 284, 144, 18, 269, 21, 98, 141, 70, 668, 411, 664, 658, 110, 914, 67, 937, 180, 691, 335, 291}, - {17, 32, 45, 498, 41, 115, 180, 197, 106, 62, 54, 38, 546, 165, 13, 155, 468, 509, 341, 243, 241, 217, 542, 15, 57, 536, 428, 51, 117, 721, 292, 129}, - {32, 95, 64, 246, 22, 92, 180, 13, 5, 652, 125, 241, 638, 237, 7, 49, 4, 126, 21, 115, 197, 296, 888, 316, 0, 165, 774, 23, 16, 392, 1, 534}, - {15, 515, 700, 753, 33, 341, 13, 217, 4, 141, 77, 23, 180, 317, 1, 10, 102, 351, 82, 115, 40, 5, 854, 21, 137, 11, 352, 901, 365, 117, 197, 0}, - {15, 120, 1, 82, 93, 217, 515, 260, 77, 141, 13, 110, 700, 351, 352, 23, 180, 753, 21, 854, 202, 317, 64, 349, 269, 51, 165, 137, 5, 128, 291, 36}, - {13, 23, 51, 141, 77, 0, 33, 4, 115, 64, 2, 10, 102, 202, 217, 128, 1, 177, 269, 11, 7, 22, 6, 21, 32, 9, 180, 40, 15, 3, 165, 318}, - {478, 264, 1, 520, 98, 724, 9, 682, 223, 664, 21, 759, 13, 772, 604, 100, 23, 363, 411, 48, 821, 5, 0, 905, 909, 447, 31, 265, 88, 101, 166, 39}, - {20, 29, 7, 2, 77, 416, 6, 128, 33, 5, 0, 113, 104, 32, 43, 13, 491, 66, 23, 21, 102, 51, 74, 210, 202, 525, 64, 318, 10, 81, 174, 14}, - {2, 1, 5, 14, 7, 58, 61, 29, 45, 290, 46, 38, 52, 21, 32, 270, 6, 592, 425, 0, 75, 155, 16, 48, 17, 50, 72, 70, 207, 24, 263, 663}, - {80, 6, 17, 209, 106, 26, 483, 113, 19, 469, 255, 25, 378, 27, 495, 833, 45, 64, 161, 2, 61, 667, 76, 742, 32, 90, 445, 5, 814, 65, 887, 119}, - {98, 223, 393, 1, 354, 834, 195, 791, 447, 697, 284, 293, 360, 541, 781, 156, 51, 807, 18, 664, 421, 411, 163, 668, 48, 31, 591, 765, 883, 386, 948, 23}, - {679, 141, 816, 36, 93, 406, 876, 144, 228, 137, 1, 180, 669, 21, 332, 251, 5, 269, 116, 187, 96, 351, 202, 752, 317, 64, 203, 831, 574, 466, 855, 345}, - {15, 515, 700, 13, 1, 753, 2, 0, 23, 341, 3, 5, 4, 10, 51, 11, 33, 165, 6, 7, 115, 197, 12, 64, 180, 153, 217, 77, 9, 569, 901, 317}, - {13, 23, 202, 51, 5, 21, 403, 15, 120, 64, 1, 450, 128, 141, 12, 523, 33, 165, 494, 125, 2, 515, 269, 7, 48, 102, 318, 95, 260, 180, 453, 197}, - {16, 18, 24, 60, 71, 92, 146, 246, 199, 35, 140, 7, 9, 118, 121, 108, 167, 230, 126, 132, 0, 640, 156, 14, 68, 133, 267, 360, 649, 271, 64, 55}, - {269, 141, 678, 177, 202, 77, 128, 318, 33, 947, 40, 120, 291, 349, 102, 137, 64, 352, 210, 864, 461, 498, 13, 342, 196, 23, 275, 450, 954, 0, 205, 111}, - {16, 24, 92, 18, 71, 60, 35, 7, 108, 191, 167, 246, 140, 14, 126, 21, 1, 68, 150, 118, 149, 388, 399, 9, 273, 0, 121, 796, 230, 48, 212, 517}, - {2, 14, 1, 29, 46, 75, 52, 70, 69, 171, 38, 7, 58, 163, 16, 5, 24, 220, 67, 112, 223, 54, 50, 409, 155, 35, 267, 186, 151, 334, 394, 140}, - {9, 252, 100, 265, 166, 39, 88, 404, 329, 0, 1, 520, 382, 812, 101, 593, 264, 274, 604, 676, 30, 118, 68, 553, 18, 664, 363, 23, 639, 865, 21, 411}, - {16, 18, 35, 24, 0, 60, 158, 7, 22, 68, 14, 49, 109, 159, 55, 9, 28, 71, 2, 10, 5, 105, 1, 118, 329, 13, 344, 23, 92, 20, 21, 126}, - {15, 13, 515, 700, 23, 0, 753, 1, 51, 2, 4, 10, 77, 5, 3, 197, 115, 165, 961, 202, 9, 457, 180, 12, 141, 22, 33, 120, 6, 11, 318, 31}, - {160, 93, 251, 137, 317, 1, 180, 36, 120, 217, 345, 752, 617, 352, 332, 10, 96, 531, 498, 318, 365, 202, 141, 269, 816, 341, 901, 679, 143, 35, 83, 968}, - {6, 25, 42, 128, 19, 59, 122, 4, 85, 26, 611, 27, 269, 233, 45, 0, 343, 91, 318, 80, 11, 177, 283, 73, 33, 614, 2, 77, 64, 138, 445, 216}, - {95, 64, 74, 7, 32, 81, 51, 204, 0, 20, 237, 65, 56, 38, 91, 23, 207, 180, 347, 343, 29, 6, 511, 52, 49, 10, 25, 18, 554, 370, 14, 312}, - {202, 120, 326, 260, 450, 817, 494, 318, 137, 403, 128, 77, 523, 553, 859, 5, 704, 1, 15, 23, 13, 576, 7, 16, 615, 51, 682, 291, 515, 0, 21, 234}, - {20, 43, 107, 356, 362, 126, 595, 92, 359, 7, 422, 319, 493, 16, 858, 5, 392, 246, 414, 683, 60, 0, 35, 945, 441, 21, 259, 819, 49, 97, 279, 173}, - {25, 42, 6, 77, 33, 102, 0, 122, 4, 690, 29, 483, 210, 27, 21, 19, 2, 300, 18, 648, 680, 119, 117, 59, 1, 10, 342, 12, 26, 153, 91, 684}, - {31, 44, 299, 116, 125, 242, 456, 599, 22, 393, 0, 144, 492, 28, 268, 1, 9, 963, 301, 105, 367, 36, 127, 170, 384, 434, 206, 98, 918, 10, 13, 93}, - {410, 521, 686, 367, 662, 88, 335, 321, 201, 96, 98, 772, 144, 1, 934, 921, 443, 435, 284, 274, 264, 551, 120, 897, 44, 100, 33, 225, 744, 418, 909, 960}, - {142, 178, 878, 234, 132, 786, 195, 202, 77, 416, 147, 929, 146, 522, 167, 259, 687, 639, 450, 271, 626, 481, 590, 5, 198, 212, 771, 49, 0, 465, 315, 427}, - {254, 39, 131, 9, 272, 0, 578, 716, 310, 224, 30, 49, 105, 827, 518, 829, 166, 333, 616, 228, 613, 846, 101, 219, 1, 31, 890, 98, 159, 938, 252, 100}, - {230, 699, 854, 473, 450, 351, 831, 137, 855, 217, 352, 704, 800, 202, 251, 498, - 160, 144, 206, 203, 317, 201, 253, 752, 418, 141, 1, 332, 82, 180, 443, 36}, - {403, 202, 475, 453, 494, 23, 51, 77, 318, 402, 13, 33, 128, 102, 137, 141, 120, 342, 269, 0, 450, 4, 899, 576, 40, 421, 275, 117, 217, 177, 196, 64}, - {23, 44, 98, 182, 291, 144, 116, 39, 110, 141, 96, 82, 905, 70, 367, 264, 125, 93, 77, 411, 120, 1, 658, 202, 100, 415, 107, 363, 197, 30, 447, 105}, - {15, 515, 1, 13, 700, 23, 77, 120, 0, 753, 51, 180, 202, 141, 260, 5, 21, 115, 2, 137, 128, 9, 450, 197, 365, 269, 12, 326, 110, 102, 318, 7}, - {0, 32, 18, 95, 207, 577, 193, 29, 61, 104, 64, 784, 715, 102, 693, 887, 81, 91, 583, 671, 403, 5, 52, 474, 397, 180, 138, 49, 37, 344, 38, 263}, - {0, 101, 9, 68, 252, 16, 100, 39, 166, 364, 124, 24, 154, 265, 212, 88, 18, 35, 329, 419, 28, 118, 71, 30, 65, 158, 191, 55, 1, 694, 21, 676}, - {16, 24, 191, 18, 35, 71, 167, 118, 149, 68, 212, 9, 0, 1, 21, 108, 101, 92, 60, 375, 302, 7, 589, 755, 124, 674, 350, 48, 562, 246, 13, 363}, - {2, 14, 69, 24, 1, 67, 46, 16, 38, 103, 29, 267, 7, 35, 189, 135, 278, 71, 108, 18, 83, 309, 52, 6, 149, 388, 75, 236, 60, 0, 150, 66}, - {13, 1, 23, 0, 4, 2, 51, 15, 180, 33, 3, 115, 5, 515, 141, 10, 77, 700, 11, 9, 197, 341, 202, 165, 217, 102, 22, 7, 753, 317, 365, 6}, - {447, 1, 698, 411, 31, 363, 98, 5, 919, 4, 156, 125, 759, 691, 13, 64, 459, 354, 44, 21, 48, 293, 30, 914, 478, 225, 82, 120, 2, 922, 848, 839}, - {854, 82, 351, 217, 141, 180, 352, 15, 515, 752, 1, 700, 317, 898, 753, 244, 10, 21, 922, 115, 77, 36, 4, 260, 64, 110, 372, 13, 5, 365, 120, 11}, - {0, 1, 4, 13, 5, 2, 82, 33, 3, 120, 10, 23, 9, 11, 77, 260, 21, 102, 8, 31, 40, 6, 351, 51, 64, 450, 22, 117, 93, 110, 7, 457}, - {51, 13, 403, 23, 12, 475, 1, 2, 21, 5, 453, 523, 115, 202, 817, 7, 0, 99, 3, 6, 450, 120, 494, 64, 22, 95, 49, 899, 10, 37, 32, 141}, - {180, 752, 352, 141, 498, 864, 317, 217, 9, 0, 115, 237, 230, 39, 30, 197, 83, 1, 930, 64, 35, 365, 372, 13, 579, 88, 702, 36, 101, 901, 482, 21}, - {16, 24, 0, 7, 22, 18, 28, 35, 14, 158, 71, 2, 109, 60, 1, 168, 49, 154, 124, 68, 10, 55, 92, 118, 159, 9, 5, 747, 95, 105, 65, 6}, - {15, 515, 700, 753, 0, 23, 1, 13, 341, 51, 120, 77, 141, 4, 137, 33, 260, 82, 202, 9, 180, 5, 351, 2, 291, 10, 11, 901, 21, 115, 40, 128}, - {24, 68, 35, 149, 18, 16, 0, 7, 9, 14, 189, 108, 69, 65, 67, 1, 71, 2, 118, 28, 140, 101, 114, 336, 230, 124, 175, 133, 46, 55, 251, 154}, - {13, 308, 197, 115, 125, 9, 165, 237, 391, 23, 509, 569, 546, 28, 49, 629, 22, 338, 317, 254, 749, 180, 468, 159, 903, 386, 217, 352, 558, 39, 36, 734}, - {64, 90, 32, 217, 77, 4, 141, 216, 172, 312, 128, 13, 86, 33, 597, 147, 352, 95, 5, 115, 875, 22, 59, 11, 102, 14, 182, 437, 97, 177, 874, 707}, - {1, 22, 36, 0, 105, 28, 2, 67, 95, 49, 55, 5, 239, 12, 86, 9, 83, 170, 312, 64, 31, 21, 23, 10, 164, 50, 114, 159, 208, 13, 7, 320}, - {9, 18, 16, 0, 159, 105, 101, 252, 49, 310, 24, 68, 35, 39, 265, 272, 7, 1, 60, 28, 455, 890, 329, 557, 118, 286, 55, 137, 327, 167, 5, 13}, - {129, 123, 214, 249, 618, 17, 5, 257, 205, 184, 460, 76, 2, 162, 769, 245, 90, 106, 128, 45, 119, 1, 183, 4, 3, 12, 179, 64, 6, 229, 99, 209}, - {51, 453, 719, 457, 23, 13, 730, 899, 475, 386, 4, 15, 11, 12, 670, 196, 515, 523, 961, 401, 153, 3, 700, 99, 753, 117, 403, 32, 120, 165, 57, 0}, - {173, 66, 192, 204, 20, 74, 104, 636, 7, 43, 289, 426, 825, 712, 560, 214, 81, 750, 65, 97, 707, 0, 90, 414, 64, 348, 32, 500, 22, 861, 95, 6}, - {13, 23, 1, 51, 5, 21, 141, 120, 202, 15, 165, 2, 515, 180, 12, 125, 0, 64, 82, 700, 197, 269, 32, 48, 260, 128, 115, 93, 9, 137, 33, 753}, - {200, 34, 322, 78, 472, 390, 27, 714, 19, 14, 136, 161, 453, 176, 236, 444, 59, 3, 62, 128, 108, 57, 283, 862, 73, 53, 47, 17, 412, 813, 4, 56}, - {33, 347, 66, 204, 426, 498, 56, 172, 97, 95, 5, 681, 546, 22, 10, 0, 135, 180, 4, 241, 19, 174, 6, 353, 263, 21, 7, 370, 42, 197, 27, 808}, - {131, 224, 219, 187, 385, 371, 258, 442, 254, 737, 31, 98, 836, 127, 924, 944, 44, 871, 908, 716, 39, 827, 201, 574, 116, 137, 36, 1, 276, 242, 578, 616}, - {1, 15, 2, 180, 4, 141, 13, 515, 0, 5, 3, 115, 700, 901, 341, 23, 217, 352, 753, 51, 197, 77, 317, 33, 365, 752, 165, 21, 6, 7, 269, 93}, - {370, 91, 718, 74, 81, 510, 397, 66, 636, 240, 355, 84, 138, 511, 18, 278, 6, 681, 701, 289, 90, 5, 214, 582, 64, 104, 0, 643, 192, 65, 750, 32}, - {15, 515, 700, 753, 13, 120, 1, 0, 165, 2, 197, 23, 260, 180, 4, 82, 51, 386, 8, 5, 12, 10, 3, 141, 351, 341, 326, 9, 450, 7, 64, 6}, - {32, 2, 76, 5, 1, 292, 72, 45, 476, 214, 21, 241, 29, 14, 17, 48, 129, 90, 179, 460, 464, 123, 290, 148, 519, 205, 3, 263, 249, 38, 710, 89}, - {13, 165, 115, 17, 197, 569, 23, 509, 457, 45, 32, 41, 106, 180, 62, 38, 659, 734, 155, 536, 341, 629, 961, 873, 587, 54, 431, 37, 391, 99, 405, 428}, - {68, 24, 35, 16, 0, 101, 9, 124, 154, 71, 149, 65, 18, 175, 28, 118, 7, 55, 302, 108, 92, 14, 22, 346, 1, 39, 429, 252, 375, 364, 10, 67}, - {0, 9, 1, 68, 230, 65, 35, 69, 83, 23, 101, 13, 141, 67, 217, 352, 21, 39, 16, 88, 28, 124, 212, 100, 115, 154, 51, 64, 30, 36, 10, 317}, - {100, 265, 88, 909, 410, 382, 812, 593, 1, 213, 321, 30, 252, 230, 352, 264, 9, 166, 689, 39, 676, 98, 21, 466, 724, 639, 478, 217, 13, 48, 553, 101}, - {113, 61, 198, 904, 43, 0, 5, 37, 899, 325, 20, 59, 33, 523, 204, 725, 817, 389, 470, 329, 222, 40, 174, 58, 22, 453, 690, 848, 122, 104, 788, 105}, - {16, 24, 141, 18, 7, 0, 71, 140, 35, 269, 75, 352, 12, 9, 108, 217, 5, 330, 60, 64, 199, 70, 22, 13, 486, 246, 318, 133, 65, 50, 23, 498}, - {271, 167, 121, 60, 18, 191, 146, 199, 16, 1, 446, 132, 575, 212, 463, 354, 126, 35, 598, 566, 727, 98, 107, 21, 608, 955, 640, 407, 5, 24, 223, 68}, - {15, 515, 115, 217, 700, 13, 317, 753, 141, 180, 33, 23, 110, 120, 4, 341, 82, 10, 1, 260, 365, 36, 64, 854, 351, 21, 51, 352, 137, 77, 40, 0}, - {173, 7, 97, 356, 43, 107, 20, 387, 729, 104, 426, 232, 560, 595, 359, 392, 414, 707, 885, 81, 5, 0, 66, 858, 612, 49, 861, 14, 22, 32, 819, 230}, - {15, 515, 700, 753, 13, 23, 51, 82, 0, 33, 165, 120, 196, 4, 1, 2, 197, 453, 260, 351, 180, 12, 40, 8, 386, 110, 5, 326, 9, 141, 217, 457}, - {9, 100, 120, 30, 77, 795, 137, 82, 202, 39, 264, 827, 578, 127, 0, 166, 373, 318, 18, 326, 141, 260, 1, 450, 731, 31, 33, 395, 217, 291, 341, 254}, - {14, 2, 67, 1, 24, 69, 0, 28, 65, 7, 46, 18, 114, 108, 36, 83, 38, 398, 9, 16, 124, 133, 103, 154, 50, 55, 22, 267, 29, 160, 35, 547}, - {14, 7, 69, 24, 66, 16, 2, 267, 189, 67, 71, 150, 140, 97, 18, 60, 172, 35, 6, 1, 38, 149, 388, 92, 83, 135, 108, 74, 462, 380, 29, 36}, - {15, 515, 700, 753, 1, 13, 2, 0, 4, 341, 5, 3, 23, 365, 11, 117, 180, 10, 12, 33, 134, 115, 77, 197, 217, 165, 6, 7, 317, 102, 21, 9}, - {1, 22, 0, 12, 5, 2, 36, 28, 21, 10, 86, 13, 23, 49, 128, 9, 95, 51, 55, 96, 208, 141, 48, 202, 4, 137, 37, 64, 105, 3, 50, 7}, - {605, 630, 63, 123, 736, 650, 65, 108, 444, 368, 561, 389, 19, 25, 42, 619, 122, 194, 183, 27, 53, 33, 84, 26, 297, 813, 114, 73, 256, 235, 249, 216}, - {127, 39, 9, 0, 31, 371, 98, 254, 1, 385, 395, 44, 30, 836, 187, 131, 100, 116, 284, 578, 299, 166, 28, 21, 737, 16, 276, 272, 23, 49, 137, 935}, - {2, 61, 6, 29, 45, 151, 1, 655, 7, 207, 32, 5, 112, 425, 17, 76, 833, 4, 14, 64, 58, 106, 119, 25, 113, 128, 72, 52, 70, 21, 292, 790}, - {2, 5, 17, 14, 3, 29, 23, 27, 13, 401, 46, 6, 51, 58, 1, 453, 45, 53, 34, 52, 133, 19, 236, 26, 181, 114, 99, 366, 151, 108, 218, 38}, - {31, 22, 170, 1, 301, 44, 127, 98, 36, 28, 55, 105, 239, 0, 338, 116, 512, 299, 293, 125, 86, 10, 242, 395, 2, 13, 9, 64, 841, 23, 95, 685}, - {1, 21, 2, 14, 5, 32, 48, 50, 38, 270, 46, 76, 290, 72, 45, 54, 17, 0, 155, 221, 263, 207, 37, 281, 430, 3, 89, 12, 181, 408, 36, 67}, - {17, 106, 119, 378, 84, 240, 62, 80, 383, 136, 306, 3, 56, 790, 742, 5, 207, 504, 64, 440, 32, 128, 45, 2, 123, 209, 14, 4, 61, 57, 297, 667}, - {13, 15, 1, 515, 23, 2, 0, 700, 4, 115, 3, 51, 5, 10, 753, 180, 33, 341, 217, 11, 165, 317, 365, 197, 6, 77, 40, 64, 22, 9, 7, 117}, - {772, 335, 96, 744, 1, 367, 662, 686, 652, 897, 303, 264, 521, 31, 225, 410, 141, 520, 260, 116, 64, 44, 321, 98, 144, 88, 919, 966, 340, 269, 349, 284}, - {1, 0, 5, 28, 36, 2, 12, 22, 83, 67, 65, 50, 24, 14, 9, 96, 21, 218, 18, 114, 48, 281, 54, 10, 7, 160, 181, 103, 37, 23, 133, 99}, - {25, 6, 145, 42, 138, 81, 174, 348, 525, 544, 26, 74, 85, 280, 287, 648, 746, 91, 66, 0, 29, 396, 204, 64, 636, 90, 122, 194, 355, 104, 65, 233}, - {16, 24, 0, 18, 28, 158, 7, 35, 49, 22, 68, 159, 55, 1, 14, 109, 105, 2, 9, 71, 65, 154, 124, 95, 424, 344, 60, 239, 118, 577, 21, 10}, - {352, 854, 699, 230, 93, 689, 137, 144, 217, 160, 251, 36, 669, 202, 351, 120, 617, 855, 752, 203, 332, 82, 450, 180, 141, 748, 831, 30, 258, 201, 1, 816}, - {15, 13, 515, 700, 1, 2, 0, 753, 23, 5, 4, 3, 51, 33, 10, 115, 11, 317, 217, 77, 180, 341, 117, 165, 6, 134, 197, 153, 64, 9, 102, 7}, - {104, 20, 43, 173, 66, 319, 0, 77, 202, 7, 198, 5, 97, 580, 355, 74, 2, 204, 174, 52, 712, 234, 426, 155, 102, 192, 32, 4, 500, 337, 226, 904}, - {13, 23, 15, 51, 1, 515, 0, 2, 5, 700, 141, 4, 753, 165, 115, 12, 3, 21, 457, 10, 180, 269, 32, 6, 197, 202, 9, 7, 120, 11, 77, 33}, - {15, 515, 700, 753, 0, 1, 13, 2, 23, 115, 4, 317, 8, 3, 5, 51, 9, 341, 10, 217, 22, 365, 33, 457, 6, 180, 77, 901, 197, 120, 18, 7}, - {15, 515, 700, 753, 1, 0, 2, 3, 4, 13, 5, 141, 23, 16, 82, 217, 457, 10, 365, 180, 9, 317, 51, 21, 269, 898, 64, 202, 11, 12, 318, 341}, - {2, 5, 1, 14, 50, 38, 29, 17, 114, 46, 133, 3, 45, 21, 58, 171, 181, 36, 218, 12, 6, 52, 0, 48, 137, 65, 361, 23, 155, 4, 285, 51}, - {0, 68, 9, 65, 101, 124, 35, 212, 16, 149, 154, 100, 24, 1, 114, 336, 67, 589, 252, 39, 71, 189, 69, 562, 18, 13, 30, 398, 118, 88, 265, 264}, - {1, 2, 14, 22, 0, 7, 67, 65, 28, 36, 24, 46, 168, 5, 86, 69, 38, 16, 49, 12, 289, 10, 194, 50, 83, 114, 95, 6, 18, 23, 55, 158}, - {13, 23, 15, 51, 515, 0, 700, 4, 1, 753, 2, 10, 115, 961, 457, 12, 33, 11, 3, 5, 197, 9, 165, 77, 102, 403, 453, 40, 64, 22, 37, 59}, - {15, 515, 700, 753, 0, 1, 2, 13, 23, 5, 51, 901, 8, 9, 180, 3, 7, 82, 4, 120, 12, 10, 719, 341, 6, 31, 141, 457, 197, 22, 115, 93}, - {100, 252, 88, 101, 0, 265, 9, 724, 48, 1, 21, 352, 213, 676, 410, 382, 321, 230, 30, 329, 593, 909, 39, 812, 553, 217, 23, 689, 520, 264, 166, 419}, - {2, 5, 1, 58, 171, 14, 46, 50, 29, 52, 45, 38, 186, 155, 67, 54, 151, 281, 334, 61, 48, 96, 17, 181, 103, 400, 502, 227, 21, 223, 12, 69}, - {23, 120, 13, 1, 202, 141, 51, 21, 165, 128, 260, 15, 5, 269, 137, 64, 33, 180, 82, 318, 93, 197, 77, 326, 515, 125, 110, 700, 450, 2, 32, 48}, - {341, 197, 10, 901, 13, 15, 8, 638, 569, 515, 479, 23, 180, 873, 700, 165, 143, 642, 0, 961, 753, 951, 1, 115, 509, 499, 116, 12, 498, 242, 82, 206}, - {15, 1, 23, 13, 515, 21, 120, 51, 2, 141, 202, 700, 5, 180, 165, 0, 753, 197, 12, 7, 33, 260, 352, 137, 269, 4, 82, 128, 48, 9, 110, 6}, - {2, 29, 50, 58, 1, 6, 5, 52, 14, 262, 17, 46, 27, 53, 151, 34, 171, 74, 324, 26, 38, 309, 45, 113, 19, 96, 287, 396, 223, 67, 73, 583}, - {13, 23, 141, 51, 4, 202, 0, 115, 77, 2, 33, 217, 5, 317, 180, 64, 10, 269, 3, 9, 15, 21, 1, 128, 102, 137, 318, 11, 352, 515, 22, 31}, - {1, 67, 0, 24, 50, 5, 14, 18, 16, 69, 2, 9, 103, 35, 83, 12, 96, 28, 54, 7, 58, 223, 21, 46, 281, 48, 65, 181, 22, 38, 36, 108}, - {13, 23, 141, 51, 77, 64, 202, 115, 33, 102, 128, 4, 0, 269, 10, 21, 217, 32, 180, 318, 9, 137, 2, 11, 22, 291, 7, 177, 16, 31, 165, 197}, - {317, 115, 180, 365, 873, 498, 217, 341, 13, 752, 482, 197, 569, 352, 1, 901, 36, 23, 457, 468, 165, 346, 546, 143, 509, 134, 579, 876, 868, 2, 332, 21}, - {184, 257, 205, 229, 152, 17, 57, 497, 266, 432, 452, 524, 5, 619, 381, 32, 4, 90, 2, 12, 313, 128, 45, 59, 245, 106, 3, 471, 129, 769, 339, 214}, - {13, 23, 1, 0, 15, 2, 4, 515, 51, 3, 10, 33, 5, 700, 115, 180, 753, 77, 11, 365, 341, 217, 9, 6, 197, 7, 102, 165, 317, 40, 22, 64}, - {626, 70, 771, 687, 379, 846, 767, 761, 518, 878, 82, 481, 31, 786, 49, 591, 178, 163, 407, 44, 87, 13, 845, 125, 590, 371, 195, 120, 98, 557, 937, 351}, - {264, 1, 410, 909, 772, 897, 686, 521, 335, 478, 98, 96, 691, 639, 100, 44, 284, 382, 31, 321, 744, 88, 914, 724, 662, 765, 223, 9, 682, 363, 0, 367}, - {13, 23, 1, 2, 0, 15, 51, 515, 5, 10, 4, 33, 115, 77, 180, 700, 3, 141, 217, 40, 6, 753, 317, 197, 64, 165, 7, 11, 102, 9, 341, 22}, - {141, 77, 13, 64, 269, 23, 115, 21, 318, 217, 5, 202, 102, 33, 137, 2, 15, 291, 177, 51, 48, 180, 32, 4, 515, 352, 128, 7, 0, 10, 96, 11}, - {13, 15, 23, 515, 51, 0, 700, 753, 1, 2, 4, 10, 33, 11, 961, 453, 115, 40, 457, 14, 12, 3, 9, 5, 165, 401, 197, 77, 22, 21, 64, 102}, - {1, 22, 0, 36, 2, 31, 5, 12, 13, 105, 28, 9, 49, 86, 141, 21, 23, 95, 128, 55, 44, 115, 170, 10, 164, 98, 180, 4, 137, 239, 83, 51}, - {100, 101, 88, 0, 252, 9, 265, 30, 21, 39, 759, 724, 213, 329, 321, 13, 419, 68, 562, 382, 676, 352, 694, 35, 553, 410, 1, 166, 909, 593, 230, 23}, - {539, 88, 30, 190, 321, 530, 840, 144, 669, 435, 957, 748, 778, 100, 96, 418, 203, 213, 1, 131, 410, 228, 466, 274, 36, 382, 219, 863, 613, 83, 822, 352}, - {7, 97, 92, 173, 298, 107, 43, 314, 232, 140, 16, 356, 20, 387, 729, 362, 126, 359, 246, 14, 230, 501, 426, 441, 0, 5, 560, 66, 104, 779, 35, 60}, - {2, 14, 7, 1, 58, 5, 46, 16, 38, 70, 75, 45, 24, 155, 29, 0, 21, 52, 61, 163, 220, 50, 69, 270, 35, 48, 32, 171, 18, 6, 64, 54}, - {447, 411, 363, 664, 647, 98, 621, 1, 354, 271, 223, 478, 18, 777, 781, 936, 360, 759, 167, 132, 121, 48, 21, 156, 9, 195, 118, 293, 23, 691, 13, 264}, - {2, 1, 14, 65, 36, 67, 0, 7, 46, 22, 69, 5, 38, 24, 28, 6, 83, 29, 86, 114, 168, 50, 124, 208, 12, 18, 108, 10, 194, 484, 103, 16}, - {421, 386, 51, 791, 730, 958, 165, 801, 23, 453, 697, 403, 615, 13, 221, 523, 24, 899, 401, 326, 551, 670, 576, 102, 18, 33, 125, 77, 566, 115, 203, 197}, - {104, 319, 422, 945, 0, 81, 20, 43, 715, 32, 784, 693, 879, 7, 397, 74, 306, 207, 52, 681, 671, 2, 61, 173, 6, 636, 904, 95, 887, 5, 18, 192}, - {2, 29, 1, 46, 14, 52, 70, 262, 6, 26, 50, 67, 75, 96, 309, 38, 103, 112, 58, 19, 5, 163, 145, 83, 74, 220, 223, 357, 24, 69, 331, 25}, - {786, 929, 590, 771, 687, 626, 941, 178, 465, 259, 70, 5, 13, 21, 35, 534, 107, 518, 132, 49, 878, 48, 146, 121, 379, 279, 31, 767, 147, 195, 108, 125}, - {5, 2, 186, 45, 17, 29, 48, 50, 14, 61, 46, 155, 400, 1, 227, 171, 52, 58, 38, 54, 430, 209, 80, 281, 3, 106, 536, 311, 181, 243, 21, 502}, - {0, 32, 64, 95, 817, 494, 342, 403, 207, 202, 194, 389, 453, 365, 312, 180, 316, 5, 690, 237, 848, 577, 450, 61, 102, 523, 475, 289, 49, 241, 65, 482}, - {23, 13, 51, 15, 202, 515, 1, 0, 2, 12, 115, 4, 700, 5, 165, 753, 77, 457, 21, 141, 128, 10, 3, 64, 403, 32, 197, 318, 9, 11, 33, 117}, - {119, 2, 6, 76, 5, 17, 45, 292, 306, 240, 32, 1, 19, 84, 64, 61, 4, 209, 710, 80, 26, 0, 106, 27, 214, 25, 128, 129, 29, 179, 3, 113}, - {15, 515, 700, 1, 753, 0, 13, 23, 180, 120, 51, 2, 5, 33, 165, 197, 9, 450, 7, 260, 115, 523, 4, 12, 202, 141, 82, 77, 21, 102, 8, 6}, - {6, 138, 74, 280, 222, 85, 66, 226, 25, 42, 87, 204, 64, 337, 29, 135, 95, 174, 235, 26, 145, 65, 19, 32, 792, 294, 112, 52, 256, 2, 5, 22}, - {39, 9, 0, 101, 333, 158, 49, 252, 310, 254, 272, 68, 16, 18, 159, 286, 344, 455, 30, 109, 627, 327, 24, 105, 419, 100, 364, 22, 35, 1, 329, 709}, - {21, 5, 32, 14, 2, 1, 38, 72, 76, 54, 17, 3, 48, 221, 270, 0, 45, 46, 12, 181, 37, 89, 36, 50, 540, 290, 430, 10, 4, 741, 99, 23}, - {120, 137, 202, 269, 141, 260, 318, 450, 922, 494, 77, 291, 82, 15, 5, 351, 128, 1, 515, 326, 64, 854, 700, 352, 342, 21, 753, 678, 349, 32, 523, 90}, - {16, 24, 68, 35, 71, 18, 149, 118, 191, 167, 9, 0, 212, 124, 65, 246, 7, 67, 140, 189, 399, 101, 133, 60, 1, 108, 267, 114, 69, 92, 695, 154}, - {28, 0, 9, 67, 1, 22, 109, 36, 55, 65, 194, 114, 39, 83, 49, 69, 2, 35, 103, 50, 158, 208, 86, 420, 168, 289, 505, 24, 7, 185, 5, 323}, - {147, 325, 198, 427, 142, 178, 202, 798, 5, 376, 20, 318, 259, 43, 120, 450, 77, 234, 534, 904, 470, 465, 878, 725, 329, 14, 315, 0, 260, 858, 70, 61}, - {28, 0, 65, 9, 109, 1, 55, 67, 35, 22, 24, 39, 289, 7, 175, 14, 114, 2, 158, 124, 420, 194, 68, 16, 336, 36, 49, 69, 168, 570, 154, 505}, - {141, 180, 13, 115, 1, 23, 4, 269, 2, 202, 0, 317, 217, 51, 15, 5, 21, 352, 77, 318, 3, 752, 197, 10, 165, 365, 137, 341, 9, 515, 33, 64}, - {15, 515, 700, 0, 753, 1, 2, 13, 23, 9, 51, 5, 4, 901, 33, 7, 8, 3, 12, 93, 180, 120, 197, 6, 82, 341, 10, 141, 22, 260, 457, 115}, - {6, 74, 66, 1, 25, 75, 324, 380, 278, 26, 138, 85, 135, 500, 87, 42, 220, 841, 97, 350, 29, 19, 70, 226, 38, 21, 52, 606, 235, 889, 2, 14}, - {13, 23, 51, 12, 4, 15, 453, 0, 457, 1, 403, 165, 115, 3, 11, 2, 64, 5, 401, 10, 515, 37, 202, 33, 40, 32, 99, 475, 197, 700, 308, 17}, - {788, 180, 5, 83, 693, 319, 314, 4, 32, 21, 17, 11, 817, 3, 510, 498, 33, 12, 24, 104, 814, 120, 64, 117, 306, 804, 523, 450, 288, 160, 102, 43}, - {15, 1, 515, 13, 2, 700, 23, 0, 4, 753, 3, 341, 5, 51, 33, 11, 10, 6, 77, 7, 115, 102, 180, 165, 141, 9, 197, 217, 901, 40, 12, 64}, - {101, 18, 9, 167, 520, 16, 0, 118, 60, 212, 604, 364, 694, 24, 55, 252, 68, 917, 264, 35, 1, 121, 146, 363, 39, 100, 806, 5, 21, 166, 191, 28}, - {13, 23, 0, 33, 51, 141, 77, 4, 64, 2, 115, 217, 9, 102, 7, 202, 21, 10, 180, 3, 15, 128, 5, 269, 6, 32, 11, 16, 165, 352, 22, 317}, - {66, 135, 97, 74, 172, 6, 278, 7, 204, 324, 138, 174, 29, 85, 2, 87, 25, 140, 92, 192, 52, 38, 802, 69, 448, 500, 808, 620, 22, 1, 280, 232}, - {2, 24, 69, 6, 97, 7, 1, 0, 14, 298, 423, 66, 67, 29, 150, 25, 189, 267, 124, 74, 607, 18, 36, 81, 172, 33, 83, 38, 52, 273, 71, 809}, - {0, 9, 158, 39, 68, 49, 109, 16, 24, 333, 35, 344, 101, 22, 159, 254, 272, 30, 124, 65, 28, 18, 793, 154, 310, 252, 327, 105, 627, 419, 286, 55}, - {15, 515, 700, 10, 753, 33, 77, 180, 4, 341, 1, 197, 13, 115, 365, 23, 901, 317, 5, 102, 11, 217, 165, 117, 141, 40, 2, 3, 253, 21, 134, 55}, - {100, 166, 382, 478, 265, 264, 88, 39, 98, 1, 404, 274, 9, 593, 724, 921, 639, 438, 363, 682, 411, 31, 30, 812, 96, 447, 821, 905, 252, 0, 223, 435}, - {19, 283, 436, 53, 297, 26, 813, 432, 27, 128, 42, 25, 390, 503, 122, 736, 73, 123, 605, 63, 389, 529, 630, 250, 690, 65, 381, 444, 6, 269, 108, 216}, - {33, 202, 13, 128, 494, 0, 51, 141, 269, 1, 4, 2, 102, 180, 15, 137, 65, 95, 6, 450, 77, 40, 117, 59, 457, 36, 196, 817, 134, 86, 49, 515}, - {18, 16, 60, 68, 101, 167, 191, 118, 35, 121, 9, 212, 55, 0, 126, 1, 24, 647, 199, 146, 520, 107, 628, 621, 363, 71, 21, 28, 346, 92, 806, 727}, - {352, 230, 217, 531, 160, 93, 36, 669, 748, 854, 689, 258, 137, 871, 728, 699, 752, 251, 574, 202, 373, 351, 228, 120, 717, 260, 144, 219, 268, 82, 816, 1}, - {15, 515, 700, 753, 13, 23, 0, 51, 8, 1, 4, 82, 165, 77, 110, 33, 10, 180, 5, 202, 11, 22, 120, 12, 9, 197, 115, 93, 403, 141, 40, 351}, - {0, 9, 101, 217, 35, 88, 352, 100, 39, 175, 30, 68, 562, 752, 13, 317, 252, 115, 180, 197, 64, 1, 83, 141, 65, 213, 165, 230, 194, 36, 28, 265}, - {32, 64, 5, 470, 288, 90, 21, 147, 0, 95, 356, 22, 20, 519, 835, 312, 819, 18, 247, 182, 11, 97, 13, 4, 387, 49, 43, 298, 316, 48, 107, 7}, - {16, 14, 24, 1, 7, 2, 35, 0, 5, 50, 18, 69, 46, 12, 58, 75, 9, 67, 70, 163, 21, 54, 38, 48, 223, 502, 281, 37, 140, 60, 28, 10}, - {18, 265, 9, 252, 39, 195, 354, 411, 1, 16, 132, 101, 121, 682, 167, 203, 5, 363, 146, 593, 35, 333, 21, 271, 60, 13, 100, 0, 156, 327, 7, 520}, - {4, 13, 1, 115, 141, 23, 2, 180, 5, 0, 51, 3, 217, 202, 77, 15, 33, 269, 341, 318, 317, 21, 165, 515, 11, 10, 197, 365, 9, 137, 64, 352}, - {7, 24, 16, 14, 71, 35, 18, 92, 140, 189, 108, 149, 68, 60, 69, 150, 2, 230, 97, 66, 0, 458, 67, 1, 65, 251, 38, 314, 388, 267, 36, 46}, - {1, 22, 31, 36, 0, 2, 44, 5, 141, 105, 180, 170, 12, 64, 13, 98, 86, 55, 23, 21, 28, 164, 115, 127, 10, 125, 128, 4, 9, 239, 352, 197}, - {66, 7, 97, 2, 192, 20, 52, 43, 135, 74, 560, 107, 104, 0, 750, 147, 414, 29, 580, 173, 324, 376, 226, 194, 77, 174, 204, 38, 356, 64, 16, 470}, - {0, 101, 9, 68, 35, 124, 24, 65, 39, 16, 252, 100, 154, 166, 28, 364, 149, 694, 30, 88, 55, 346, 1, 419, 71, 439, 265, 289, 22, 21, 175, 158}, - {39, 9, 100, 30, 127, 0, 737, 856, 31, 836, 827, 254, 98, 931, 166, 88, 93, 1, 44, 190, 131, 228, 120, 395, 625, 385, 863, 264, 219, 373, 110, 28}, - {5, 17, 2, 3, 21, 45, 14, 155, 48, 32, 38, 1, 328, 181, 186, 46, 23, 51, 12, 61, 227, 29, 106, 54, 99, 133, 62, 832, 13, 37, 514, 543}, - {131, 613, 30, 224, 228, 716, 274, 100, 827, 406, 219, 856, 39, 190, 31, 88, 1, 166, 9, 44, 829, 863, 931, 93, 0, 187, 625, 924, 127, 98, 137, 254}, - {352, 217, 64, 141, 752, 269, 180, 864, 437, 372, 954, 115, 498, 177, 77, 349, 317, 318, 579, 291, 947, 197, 247, 0, 23, 717, 237, 304, 128, 457, 776, 678}, - {141, 217, 180, 317, 352, 115, 15, 341, 1, 23, 13, 365, 515, 752, 2, 64, 0, 5, 498, 700, 372, 165, 51, 237, 753, 77, 244, 197, 137, 4, 21, 253}, - {5, 2, 17, 14, 1, 45, 3, 38, 21, 29, 181, 58, 46, 48, 50, 133, 114, 171, 61, 155, 32, 6, 186, 281, 361, 12, 36, 54, 4, 13, 52, 514}, - {6, 2, 119, 25, 790, 4, 45, 483, 655, 113, 1, 29, 76, 26, 32, 19, 887, 17, 128, 0, 292, 833, 59, 61, 106, 64, 77, 814, 14, 151, 84, 42}, - {13, 23, 2, 0, 51, 4, 1, 115, 141, 3, 5, 180, 33, 217, 77, 9, 202, 11, 7, 15, 10, 6, 317, 64, 21, 197, 515, 165, 102, 128, 22, 269}, - {13, 23, 51, 202, 21, 5, 1, 15, 141, 165, 120, 2, 115, 12, 32, 0, 515, 128, 318, 64, 125, 700, 4, 403, 197, 453, 180, 457, 3, 7, 10, 6}, - {9, 39, 31, 30, 0, 127, 1, 44, 100, 131, 98, 187, 385, 276, 88, 442, 219, 908, 254, 116, 49, 166, 935, 28, 201, 36, 141, 827, 137, 299, 284, 21}, - {22, 49, 28, 109, 9, 185, 105, 95, 1, 131, 159, 272, 36, 67, 86, 254, 39, 55, 35, 0, 505, 31, 83, 169, 208, 327, 286, 98, 168, 535, 312, 708}, - {5, 1, 2, 21, 0, 12, 48, 22, 10, 14, 36, 3, 32, 17, 23, 54, 86, 38, 4, 51, 13, 37, 137, 50, 65, 281, 114, 45, 28, 99, 58, 202}, - {141, 269, 352, 82, 217, 351, 180, 854, 372, 922, 752, 1, 15, 260, 317, 318, 515, 202, 64, 700, 120, 349, 954, 753, 77, 35, 67, 717, 898, 137, 365, 115}, - {144, 203, 613, 418, 326, 406, 96, 669, 137, 679, 1, 228, 494, 822, 840, 317, 36, 83, 855, 160, 817, 859, 856, 816, 217, 831, 345, 93, 876, 77, 44, 251}, - {15, 13, 515, 23, 700, 753, 51, 1, 33, 0, 202, 21, 2, 5, 180, 141, 120, 165, 217, 82, 12, 117, 4, 352, 269, 197, 115, 32, 3, 9, 134, 260}, - {13, 23, 115, 1, 0, 51, 4, 77, 2, 33, 15, 141, 10, 5, 341, 180, 515, 3, 217, 202, 9, 365, 317, 64, 700, 102, 11, 165, 197, 22, 753, 7}, - {531, 943, 373, 160, 728, 93, 206, 260, 261, 559, 964, 269, 717, 535, 332, 384, - 365, 295, 110, 533, 141, 10, 180, 352, 244, 137, 120, 55, 959, 564, 36, 253}, - {1, 31, 36, 170, 22, 55, 44, 10, 86, 64, 127, 0, 2, 98, 301, 164, 740, 338, 237, 143, 5, 125, 116, 13, 242, 141, 299, 180, 23, 169, 105, 12}, - {13, 23, 141, 77, 51, 4, 64, 32, 33, 202, 115, 269, 102, 128, 21, 0, 177, 180, 318, 90, 40, 10, 7, 5, 137, 15, 217, 352, 9, 291, 59, 22}, - {202, 120, 260, 318, 77, 15, 450, 269, 1, 82, 33, 23, 141, 13, 51, 515, 351, 128, 700, 5, 64, 326, 137, 21, 102, 110, 753, 494, 93, 523, 817, 165}, - {523, 899, 102, 33, 730, 15, 23, 403, 719, 117, 153, 13, 515, 51, 475, 4, 700, 5, 453, 817, 196, 753, 494, 40, 202, 120, 1, 2, 450, 457, 17, 421}, - {202, 403, 494, 450, 120, 817, 523, 475, 318, 453, 33, 402, 128, 77, 13, 51, 260, 576, 342, 102, 15, 23, 515, 4, 700, 5, 82, 753, 326, 210, 137, 615}, - {2, 29, 112, 66, 7, 52, 70, 151, 58, 87, 135, 5, 74, 226, 307, 6, 14, 186, 1, 45, 549, 172, 644, 25, 113, 287, 46, 155, 334, 64, 294, 97}, - {1, 77, 349, 291, 260, 120, 652, 102, 5, 39, 64, 269, 9, 33, 340, 342, 13, 98, 888, 698, 23, 296, 100, 318, 51, 202, 87, 137, 638, 128, 50, 850}, - {1, 13, 15, 2, 0, 4, 23, 515, 5, 141, 180, 3, 700, 341, 115, 51, 753, 269, 77, 901, 197, 352, 217, 33, 21, 11, 365, 6, 165, 202, 7, 317}, - {7, 14, 16, 2, 46, 5, 70, 58, 1, 38, 24, 35, 92, 163, 0, 75, 21, 18, 50, 54, 140, 12, 87, 220, 155, 69, 171, 23, 60, 9, 13, 307}, - {2, 29, 66, 226, 135, 7, 87, 74, 52, 278, 6, 75, 222, 220, 294, 70, 97, 1, 145, 25, 172, 262, 324, 38, 69, 112, 331, 92, 5, 14, 140, 26}, - {15, 515, 700, 753, 33, 77, 117, 4, 1, 102, 134, 40, 153, 11, 13, 196, 217, 21, 5, 51, 23, 115, 32, 3, 2, 202, 141, 137, 128, 291, 48, 177}, - {15, 217, 82, 515, 351, 141, 317, 1, 13, 700, 260, 77, 110, 120, 115, 854, 23, 753, 180, 51, 21, 36, 137, 922, 5, 64, 365, 352, 291, 202, 93, 341}, - {31, 190, 30, 373, 120, 110, 863, 88, 44, 127, 908, 856, 260, 318, 82, 98, 93, 187, 836, 717, 935, 39, 442, 131, 141, 254, 228, 219, 1, 968, 77, 116}, - {23, 13, 308, 9, 165, 115, 51, 21, 401, 125, 49, 39, 197, 391, 159, 254, 217, 743, 28, 438, 773, 629, 558, 386, 341, 95, 32, 317, 876, 679, 109, 166}, - {49, 5, 43, 165, 7, 0, 21, 104, 125, 22, 173, 422, 64, 13, 623, 102, 20, 18, 314, 95, 91, 141, 23, 31, 193, 51, 391, 900, 779, 558, 92, 232}, - {1, 4, 13, 2, 15, 0, 23, 515, 77, 3, 341, 33, 5, 700, 115, 51, 202, 753, 141, 180, 11, 10, 102, 217, 6, 901, 40, 7, 197, 318, 317, 365}, - {93, 843, 295, 120, 36, 160, 206, 261, 10, 137, 567, 110, 384, 141, 943, 268, 201, 332, 258, 55, 1, 180, 64, 116, 44, 144, 699, 203, 282, 31, 260, 373}, - {81, 7, 192, 426, 43, 173, 172, 104, 879, 91, 5, 712, 715, 526, 6, 97, 568, 95, 448, 66, 33, 861, 560, 32, 49, 20, 0, 636, 232, 825, 2, 22}, - {475, 403, 51, 453, 33, 102, 13, 23, 494, 202, 0, 196, 15, 77, 153, 18, 4, 117, 515, 450, 318, 22, 730, 128, 700, 421, 65, 753, 269, 402, 134, 817}, - {141, 269, 260, 318, 202, 120, 352, 349, 82, 351, 1, 5, 854, 137, 64, 291, 15, 922, 180, 851, 32, 77, 515, 372, 21, 700, 7, 217, 13, 947, 33, 753}, - {15, 515, 700, 753, 1, 13, 0, 2, 4, 23, 3, 5, 180, 115, 197, 12, 51, 165, 217, 10, 961, 9, 6, 141, 352, 21, 8, 7, 33, 77, 457, 120}, - {39, 166, 9, 30, 0, 101, 274, 404, 252, 333, 190, 100, 158, 438, 310, 88, 68, 265, 656, 21, 1, 530, 329, 344, 49, 539, 625, 254, 13, 131, 48, 419}, - {0, 1, 28, 9, 22, 12, 65, 83, 67, 36, 5, 2, 50, 55, 96, 109, 16, 13, 24, 23, 21, 238, 49, 18, 285, 160, 128, 39, 69, 114, 7, 323}, - {15, 515, 700, 1, 0, 753, 23, 2, 13, 51, 5, 180, 115, 6, 3, 9, 197, 12, 457, 120, 7, 165, 901, 82, 4, 21, 8, 141, 31, 33, 719, 341}, - {9, 39, 30, 0, 28, 166, 22, 49, 180, 1, 352, 35, 317, 158, 88, 141, 498, 131, 115, 345, 752, 128, 228, 217, 100, 83, 219, 930, 13, 251, 365, 36}, - {5, 61, 45, 2, 80, 29, 311, 209, 6, 17, 58, 1, 151, 106, 454, 667, 243, 70, 52, 496, 287, 592, 255, 738, 64, 74, 483, 14, 27, 32, 112, 19}, - {31, 125, 22, 44, 299, 456, 685, 242, 599, 116, 170, 28, 0, 1, 492, 393, 506, 144, 558, 10, 268, 301, 239, 23, 13, 36, 963, 367, 55, 206, 105, 95}, - {187, 258, 926, 574, 839, 93, 228, 860, 406, 219, 871, 160, 137, 531, 224, 116, 120, 902, 669, 201, 36, 131, 44, 144, 843, 533, 318, 384, 442, 1, 434, 268}, - {7, 107, 75, 16, 87, 9, 64, 177, 24, 18, 291, 77, 349, 141, 60, 232, 23, 0, 51, 269, 132, 14, 5, 21, 70, 32, 678, 112, 126, 121, 71, 947}, - {15, 515, 700, 753, 1, 0, 2, 13, 5, 3, 23, 180, 4, 115, 901, 51, 6, 8, 961, 9, 7, 10, 12, 82, 197, 22, 141, 341, 33, 120, 365, 457}, - {13, 23, 51, 1, 5, 202, 2, 12, 15, 21, 165, 141, 0, 115, 3, 4, 32, 515, 197, 10, 180, 318, 128, 120, 64, 700, 6, 7, 403, 269, 457, 137}, - {1, 2, 0, 77, 64, 3, 141, 13, 33, 15, 23, 10, 6, 102, 5, 515, 180, 4, 117, 7, 700, 165, 11, 217, 269, 40, 753, 115, 128, 17, 197, 134}, - {345, 531, 332, 269, 260, 317, 717, 752, 373, 351, 180, 352, 728, 82, 10, 365, 160, 533, 217, 143, 498, 251, 244, 93, 341, 901, 36, 1, 141, 898, 55, 864}, - {16, 7, 33, 189, 92, 77, 388, 60, 140, 35, 102, 24, 14, 1, 230, 21, 150, 117, 733, 314, 18, 915, 71, 13, 108, 134, 5, 64, 69, 2, 98, 22}, - {142, 202, 234, 178, 5, 786, 77, 49, 70, 0, 416, 450, 639, 878, 1, 48, 21, 929, 147, 259, 315, 455, 198, 120, 12, 481, 163, 113, 846, 329, 318, 22}, - {81, 715, 192, 0, 173, 712, 681, 104, 636, 91, 74, 20, 750, 370, 7, 718, 95, 879, 22, 43, 825, 560, 422, 64, 207, 49, 172, 18, 397, 10, 426, 319}, - {13, 23, 15, 51, 515, 0, 700, 753, 4, 1, 961, 2, 10, 115, 457, 11, 33, 453, 3, 5, 9, 40, 12, 197, 165, 77, 401, 475, 64, 102, 22, 569}, - {64, 297, 5, 445, 95, 61, 250, 311, 80, 34, 17, 312, 45, 2, 86, 472, 58, 14, 180, 53, 22, 151, 869, 738, 247, 237, 29, 1, 128, 165, 21, 288}, - {16, 24, 18, 71, 7, 35, 118, 92, 14, 154, 60, 68, 0, 149, 28, 302, 124, 150, 55, 175, 2, 9, 97, 1, 429, 20, 108, 273, 22, 65, 43, 126}, - {195, 360, 156, 771, 132, 163, 626, 687, 591, 371, 883, 146, 121, 846, 70, 586, 379, 13, 293, 98, 407, 48, 761, 296, 354, 18, 31, 1, 55, 49, 21, 105}, - {202, 13, 77, 23, 318, 33, 51, 0, 4, 141, 5, 21, 217, 32, 291, 102, 64, 128, 15, 10, 9, 494, 269, 137, 515, 403, 1, 31, 117, 700, 120, 317}, - {7, 192, 97, 81, 172, 66, 426, 173, 43, 715, 712, 232, 861, 879, 104, 330, 568, 298, 74, 893, 885, 526, 387, 825, 92, 140, 91, 14, 636, 6, 5, 448}, - {2, 1, 14, 6, 67, 7, 65, 69, 24, 36, 66, 124, 108, 83, 38, 29, 22, 86, 0, 18, 484, 5, 28, 46, 12, 10, 25, 302, 150, 16, 650, 74}, - {33, 77, 13, 202, 102, 4, 0, 23, 128, 51, 141, 64, 318, 22, 403, 269, 137, 10, 15, 40, 494, 117, 32, 59, 11, 153, 1, 21, 177, 196, 515, 115}, - {269, 141, 318, 77, 349, 291, 217, 202, 33, 15, 372, 304, 515, 22, 102, 177, 351, 700, 352, 120, 5, 137, 10, 317, 260, 753, 64, 851, 854, 403, 49, 21}, - {6, 74, 66, 85, 138, 25, 87, 42, 135, 26, 226, 222, 280, 29, 75, 500, 220, 278, 792, 70, 19, 2, 1, 294, 204, 64, 32, 145, 853, 112, 52, 174}, - {9, 0, 105, 39, 16, 18, 1, 101, 272, 31, 127, 98, 24, 518, 333, 252, 310, 28, 68, 737, 846, 371, 158, 916, 938, 49, 30, 7, 286, 35, 301, 455}, - {2, 1, 14, 67, 24, 46, 83, 108, 69, 29, 38, 103, 114, 36, 6, 133, 18, 0, 28, 7, 65, 52, 236, 75, 50, 398, 5, 309, 135, 16, 278, 160}, - {22, 1, 28, 105, 49, 95, 0, 2, 67, 55, 36, 239, 168, 159, 65, 35, 14, 170, 320, 164, 9, 7, 10, 5, 114, 12, 83, 64, 194, 109, 24, 301}, - {7, 66, 172, 97, 92, 140, 232, 568, 298, 14, 192, 314, 16, 380, 135, 324, 2, 330, 74, 38, 357, 448, 126, 69, 35, 5, 107, 6, 387, 60, 204, 572}, - {2, 29, 1, 14, 5, 6, 46, 133, 114, 50, 52, 26, 218, 108, 19, 13, 366, 236, 27, 45, 70, 17, 58, 23, 86, 51, 137, 65, 112, 38, 25, 12}, - {6, 1, 74, 25, 2, 26, 29, 66, 42, 19, 75, 14, 388, 67, 108, 70, 52, 85, 103, 65, 38, 138, 357, 133, 114, 594, 324, 516, 603, 96, 309, 69}, - {22, 9, 28, 1, 36, 49, 109, 105, 86, 95, 131, 31, 169, 39, 0, 141, 272, 159, 44, 55, 98, 180, 13, 30, 185, 115, 83, 128, 352, 137, 64, 208}, - {203, 822, 326, 23, 77, 859, 403, 494, 576, 39, 473, 182, 33, 1, 691, 100, 18, 217, 13, 817, 411, 447, 363, 102, 93, 966, 96, 478, 291, 704, 310, 120}, - {15, 515, 700, 753, 33, 77, 117, 4, 102, 134, 115, 153, 13, 1, 40, 217, 11, 196, 341, 2, 5, 3, 23, 317, 365, 0, 21, 291, 32, 51, 12, 569}, - {15, 515, 700, 753, 13, 0, 23, 1, 8, 82, 51, 165, 197, 120, 180, 2, 9, 33, 4, 110, 5, 12, 10, 260, 351, 386, 141, 7, 457, 475, 93, 901}, - {1, 23, 13, 15, 51, 0, 21, 2, 515, 5, 141, 180, 120, 165, 700, 202, 197, 4, 753, 12, 33, 9, 7, 82, 115, 93, 3, 352, 260, 6, 110, 48}, - {15, 515, 700, 753, 0, 1, 2, 5, 3, 4, 8, 13, 180, 341, 10, 23, 7, 6, 9, 51, 77, 197, 961, 115, 165, 82, 120, 31, 22, 202, 457, 217}, - {559, 661, 922, 564, 141, 533, 10, 317, 373, 110, 143, 269, 244, 260, 332, 261, - 93, 642, 752, 295, 351, 876, 531, 843, 180, 206, 728, 384, 352, 1, 434, 120}, - {15, 515, 1, 0, 700, 2, 13, 23, 753, 5, 51, 180, 3, 165, 12, 6, 197, 115, 4, 9, 7, 21, 719, 8, 457, 82, 141, 120, 33, 22, 901, 10}, - {198, 234, 0, 325, 5, 77, 202, 416, 20, 147, 32, 43, 639, 315, 49, 61, 450, 455, 142, 21, 113, 230, 22, 318, 725, 342, 207, 13, 95, 904, 494, 10}, - {447, 264, 363, 9, 411, 676, 682, 1, 156, 664, 821, 478, 166, 354, 812, 39, 100, 905, 382, 897, 98, 18, 759, 404, 31, 101, 724, 5, 265, 223, 88, 13}, - {24, 14, 69, 16, 35, 18, 2, 7, 108, 189, 71, 67, 267, 149, 1, 46, 68, 83, 38, 140, 0, 236, 251, 9, 388, 60, 133, 103, 65, 28, 29, 50}, - {16, 7, 35, 20, 14, 18, 109, 2, 43, 120, 107, 60, 1, 121, 326, 907, 553, 77, 13, 147, 23, 82, 68, 260, 0, 403, 5, 24, 202, 126, 265, 199}, - {30, 131, 187, 276, 31, 44, 613, 442, 39, 9, 190, 228, 1, 839, 116, 935, 908, 219, 127, 88, 244, 224, 110, 137, 93, 201, 98, 141, 36, 567, 0, 856}, - {98, 223, 1, 393, 812, 265, 100, 421, 593, 834, 697, 48, 51, 410, 791, 382, 21, 88, 31, 284, 9, 125, 96, 293, 230, 23, 213, 217, 656, 689, 541, 5}, - {98, 51, 127, 219, 616, 258, 105, 293, 395, 421, 924, 512, 31, 308, 23, 201, 116, 44, 301, 272, 763, 276, 125, 13, 453, 170, 401, 295, 261, 944, 115, 567}, - {253, 110, 951, 352, 811, 206, 332, 180, 141, 244, 282, 10, 854, 417, 642, 638, - 559, 752, 143, 911, 260, 55, 93, 533, 499, 498, 661, 120, 351, 959, 564, 341}, - {49, 9, 159, 254, 272, 158, 0, 131, 28, 39, 627, 105, 327, 286, 22, 518, 688, 578, 68, 347, 374, 101, 224, 424, 95, 35, 219, 24, 16, 364, 65, 344}, - {105, 22, 131, 272, 98, 286, 327, 109, 374, 239, 28, 95, 320, 219, 9, 224, 55, 127, 187, 36, 578, 169, 64, 185, 538, 1, 159, 10, 371, 634, 49, 616}, - {691, 478, 340, 1, 658, 914, 724, 363, 744, 698, 156, 772, 411, 296, 682, 447, 9, 284, 335, 98, 264, 303, 909, 21, 354, 410, 225, 13, 664, 686, 88, 919}, - {16, 24, 35, 18, 71, 7, 140, 108, 189, 267, 92, 60, 14, 230, 68, 69, 9, 1, 149, 46, 246, 191, 388, 167, 2, 0, 118, 236, 133, 21, 674, 5}, - {9, 0, 127, 31, 98, 371, 395, 39, 737, 49, 1, 44, 385, 272, 512, 28, 293, 242, 836, 761, 254, 299, 101, 16, 187, 22, 116, 158, 159, 131, 18, 21}, - {16, 18, 68, 0, 60, 35, 9, 101, 252, 28, 118, 24, 419, 55, 7, 109, 604, 71, 39, 121, 22, 364, 14, 158, 191, 167, 925, 126, 329, 21, 92, 49}, - {116, 268, 203, 93, 206, 692, 551, 31, 417, 940, 499, 8, 473, 44, 202, 523, 959, 0, 120, 137, 559, 22, 450, 403, 576, 10, 728, 299, 13, 326, 51, 1}, - {225, 459, 744, 1, 919, 914, 691, 330, 622, 21, 141, 223, 5, 284, 934, 335, 88, 538, 340, 82, 385, 839, 363, 120, 478, 98, 48, 30, 64, 32, 686, 166}, - {5, 1, 2, 0, 14, 36, 21, 281, 12, 48, 50, 67, 22, 28, 54, 83, 24, 218, 38, 10, 181, 9, 32, 18, 65, 58, 45, 114, 430, 17, 99, 37}, - {137, 450, 202, 704, 120, 260, 326, 318, 968, 269, 851, 403, 291, 77, 23, 141, 182, 310, 494, 373, 351, 457, 82, 890, 349, 110, 60, 128, 817, 678, 105, 96}, - {15, 515, 700, 753, 4, 33, 13, 23, 77, 5, 40, 11, 102, 93, 1, 21, 110, 51, 82, 117, 141, 2, 10, 8, 32, 64, 120, 31, 202, 3, 217, 115}, - {15, 13, 1, 23, 515, 0, 51, 2, 700, 5, 753, 21, 180, 141, 165, 3, 12, 115, 197, 4, 7, 6, 457, 9, 352, 202, 33, 8, 719, 120, 77, 341}, - {219, 127, 258, 98, 276, 201, 131, 395, 944, 293, 116, 284, 567, 31, 242, 105, 137, 935, 295, 44, 403, 860, 51, 224, 576, 456, 9, 371, 578, 475, 202, 512}, - {16, 7, 18, 35, 60, 0, 14, 20, 118, 28, 68, 22, 2, 24, 1, 92, 158, 107, 5, 49, 154, 126, 109, 12, 43, 10, 55, 6, 677, 71, 21, 168}, - {93, 728, 531, 160, 559, 373, 574, 120, 295, 860, 533, 269, 717, 260, 926, 902, - 258, 318, 36, 201, 261, 434, 851, 137, 617, 141, 187, 352, 843, 384, 332, 251}, - {28, 0, 1, 9, 22, 109, 83, 39, 49, 12, 36, 67, 55, 5, 96, 2, 128, 30, 158, 69, 21, 23, 160, 208, 35, 13, 65, 323, 50, 141, 194, 238}, - {23, 13, 51, 1, 5, 15, 141, 21, 0, 2, 165, 515, 202, 700, 12, 197, 180, 120, 32, 115, 4, 753, 64, 9, 7, 269, 6, 3, 125, 386, 48, 453}, - {5, 21, 13, 49, 14, 20, 7, 23, 43, 32, 1, 0, 652, 48, 713, 22, 38, 2, 16, 132, 955, 107, 12, 279, 24, 888, 197, 640, 70, 303, 18, 638}, - {9, 0, 28, 39, 1, 30, 35, 101, 22, 67, 83, 141, 49, 175, 36, 68, 55, 88, 13, 251, 10, 69, 23, 158, 180, 115, 64, 100, 217, 65, 345, 166}, - {260, 120, 82, 269, 5, 450, 351, 1, 202, 141, 854, 13, 77, 922, 32, 33, 137, 4, 23, 125, 291, 21, 15, 515, 165, 349, 177, 700, 318, 326, 180, 753}, - {121, 16, 18, 35, 363, 101, 60, 20, 107, 14, 68, 259, 621, 55, 604, 43, 7, 252, 9, 364, 126, 0, 167, 191, 5, 407, 132, 28, 199, 419, 146, 10}, - {13, 23, 51, 1, 15, 0, 2, 141, 5, 515, 12, 21, 700, 115, 165, 180, 4, 753, 3, 197, 202, 32, 9, 120, 7, 8, 6, 11, 37, 10, 457, 269}, - {201, 144, 206, 443, 418, 203, 435, 96, 335, 459, 187, 1, 88, 332, 330, 321, 269, 934, 30, 372, 822, 521, 268, 326, 44, 523, 382, 141, 410, 264, 494, 473}, - {31, 44, 276, 201, 116, 131, 284, 662, 567, 144, 9, 489, 98, 295, 268, 434, 0, 30, 137, 39, 93, 1, 187, 22, 219, 918, 110, 299, 141, 36, 224, 384}, - {520, 478, 664, 1, 264, 604, 9, 167, 777, 759, 411, 0, 806, 724, 48, 21, 101, 68, 647, 936, 363, 223, 118, 682, 410, 18, 100, 16, 252, 98, 265, 13}, - {23, 70, 21, 87, 60, 75, 120, 182, 163, 379, 92, 18, 7, 937, 71, 121, 446, 132, 24, 98, 931, 126, 107, 77, 795, 195, 115, 44, 411, 146, 51, 850}, - {39, 9, 0, 737, 127, 31, 846, 98, 1, 827, 105, 310, 371, 30, 254, 100, 44, 18, 395, 242, 272, 101, 385, 916, 836, 16, 265, 131, 938, 93, 166, 557}, - {279, 20, 43, 126, 107, 7, 92, 16, 356, 362, 60, 595, 246, 359, 598, 35, 0, 683, 939, 653, 121, 97, 125, 441, 399, 392, 150, 199, 48, 230, 14, 649}, - {206, 417, 93, 959, 499, 728, 8, 559, 120, 473, 137, 141, 10, 564, 31, 260, 44, 450, 203, 341, 253, 244, 373, 116, 143, 638, 268, 180, 352, 110, 318, 940}, - {259, 465, 147, 132, 590, 687, 534, 199, 581, 146, 941, 427, 107, 640, 279, 178, 121, 5, 195, 150, 522, 955, 198, 35, 786, 929, 798, 142, 1, 21, 325, 626}, - {523, 15, 120, 450, 202, 515, 403, 51, 817, 700, 13, 753, 23, 457, 33, 899, 128, 64, 730, 102, 494, 342, 115, 719, 453, 196, 49, 99, 318, 421, 308, 5}, - {141, 559, 10, 244, 365, 564, 661, 180, 253, 143, 752, 110, 55, 317, 533, 341, 901, 93, 373, 206, 535, 160, 82, 922, 260, 36, 531, 964, 352, 332, 261, 197}, - {219, 258, 98, 127, 276, 964, 943, 137, 843, 535, 201, 935, 131, 860, 261, 295, 284, 567, 206, 44, 116, 31, 253, 492, 203, 332, 160, 615, 36, 93, 55, 692}, - {0, 319, 422, 207, 945, 693, 577, 887, 32, 804, 95, 344, 104, 904, 61, 20, 5, 43, 7, 725, 113, 510, 306, 102, 49, 263, 153, 426, 33, 83, 22, 9}, - {1, 22, 0, 5, 12, 2, 36, 21, 28, 86, 49, 105, 9, 10, 23, 13, 141, 95, 31, 55, 128, 37, 51, 4, 83, 202, 3, 64, 96, 7, 32, 44}, - {15, 515, 13, 700, 1, 0, 753, 2, 23, 3, 4, 5, 51, 10, 115, 197, 6, 33, 12, 9, 165, 7, 8, 77, 11, 961, 180, 269, 141, 22, 120, 457}, - {15, 1, 23, 120, 77, 13, 515, 51, 141, 202, 700, 180, 110, 137, 260, 753, 326, 5, 128, 102, 0, 21, 2, 165, 269, 33, 197, 450, 318, 217, 93, 115}, - {15, 515, 1, 700, 0, 753, 13, 2, 23, 180, 51, 5, 120, 4, 9, 115, 197, 12, 7, 165, 21, 33, 6, 82, 3, 8, 523, 901, 31, 141, 457, 260}, - {16, 18, 24, 7, 92, 35, 60, 75, 9, 13, 71, 14, 0, 108, 50, 21, 126, 121, 1, 140, 23, 5, 132, 146, 2, 12, 128, 10, 64, 141, 70, 87}, - {180, 341, 901, 15, 515, 1, 365, 700, 0, 2, 197, 753, 115, 4, 10, 13, 752, 5, 3, 8, 165, 317, 141, 23, 143, 873, 44, 31, 569, 55, 93, 6}, - {9, 0, 175, 35, 101, 28, 39, 67, 68, 1, 65, 83, 30, 69, 364, 336, 22, 114, 55, 124, 194, 158, 100, 289, 252, 166, 64, 345, 103, 36, 50, 88}, - {64, 165, 180, 197, 115, 247, 217, 237, 21, 13, 32, 316, 22, 141, 352, 72, 288, 304, 95, 225, 76, 391, 386, 16, 468, 90, 49, 35, 365, 640, 372, 23}, - {15, 515, 700, 13, 753, 1, 0, 2, 23, 4, 5, 3, 115, 51, 141, 197, 12, 10, 180, 961, 7, 9, 21, 33, 217, 6, 8, 165, 457, 11, 77, 341}, - {132, 121, 199, 146, 60, 279, 493, 640, 407, 598, 126, 195, 534, 581, 955, 590, 107, 5, 150, 35, 522, 49, 259, 16, 18, 360, 156, 0, 147, 362, 21, 167}, - {0, 1, 28, 9, 22, 5, 36, 12, 65, 24, 67, 96, 2, 83, 18, 50, 114, 55, 21, 16, 7, 10, 23, 14, 13, 160, 137, 51, 48, 218, 103, 69}, - {93, 120, 957, 77, 30, 968, 459, 110, 137, 160, 613, 102, 202, 352, 373, 141, 31, 372, 217, 330, 190, 318, 269, 260, 203, 44, 28, 473, 228, 177, 863, 704}, - {15, 515, 700, 0, 753, 1, 13, 23, 2, 51, 5, 9, 120, 82, 4, 7, 901, 197, 10, 8, 260, 180, 341, 12, 33, 6, 3, 523, 165, 102, 115, 141}, - {206, 417, 8, 141, 499, 44, 244, 93, 31, 10, 137, 253, 559, 116, 728, 144, 120, 564, 269, 638, 203, 352, 143, 260, 341, 752, 268, 717, 951, 180, 160, 110}, - {530, 254, 228, 1, 96, 21, 406, 39, 827, 31, 669, 840, 613, 829, 137, 679, 166, 98, 23, 51, 960, 438, 131, 93, 48, 224, 219, 317, 310, 36, 876, 190}, - {15, 515, 700, 753, 13, 457, 0, 197, 719, 1, 165, 82, 23, 8, 120, 730, 2, 10, 12, 180, 134, 5, 9, 141, 260, 4, 351, 51, 115, 3, 341, 899}, - {0, 16, 68, 9, 24, 28, 18, 35, 252, 109, 39, 419, 124, 158, 154, 55, 101, 71, 22, 118, 60, 7, 49, 65, 333, 14, 1, 10, 329, 364, 677, 346}, - {1, 15, 13, 23, 515, 51, 120, 0, 700, 180, 2, 165, 5, 753, 141, 197, 21, 33, 202, 102, 260, 4, 9, 12, 7, 326, 137, 450, 115, 6, 82, 110}, - {535, 253, 352, 564, 110, 365, 82, 180, 341, 10, 854, 533, 55, 898, 244, 901, - 873, 141, 752, 143, 642, 559, 498, 317, 36, 951, 115, 964, 638, 282, 661, 197}, - {31, 44, 125, 338, 116, 64, 242, 36, 1, 10, 55, 22, 456, 237, 180, 13, 299, 164, 506, 86, 23, 165, 558, 143, 0, 762, 492, 479, 844, 546, 93, 8}, - {13, 23, 4, 1, 202, 2, 0, 51, 115, 77, 141, 180, 5, 15, 217, 3, 33, 11, 515, 317, 9, 10, 102, 21, 700, 341, 365, 318, 269, 64, 32, 128}, - {9, 39, 0, 166, 68, 101, 28, 364, 30, 158, 562, 35, 175, 65, 333, 154, 49, 404, 706, 124, 21, 252, 274, 168, 190, 289, 100, 570, 16, 1, 310, 346}, - {15, 515, 700, 753, 341, 13, 0, 23, 1, 33, 141, 4, 260, 82, 77, 51, 351, 180, 9, 5, 115, 137, 10, 217, 11, 120, 102, 40, 349, 269, 202, 854} -#else -#include "Table4.h" -#endif -}}; -// endregion - template class OrderTable<3>; template class OrderTable<4>; diff --git a/src/rgbcx/BC1/Table4.h b/src/rgbcx/BC1/OrderTable4.cpp similarity index 76% rename from src/rgbcx/BC1/Table4.h rename to src/rgbcx/BC1/OrderTable4.cpp index cda3f0a..061528e 100644 --- a/src/rgbcx/BC1/Table4.h +++ b/src/rgbcx/BC1/OrderTable4.cpp @@ -1,3 +1,1000 @@ +/* Python-rgbcx Texture Compression Library + Copyright (C) 2021 Andrew Cassidy + Partially derived from rgbcx.h written by Richard Geldreich + and licenced under the public domain + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . + */ + +#include "OrderTable.h" + +// clang-format off +namespace rgbcx::BC1 { + +template <> +const OrderTable<4>::BestOrderArray OrderTable<4>::BestOrders = {{ +#if RGBCX_USE_SMALLER_TABLES +{202, 120, 13, 318, 15, 23, 403, 450, 5, 51, 260, 128, 77, 21, 33, 494, 515, 523, 4, 141, 269, 1, 2, 700, 137, 49, 48, 102, 7, 64, 753, 82}, +{13, 141, 23, 217, 115, 51, 77, 2, 64, 21, 0, 4, 5, 317, 137, 269, 202, 33, 318, 7, 291, 352, 9, 10, 3, 180, 32, 6, 365, 102, 341, 349}, +{29, 58, 262, 1, 52, 74, 6, 171, 5, 287, 151, 334, 27, 500, 75, 26, 331, 223, 53, 635, 220, 19, 50, 45, 46, 17, 14, 396, 163, 409, 324, 70}, +{40, 51, 33, 453, 14, 23, 62, 56, 12, 196, 730, 475, 153, 99, 403, 775, 117, 130, 585, 34, 4, 17, 162, 11, 139, 57, 102, 38, 108, 47, 123, 440}, +{33, 23, 51, 13, 102, 64, 202, 128, 12, 40, 15, 196, 153, 10, 1, 2, 77, 99, 141, 0, 515, 5, 117, 3, 120, 403, 700, 165, 22, 14, 269, 453}, +{13, 23, 51, 4, 77, 141, 202, 33, 115, 64, 32, 128, 0, 11, 177, 40, 15, 102, 2, 217, 7, 137, 269, 21, 90, 59, 515, 1, 180, 403, 22, 6}, +{26, 235, 19, 47, 648, 624, 78, 145, 27, 112, 122, 64, 444, 6, 630, 453, 25, 42, 65, 130, 711, 85, 390, 113, 416, 108, 665, 29, 730, 138, 644, 95}, +{64, 141, 352, 751, 217, 247, 237, 437, 177, 269, 86, 954, 947, 875, 32, 318, 95, 77, 304, 92, 597, 180, 232, 291, 128, 864, 349, 588, 372, 202, 312, 1}, +{642, 898, 180, 638, 901, 341, 82, 197, 10, 951, 15, 515, 165, 762, 700, 253, 811, 753, 752, 365, 143, 479, 244, 569, 8, 110, 351, 873, 55, 31, 499, 116}, +{221, 23, 51, 125, 438, 254, 13, 21, 39, 49, 308, 656, 0, 115, 530, 159, 158, 401, 30, 166, 912, 386, 165, 688, 518, 9, 105, 627, 424, 22, 421, 33}, +{143, 31, 1, 44, 197, 8, 180, 125, 116, 55, 13, 498, 23, 341, 638, 242, 93, 15, 2, 141, 0, 901, 752, 115, 36, 206, 165, 479, 338, 365, 515, 762}, +{12, 23, 51, 13, 14, 15, 37, 99, 515, 38, 700, 117, 2, 196, 134, 153, 753, 64, 54, 33, 128, 120, 21, 0, 328, 5, 139, 82, 453, 719, 457, 1}, +{13, 15, 23, 515, 961, 700, 457, 753, 51, 115, 4, 165, 197, 2, 38, 569, 1, 474, 0, 37, 99, 719, 5, 12, 629, 14, 11, 3, 33, 77, 64, 10}, +{15, 515, 700, 753, 1, 0, 2, 4, 3, 23, 134, 12, 961, 5, 10, 197, 11, 33, 82, 120, 457, 51, 165, 7, 6, 341, 217, 21, 77, 9, 40, 180}, +{13, 51, 23, 457, 719, 961, 730, 401, 165, 453, 0, 117, 386, 15, 134, 1, 758, 153, 12, 54, 515, 99, 11, 2, 700, 5, 753, 4, 308, 33, 6, 899}, +{134, 898, 82, 117, 13, 33, 77, 102, 23, 260, 341, 351, 120, 901, 197, 153, 961, 111, 196, 110, 180, 457, 854, 10, 450, 8, 165, 40, 4, 115, 0, 365}, +{60, 18, 126, 167, 35, 16, 191, 71, 24, 92, 121, 271, 68, 107, 212, 146, 118, 150, 199, 7, 21, 1, 9, 575, 727, 5, 566, 48, 0, 132, 108, 273}, +{62, 136, 129, 123, 128, 41, 162, 17, 249, 211, 214, 789, 618, 710, 38, 678, 248, 507, 57, 64, 152, 269, 119, 3, 177, 183, 597, 106, 4, 179, 216, 90}, +{403, 523, 51, 475, 494, 453, 817, 899, 202, 23, 450, 13, 421, 120, 102, 730, 33, 128, 4, 1, 805, 5, 7, 153, 757, 260, 318, 196, 77, 457, 326, 65}, +{4, 59, 3, 62, 12, 33, 56, 193, 27, 21, 102, 17, 40, 77, 76, 84, 32, 0, 6, 123, 119, 177, 128, 11, 18, 611, 605, 25, 13, 51, 73, 210}, +{43, 20, 319, 422, 414, 945, 0, 7, 819, 61, 5, 376, 325, 173, 804, 904, 470, 693, 97, 707, 14, 49, 22, 104, 147, 107, 95, 32, 426, 1, 330, 577}, +{13, 23, 51, 2, 0, 115, 4, 141, 217, 33, 10, 77, 1, 15, 64, 180, 3, 515, 7, 6, 22, 102, 11, 5, 40, 9, 165, 700, 202, 197, 317, 341}, +{28, 49, 0, 105, 1, 24, 65, 159, 35, 55, 95, 239, 16, 2, 109, 7, 9, 14, 170, 320, 347, 168, 424, 158, 10, 301, 124, 5, 67, 21, 64, 36}, +{15, 515, 700, 753, 0, 1, 13, 2, 117, 4, 12, 10, 5, 165, 457, 3, 9, 134, 11, 7, 6, 51, 77, 64, 961, 82, 33, 197, 14, 341, 120, 141}, +{7, 71, 14, 149, 97, 18, 60, 16, 150, 92, 398, 189, 140, 124, 24, 273, 35, 2, 69, 302, 154, 68, 0, 336, 517, 43, 66, 28, 118, 251, 230, 1}, +{4, 102, 33, 77, 40, 59, 11, 624, 210, 12, 128, 342, 5, 503, 91, 139, 64, 32, 25, 494, 202, 678, 416, 0, 403, 275, 21, 450, 196, 318, 523, 177}, +{25, 19, 42, 6, 122, 813, 256, 235, 85, 26, 436, 53, 297, 573, 680, 390, 445, 63, 27, 416, 80, 233, 65, 73, 389, 283, 45, 605, 194, 17, 250, 343}, +{402, 102, 202, 128, 33, 300, 403, 23, 12, 77, 40, 21, 342, 117, 483, 99, 25, 494, 6, 4, 63, 32, 84, 569, 139, 757, 475, 318, 19, 26, 196, 134}, +{158, 9, 0, 109, 39, 49, 65, 22, 35, 168, 55, 24, 68, 124, 159, 16, 185, 344, 333, 154, 254, 272, 175, 289, 1, 577, 95, 28, 105, 810, 30, 169}, +{197, 180, 115, 237, 498, 165, 2, 5, 287, 546, 400, 3, 61, 34, 509, 13, 297, 80, 341, 52, 45, 186, 58, 881, 23, 873, 468, 176, 64, 17, 311, 250}, +{120, 968, 373, 260, 704, 110, 450, 202, 137, 318, 77, 95, 269, 326, 217, 717, 661, 652, 851, 349, 93, 1, 518, 98, 827, 291, 21, 177, 82, 33, 848, 719}, +{44, 116, 144, 268, 434, 489, 367, 384, 98, 127, 918, 93, 948, 31, 206, 940, 855, 0, 203, 137, 9, 22, 617, 141, 332, 105, 393, 492, 959, 282, 299, 131}, +{13, 77, 23, 33, 51, 0, 64, 141, 102, 4, 2, 115, 1, 6, 202, 15, 10, 128, 269, 7, 177, 180, 3, 40, 22, 11, 515, 217, 117, 318, 700, 137}, +{15, 515, 700, 753, 4, 11, 141, 40, 165, 23, 64, 180, 13, 202, 32, 3, 51, 125, 5, 197, 21, 128, 0, 93, 77, 1, 120, 82, 269, 117, 110, 59}, +{176, 231, 585, 62, 34, 14, 412, 161, 56, 236, 527, 57, 17, 3, 51, 202, 4, 23, 369, 283, 128, 13, 472, 440, 84, 361, 136, 457, 381, 130, 719, 53}, +{9, 0, 180, 217, 237, 101, 141, 352, 88, 100, 230, 64, 175, 317, 115, 498, 68, 39, 30, 1, 702, 83, 213, 36, 365, 208, 752, 13, 252, 321, 952, 546}, +{28, 9, 22, 1, 49, 0, 109, 39, 83, 95, 86, 30, 13, 105, 128, 55, 141, 168, 158, 67, 31, 159, 208, 12, 96, 5, 185, 2, 160, 64, 137, 23}, +{72, 4, 38, 12, 51, 89, 477, 11, 57, 76, 401, 308, 23, 474, 99, 148, 413, 179, 59, 13, 431, 152, 54, 569, 17, 3, 205, 629, 197, 421, 405, 15}, +{457, 13, 23, 961, 15, 51, 515, 700, 165, 12, 753, 629, 11, 1, 719, 117, 0, 3, 2, 37, 569, 197, 40, 328, 33, 5, 153, 134, 99, 64, 38, 196}, +{254, 100, 310, 9, 30, 1, 39, 625, 166, 265, 190, 0, 272, 557, 131, 731, 31, 98, 578, 688, 404, 93, 101, 88, 49, 21, 127, 264, 44, 36, 252, 478}, +{51, 23, 12, 13, 15, 128, 99, 120, 10, 202, 515, 153, 64, 82, 700, 33, 165, 2, 5, 117, 403, 1, 141, 0, 3, 196, 37, 453, 753, 197, 260, 93}, +{38, 99, 542, 139, 453, 117, 196, 23, 457, 13, 328, 111, 37, 134, 961, 11, 12, 51, 40, 775, 587, 401, 474, 54, 153, 477, 41, 629, 33, 475, 14, 277}, +{6, 85, 25, 233, 343, 91, 26, 63, 138, 29, 19, 65, 283, 4, 81, 235, 42, 122, 605, 64, 648, 256, 174, 370, 74, 389, 718, 59, 45, 194, 445, 416}, +{49, 5, 97, 20, 197, 21, 18, 193, 0, 64, 408, 729, 173, 350, 43, 422, 165, 7, 14, 104, 61, 32, 509, 713, 523, 102, 120, 95, 125, 397, 35, 232}, +{144, 116, 268, 434, 384, 489, 367, 206, 93, 855, 940, 44, 98, 332, 617, 127, 959, 911, 137, 282, 203, 31, 22, 219, 141, 9, 131, 276, 417, 0, 1, 120}, +{17, 106, 64, 62, 32, 255, 136, 292, 476, 162, 129, 241, 123, 141, 41, 237, 720, 214, 209, 352, 519, 211, 186, 148, 752, 247, 507, 90, 21, 77, 197, 119}, +{2, 29, 52, 50, 5, 58, 14, 6, 27, 1, 366, 357, 45, 53, 17, 19, 171, 151, 26, 181, 133, 38, 218, 764, 287, 583, 61, 113, 3, 487, 600, 281}, +{130, 59, 196, 412, 381, 730, 711, 236, 77, 210, 202, 402, 453, 99, 401, 108, 361, 803, 291, 283, 153, 4, 57, 51, 128, 183, 14, 719, 503, 117, 23, 11}, +{13, 23, 51, 141, 77, 4, 33, 64, 115, 0, 217, 10, 180, 202, 2, 102, 11, 9, 15, 165, 40, 21, 128, 352, 22, 7, 197, 3, 317, 515, 269, 1}, +{23, 13, 202, 51, 120, 15, 21, 5, 141, 1, 128, 269, 137, 515, 64, 102, 125, 48, 98, 33, 260, 523, 318, 93, 700, 165, 450, 77, 2, 12, 403, 82}, +{1, 2, 14, 46, 29, 67, 38, 52, 5, 171, 58, 24, 103, 69, 96, 70, 83, 181, 54, 75, 163, 223, 16, 45, 112, 309, 155, 0, 186, 35, 18, 108}, +{15, 515, 700, 753, 13, 0, 1, 2, 153, 5, 23, 10, 117, 3, 9, 7, 134, 165, 12, 6, 341, 33, 4, 14, 77, 457, 115, 21, 719, 180, 217, 82}, +{197, 165, 509, 13, 391, 180, 308, 115, 23, 546, 5, 498, 2, 29, 3, 401, 901, 61, 34, 80, 14, 457, 250, 569, 237, 873, 38, 297, 45, 15, 468, 386}, +{19, 73, 27, 250, 200, 714, 444, 472, 26, 53, 34, 17, 813, 322, 283, 390, 128, 297, 78, 123, 432, 14, 436, 136, 106, 690, 57, 122, 389, 80, 503, 3}, +{3, 17, 21, 45, 62, 32, 38, 12, 155, 14, 2, 328, 5, 99, 401, 536, 828, 13, 227, 488, 106, 51, 719, 119, 540, 76, 165, 221, 115, 629, 209, 41}, +{115, 341, 873, 197, 365, 13, 901, 180, 569, 752, 317, 1, 10, 498, 143, 634, 261, 0, 509, 15, 943, 237, 44, 31, 116, 601, 165, 127, 282, 23, 141, 64}, +{453, 51, 23, 403, 33, 421, 475, 102, 15, 153, 196, 515, 13, 700, 117, 523, 12, 40, 753, 21, 4, 134, 0, 494, 670, 899, 22, 801, 730, 10, 11, 401}, +{23, 13, 51, 33, 12, 117, 153, 134, 453, 196, 15, 99, 515, 40, 14, 700, 128, 102, 11, 753, 77, 64, 403, 202, 0, 401, 475, 37, 65, 2, 3, 38}, +{2, 7, 5, 14, 70, 1, 29, 61, 52, 45, 6, 112, 66, 16, 21, 32, 592, 46, 38, 135, 87, 58, 186, 315, 290, 128, 113, 0, 64, 48, 227, 23}, +{33, 23, 102, 51, 128, 13, 64, 202, 141, 1, 77, 10, 153, 40, 196, 117, 2, 3, 0, 5, 15, 269, 403, 12, 137, 134, 318, 165, 120, 6, 453, 99}, +{16, 92, 7, 20, 43, 35, 126, 71, 60, 14, 107, 18, 68, 97, 0, 121, 279, 149, 24, 246, 191, 48, 118, 575, 55, 140, 362, 783, 230, 150, 375, 566}, +{13, 23, 4, 33, 77, 64, 51, 102, 141, 128, 32, 10, 0, 202, 40, 115, 59, 22, 90, 11, 177, 21, 291, 6, 7, 318, 180, 117, 137, 2, 95, 165}, +{507, 162, 129, 41, 4, 211, 62, 38, 123, 59, 57, 248, 183, 130, 99, 11, 3, 361, 202, 17, 402, 556, 266, 305, 803, 210, 128, 184, 152, 136, 313, 117}, +{643, 123, 193, 650, 802, 18, 25, 389, 718, 256, 65, 289, 84, 91, 619, 511, 415, 90, 235, 63, 57, 510, 324, 216, 862, 102, 6, 183, 108, 397, 217, 736}, +{13, 23, 15, 1, 515, 51, 0, 2, 700, 5, 753, 165, 141, 115, 12, 3, 4, 180, 21, 197, 457, 7, 6, 10, 120, 9, 33, 202, 77, 32, 8, 11}, +{23, 51, 13, 453, 64, 403, 12, 21, 5, 202, 128, 475, 165, 141, 523, 95, 125, 115, 3, 1, 4, 730, 120, 32, 2, 494, 180, 719, 457, 197, 450, 401}, +{204, 74, 135, 66, 6, 174, 192, 7, 138, 172, 85, 353, 348, 580, 280, 97, 95, 500, 29, 64, 426, 32, 87, 889, 65, 81, 25, 2, 52, 43, 568, 673}, +{35, 0, 68, 69, 24, 9, 1, 16, 65, 103, 149, 133, 18, 114, 28, 50, 83, 2, 189, 7, 46, 14, 101, 336, 175, 124, 251, 55, 71, 218, 38, 238}, +{16, 101, 0, 118, 9, 18, 24, 68, 35, 154, 71, 124, 60, 212, 191, 520, 55, 806, 694, 167, 28, 39, 364, 375, 1, 346, 252, 65, 604, 302, 22, 21}, +{0, 9, 16, 35, 1, 24, 68, 18, 65, 21, 103, 67, 13, 149, 28, 189, 71, 23, 101, 238, 114, 7, 335, 133, 486, 141, 22, 212, 48, 50, 30, 118}, +{13, 202, 23, 77, 33, 51, 128, 5, 21, 141, 115, 32, 102, 64, 4, 0, 318, 269, 10, 15, 291, 2, 494, 177, 11, 217, 3, 515, 22, 137, 6, 700}, +{16, 92, 60, 35, 7, 18, 24, 68, 150, 149, 14, 71, 0, 375, 97, 126, 118, 107, 230, 191, 246, 273, 140, 55, 175, 653, 9, 575, 2, 28, 566, 517}, +{76, 90, 21, 179, 316, 148, 205, 32, 464, 288, 184, 257, 245, 1, 89, 2, 460, 57, 152, 45, 38, 358, 645, 5, 12, 449, 350, 48, 37, 17, 4, 14}, +{19, 27, 26, 813, 80, 297, 17, 495, 436, 53, 73, 200, 4, 378, 250, 59, 106, 25, 45, 128, 361, 42, 113, 469, 122, 390, 77, 40, 736, 6, 11, 136}, +{6, 26, 235, 138, 19, 145, 112, 70, 331, 262, 25, 42, 52, 624, 27, 453, 122, 47, 500, 78, 648, 85, 29, 2, 630, 632, 409, 113, 50, 226, 108, 75}, +{7, 16, 14, 24, 92, 35, 18, 2, 46, 9, 60, 140, 0, 87, 50, 5, 54, 13, 12, 38, 171, 23, 126, 21, 58, 64, 1, 70, 128, 71, 220, 163}, +{90, 205, 257, 184, 32, 179, 460, 5, 245, 45, 2, 288, 769, 524, 57, 21, 152, 229, 17, 1, 497, 4, 292, 59, 619, 452, 432, 76, 476, 11, 266, 14}, +{15, 515, 700, 753, 4, 5, 11, 141, 13, 1, 33, 3, 0, 128, 202, 23, 180, 21, 2, 64, 269, 32, 117, 134, 120, 40, 102, 318, 153, 17, 137, 352}, +{47, 130, 711, 108, 453, 412, 730, 196, 390, 283, 78, 27, 51, 183, 381, 236, 128, 200, 719, 14, 153, 472, 503, 34, 59, 250, 3, 4, 57, 803, 123, 432}, +{12, 277, 51, 474, 111, 153, 23, 99, 13, 37, 961, 94, 629, 542, 569, 431, 79, 139, 38, 134, 117, 453, 33, 188, 196, 40, 115, 15, 11, 157, 401, 515}, +{17, 495, 469, 106, 26, 378, 80, 27, 161, 483, 19, 742, 527, 436, 383, 862, 73, 136, 53, 814, 297, 6, 119, 84, 62, 56, 25, 3, 209, 611, 4, 128}, +{81, 681, 636, 91, 0, 750, 370, 104, 718, 138, 18, 693, 173, 784, 29, 397, 348, 74, 192, 673, 174, 65, 6, 207, 64, 280, 306, 52, 671, 32, 355, 319}, +{15, 515, 700, 753, 33, 77, 4, 102, 115, 117, 40, 13, 1, 153, 134, 11, 5, 217, 23, 196, 2, 21, 3, 317, 32, 365, 0, 341, 291, 59, 12, 51}, +{0, 9, 28, 35, 68, 1, 65, 67, 101, 39, 69, 175, 16, 238, 13, 22, 96, 124, 18, 24, 251, 30, 55, 12, 23, 2, 50, 141, 114, 5, 154, 103}, +{23, 33, 77, 13, 117, 40, 11, 102, 64, 4, 51, 403, 153, 453, 10, 0, 196, 134, 128, 65, 12, 291, 86, 99, 95, 59, 15, 141, 202, 180, 137, 719}, +{214, 90, 289, 6, 874, 64, 25, 65, 235, 42, 751, 249, 256, 312, 194, 85, 746, 875, 174, 32, 525, 288, 519, 835, 247, 348, 233, 544, 217, 524, 437, 352}, +{1, 22, 2, 0, 36, 67, 28, 5, 49, 95, 12, 50, 168, 83, 105, 55, 7, 9, 14, 194, 103, 23, 114, 21, 584, 46, 10, 13, 38, 69, 208, 159}, +{269, 141, 13, 202, 33, 180, 318, 77, 291, 137, 102, 352, 128, 23, 349, 51, 31, 217, 372, 317, 125, 197, 44, 21, 11, 5, 901, 1, 18, 0, 4, 494}, +{435, 144, 274, 88, 203, 418, 30, 1, 190, 410, 96, 778, 100, 530, 521, 326, 466, 795, 686, 166, 960, 321, 382, 264, 367, 822, 131, 31, 692, 9, 213, 93}, +{76, 72, 90, 21, 37, 179, 12, 205, 32, 428, 148, 38, 308, 405, 4, 413, 57, 184, 749, 245, 316, 221, 54, 645, 288, 1, 152, 155, 464, 257, 2, 14}, +{77, 33, 64, 102, 13, 141, 23, 2, 40, 1, 51, 10, 0, 115, 6, 180, 202, 128, 4, 3, 177, 269, 15, 7, 22, 165, 291, 14, 217, 318, 137, 11}, +{397, 81, 4, 32, 65, 788, 693, 804, 681, 11, 249, 21, 91, 64, 690, 494, 3, 0, 422, 56, 348, 725, 194, 123, 23, 59, 523, 319, 61, 510, 95, 90}, +{60, 126, 16, 7, 92, 121, 314, 246, 35, 107, 150, 132, 14, 146, 24, 18, 199, 298, 232, 71, 359, 140, 672, 97, 392, 649, 5, 423, 95, 21, 22, 388}, +{15, 515, 141, 217, 115, 700, 13, 23, 120, 317, 753, 180, 33, 260, 110, 137, 341, 51, 1, 365, 4, 77, 64, 202, 0, 40, 36, 352, 197, 269, 10, 21}, +{111, 134, 117, 474, 23, 13, 961, 12, 569, 431, 37, 15, 51, 115, 515, 700, 277, 99, 753, 38, 197, 405, 457, 4, 72, 94, 629, 45, 11, 89, 54, 148}, +{23, 13, 51, 5, 1, 15, 2, 21, 12, 202, 141, 0, 515, 165, 120, 32, 4, 64, 700, 3, 115, 197, 269, 125, 753, 7, 9, 128, 6, 180, 453, 403}, +{13, 141, 4, 23, 5, 2, 115, 217, 202, 51, 180, 137, 269, 352, 77, 1, 317, 3, 21, 318, 0, 15, 9, 64, 10, 197, 11, 341, 33, 515, 752, 7}, +{165, 125, 197, 13, 391, 21, 23, 558, 48, 380, 97, 120, 298, 33, 14, 426, 66, 115, 32, 386, 900, 180, 6, 98, 357, 237, 326, 509, 51, 278, 221, 457}, +{120, 82, 15, 260, 515, 1, 351, 77, 450, 700, 13, 21, 141, 23, 753, 202, 217, 93, 110, 33, 51, 854, 5, 128, 326, 102, 137, 180, 817, 48, 269, 352}, +{23, 13, 15, 51, 515, 700, 961, 753, 0, 457, 1, 2, 4, 115, 10, 453, 569, 5, 33, 165, 11, 719, 14, 40, 64, 197, 3, 21, 474, 629, 38, 401}, +{264, 166, 39, 30, 9, 100, 435, 254, 93, 921, 190, 363, 1, 625, 411, 382, 897, 656, 203, 478, 404, 812, 438, 110, 473, 88, 18, 691, 156, 141, 274, 272}, +{9, 0, 252, 100, 166, 39, 101, 265, 364, 68, 88, 329, 520, 18, 419, 676, 118, 167, 404, 604, 16, 1, 21, 30, 212, 158, 553, 49, 382, 274, 48, 13}, +{15, 515, 700, 753, 4, 11, 141, 5, 3, 13, 202, 1, 180, 21, 2, 165, 269, 23, 40, 64, 0, 318, 12, 32, 128, 51, 77, 117, 523, 197, 120, 457}, +{24, 1, 2, 69, 35, 16, 67, 18, 14, 50, 0, 46, 68, 9, 38, 7, 133, 71, 83, 149, 28, 108, 189, 218, 65, 114, 238, 29, 75, 54, 5, 96}, +{90, 289, 214, 64, 874, 13, 77, 712, 66, 751, 4, 23, 51, 192, 32, 0, 202, 194, 312, 177, 33, 65, 234, 104, 875, 288, 59, 5, 835, 416, 102, 95}, +{0, 9, 49, 127, 98, 31, 301, 28, 371, 159, 1, 395, 512, 737, 158, 761, 916, 623, 16, 44, 242, 39, 170, 18, 293, 105, 24, 272, 101, 22, 23, 385}, +{17, 62, 136, 214, 123, 129, 32, 292, 119, 209, 710, 106, 141, 162, 128, 64, 45, 4, 77, 249, 11, 618, 211, 3, 207, 130, 519, 183, 38, 177, 21, 269}, +{5, 107, 581, 356, 279, 32, 441, 362, 493, 660, 13, 298, 0, 534, 49, 147, 21, 22, 132, 121, 97, 423, 7, 590, 259, 683, 14, 786, 126, 508, 60, 246}, +{51, 13, 15, 730, 453, 23, 515, 719, 386, 457, 12, 700, 403, 475, 899, 1, 6, 523, 753, 421, 99, 401, 165, 33, 2, 19, 361, 5, 0, 670, 120, 27}, +{49, 28, 9, 159, 272, 22, 254, 131, 158, 327, 95, 105, 0, 39, 35, 168, 347, 286, 374, 55, 65, 627, 424, 912, 68, 578, 1, 24, 239, 175, 688, 169}, +{15, 515, 700, 33, 753, 4, 77, 141, 341, 317, 1, 10, 13, 180, 102, 22, 40, 117, 115, 365, 5, 901, 23, 197, 134, 11, 217, 351, 64, 82, 21, 137}, +{134, 15, 13, 515, 23, 700, 12, 753, 51, 474, 37, 961, 197, 10, 457, 569, 4, 0, 99, 2, 115, 38, 165, 153, 94, 3, 139, 11, 1, 82, 33, 5}, +{7, 2, 20, 58, 5, 14, 128, 66, 6, 29, 32, 43, 21, 52, 16, 38, 631, 61, 74, 97, 46, 135, 113, 25, 202, 192, 13, 0, 884, 45, 112, 87}, +{77, 13, 33, 202, 23, 128, 102, 4, 141, 342, 117, 0, 269, 318, 134, 22, 11, 21, 32, 153, 403, 291, 49, 64, 137, 51, 40, 15, 494, 5, 196, 98}, +{2, 1, 14, 6, 46, 38, 29, 65, 5, 36, 67, 0, 103, 7, 22, 86, 133, 50, 108, 208, 52, 83, 24, 323, 283, 69, 28, 18, 10, 25, 23, 75}, +{15, 515, 700, 753, 1, 5, 4, 2, 3, 13, 0, 11, 180, 341, 12, 33, 10, 197, 134, 365, 77, 23, 21, 901, 6, 117, 165, 7, 37, 32, 17, 102}, +{203, 268, 206, 93, 417, 940, 31, 8, 120, 137, 44, 499, 959, 473, 202, 692, 728, 559, 0, 260, 10, 326, 141, 564, 817, 127, 341, 1, 450, 22, 110, 23}, +{15, 82, 515, 120, 700, 0, 10, 753, 33, 8, 64, 165, 110, 31, 260, 93, 13, 197, 23, 22, 40, 4, 351, 44, 77, 9, 11, 153, 102, 51, 1, 196}, +{60, 0, 16, 7, 14, 43, 20, 71, 28, 10, 2, 22, 154, 18, 13, 24, 92, 1, 51, 576, 35, 615, 805, 925, 68, 126, 124, 149, 97, 64, 23, 55}, +{19, 6, 26, 80, 5, 84, 27, 17, 25, 2, 504, 129, 45, 240, 56, 123, 4, 119, 618, 1, 76, 106, 64, 51, 14, 3, 128, 65, 32, 710, 0, 42}, +{15, 515, 700, 753, 13, 4, 77, 23, 33, 51, 0, 5, 8, 10, 11, 31, 44, 1, 82, 22, 202, 64, 110, 102, 93, 21, 291, 40, 141, 180, 9, 49}, +{195, 98, 271, 223, 132, 167, 146, 407, 1, 360, 121, 834, 393, 591, 212, 199, 293, 259, 522, 107, 354, 147, 156, 191, 807, 590, 48, 18, 125, 16, 765, 541}, +{128, 202, 77, 210, 402, 318, 33, 102, 6, 40, 403, 29, 342, 269, 196, 757, 99, 139, 2, 111, 42, 4, 494, 117, 275, 300, 13, 12, 678, 0, 177, 122}, +{13, 33, 23, 40, 51, 102, 4, 117, 77, 64, 134, 0, 128, 153, 202, 196, 453, 11, 15, 12, 1, 22, 403, 141, 59, 14, 10, 475, 515, 65, 700, 95}, +{7, 16, 14, 24, 18, 2, 28, 0, 92, 71, 1, 22, 6, 35, 60, 20, 168, 10, 154, 118, 5, 302, 124, 69, 97, 109, 703, 158, 420, 12, 149, 66}, +{15, 1, 515, 23, 0, 13, 700, 2, 51, 753, 180, 5, 120, 165, 197, 21, 115, 4, 33, 9, 141, 7, 12, 6, 3, 457, 386, 202, 260, 523, 8, 31}, +{60, 107, 121, 132, 146, 126, 199, 279, 150, 92, 16, 649, 441, 35, 955, 7, 21, 0, 423, 5, 18, 195, 598, 298, 493, 356, 32, 653, 22, 362, 953, 10}, +{31, 44, 98, 276, 284, 299, 116, 935, 9, 201, 0, 131, 39, 127, 144, 662, 1, 137, 371, 492, 567, 489, 93, 254, 49, 268, 22, 28, 30, 293, 434, 737}, +{13, 15, 23, 515, 700, 0, 1, 51, 753, 4, 2, 10, 77, 202, 5, 115, 3, 165, 197, 457, 9, 12, 11, 961, 33, 120, 22, 141, 180, 7, 6, 40}, +{123, 162, 184, 257, 17, 183, 229, 130, 129, 3, 84, 136, 99, 152, 556, 383, 57, 497, 12, 205, 4, 62, 56, 452, 80, 266, 128, 14, 40, 119, 27, 106}, +{196, 33, 117, 40, 153, 23, 134, 13, 51, 102, 453, 0, 15, 475, 12, 14, 515, 2, 22, 700, 4, 21, 753, 64, 401, 670, 730, 1, 9, 11, 10, 99}, +{224, 219, 187, 131, 258, 385, 442, 871, 836, 31, 98, 908, 44, 574, 127, 944, 137, 839, 116, 36, 613, 1, 254, 39, 926, 160, 829, 96, 93, 371, 860, 827}, +{121, 195, 156, 132, 146, 360, 590, 407, 786, 522, 883, 591, 259, 929, 626, 941, 150, 687, 5, 55, 296, 379, 467, 178, 586, 465, 279, 21, 1, 13, 60, 354}, +{2, 1, 14, 29, 6, 5, 46, 52, 38, 19, 114, 75, 26, 65, 108, 96, 25, 50, 36, 70, 103, 309, 17, 236, 218, 74, 12, 86, 0, 3, 10, 112}, +{15, 515, 82, 700, 120, 753, 10, 0, 8, 197, 260, 165, 351, 64, 13, 110, 117, 93, 31, 1, 9, 33, 22, 23, 457, 44, 450, 77, 102, 898, 40, 49}, +{7, 66, 97, 2, 172, 74, 226, 52, 29, 135, 192, 232, 43, 324, 92, 5, 38, 20, 222, 14, 6, 568, 87, 107, 353, 620, 580, 16, 138, 174, 448, 32}, +{62, 129, 123, 162, 136, 249, 618, 183, 507, 57, 4, 152, 17, 59, 11, 184, 117, 77, 3, 128, 211, 41, 130, 205, 12, 40, 33, 106, 64, 229, 38, 313}, +{1, 13, 15, 2, 4, 515, 23, 0, 3, 115, 700, 5, 51, 77, 341, 141, 753, 180, 33, 217, 197, 202, 901, 6, 21, 165, 11, 365, 318, 317, 10, 102}, +{6, 26, 235, 19, 145, 47, 112, 78, 64, 27, 453, 95, 29, 444, 25, 624, 85, 108, 648, 70, 32, 130, 74, 42, 711, 630, 632, 138, 65, 122, 113, 730}, +{23, 51, 12, 15, 13, 99, 515, 153, 117, 10, 700, 37, 120, 82, 165, 2, 753, 64, 128, 0, 403, 3, 5, 1, 134, 197, 453, 31, 202, 457, 110, 21}, +{16, 24, 18, 71, 64, 35, 92, 7, 246, 146, 9, 108, 60, 118, 199, 5, 140, 2, 267, 0, 230, 830, 32, 133, 1, 68, 50, 330, 247, 563, 36, 12}, +{15, 515, 700, 753, 0, 1, 13, 2, 23, 3, 4, 217, 51, 5, 115, 8, 9, 180, 341, 10, 7, 6, 317, 77, 33, 372, 901, 197, 365, 11, 120, 165}, +{234, 639, 178, 202, 77, 142, 5, 455, 450, 49, 416, 0, 147, 427, 198, 21, 315, 329, 13, 318, 325, 557, 120, 344, 113, 259, 22, 128, 61, 105, 23, 494}, +{1, 31, 36, 44, 141, 180, 55, 2, 64, 22, 98, 116, 13, 352, 0, 115, 10, 127, 5, 164, 253, 498, 237, 165, 341, 197, 4, 86, 15, 170, 125, 23}, +{15, 120, 13, 141, 23, 260, 217, 515, 1, 77, 51, 110, 180, 700, 317, 82, 269, 137, 115, 202, 21, 753, 64, 5, 351, 291, 0, 450, 352, 93, 36, 326}, +{26, 6, 112, 396, 19, 145, 25, 122, 648, 287, 42, 74, 624, 222, 416, 45, 138, 66, 644, 151, 113, 651, 29, 573, 64, 280, 445, 27, 525, 85, 70, 58}, +{156, 360, 5, 146, 121, 21, 271, 522, 354, 132, 49, 13, 18, 195, 16, 340, 60, 591, 446, 586, 727, 0, 107, 407, 167, 48, 1, 463, 199, 566, 32, 23}, +{5, 61, 49, 147, 178, 612, 660, 120, 21, 182, 23, 427, 259, 683, 33, 4, 77, 70, 13, 3, 376, 98, 64, 0, 481, 344, 48, 595, 291, 263, 141, 51}, +{89, 79, 468, 179, 358, 205, 94, 405, 115, 498, 72, 180, 365, 431, 37, 111, 341, 734, 188, 317, 482, 217, 11, 4, 245, 152, 413, 216, 12, 474, 490, 752}, +{24, 16, 35, 68, 18, 71, 7, 92, 0, 108, 9, 14, 118, 101, 336, 175, 375, 302, 28, 124, 154, 55, 149, 60, 398, 1, 65, 2, 140, 273, 345, 230}, +{51, 730, 421, 801, 453, 386, 23, 523, 13, 475, 719, 401, 670, 365, 899, 403, 115, 457, 758, 165, 33, 494, 450, 6, 423, 805, 629, 56, 569, 514, 958, 388}, +{113, 45, 6, 311, 29, 2, 151, 614, 145, 491, 112, 80, 5, 27, 61, 74, 315, 66, 209, 631, 19, 25, 58, 17, 73, 26, 1, 243, 70, 64, 611, 287}, +{4, 339, 188, 471, 11, 59, 79, 12, 377, 94, 99, 33, 77, 102, 51, 111, 37, 152, 13, 961, 474, 542, 40, 342, 3, 23, 128, 403, 202, 177, 184, 57}, +{15, 4, 515, 11, 700, 33, 82, 40, 0, 120, 753, 10, 8, 110, 13, 93, 23, 165, 77, 260, 64, 31, 22, 51, 44, 102, 351, 1, 125, 9, 197, 21}, +{16, 24, 18, 0, 35, 68, 28, 71, 124, 118, 60, 7, 9, 55, 14, 92, 109, 101, 419, 175, 22, 252, 154, 375, 149, 302, 158, 346, 2, 49, 1, 126}, +{17, 45, 227, 21, 106, 3, 2, 243, 209, 5, 48, 32, 221, 62, 207, 50, 29, 186, 290, 270, 263, 52, 14, 496, 400, 119, 46, 255, 54, 430, 38, 721}, +{340, 354, 586, 658, 156, 195, 698, 668, 1, 296, 9, 18, 883, 363, 447, 379, 303, 98, 411, 13, 31, 163, 51, 5, 371, 48, 919, 846, 121, 21, 360, 70}, +{277, 153, 111, 12, 23, 51, 474, 99, 38, 37, 139, 117, 41, 457, 79, 453, 542, 13, 11, 33, 134, 157, 629, 188, 961, 14, 196, 401, 102, 569, 15, 94}, +{0, 18, 16, 159, 49, 24, 9, 105, 35, 68, 7, 28, 22, 1, 60, 344, 55, 101, 109, 2, 14, 158, 13, 23, 71, 118, 455, 286, 272, 424, 5, 327}, +{0, 105, 9, 49, 16, 18, 158, 28, 518, 24, 101, 320, 1, 68, 170, 301, 272, 127, 7, 286, 35, 890, 109, 39, 159, 98, 21, 344, 31, 55, 371, 23}, +{141, 1, 180, 15, 13, 2, 365, 217, 515, 352, 317, 115, 341, 0, 4, 5, 269, 700, 23, 21, 3, 752, 197, 77, 753, 51, 31, 901, 10, 202, 8, 64}, +{4, 23, 51, 33, 19, 17, 102, 153, 485, 880, 40, 403, 196, 26, 300, 453, 27, 117, 78, 0, 12, 200, 47, 5, 11, 14, 342, 99, 53, 77, 475, 2}, +{62, 184, 56, 440, 130, 229, 183, 3, 556, 152, 99, 162, 12, 266, 17, 548, 136, 57, 305, 161, 123, 14, 452, 4, 383, 403, 257, 34, 40, 84, 33, 139}, +{13, 23, 77, 141, 64, 202, 33, 51, 269, 115, 0, 102, 21, 4, 217, 128, 5, 32, 318, 137, 291, 9, 15, 2, 180, 10, 3, 317, 177, 515, 7, 6}, +{1, 22, 36, 105, 170, 0, 86, 2, 31, 28, 239, 64, 55, 5, 10, 98, 9, 44, 127, 95, 654, 67, 301, 143, 13, 12, 49, 23, 320, 141, 83, 21}, +{15, 515, 700, 753, 0, 1, 13, 2, 23, 901, 5, 8, 51, 82, 9, 180, 457, 4, 7, 12, 3, 6, 10, 120, 341, 141, 22, 898, 197, 351, 115, 260}, +{1, 39, 274, 98, 100, 265, 190, 30, 438, 310, 166, 223, 88, 96, 909, 31, 264, 625, 530, 9, 382, 812, 21, 252, 593, 0, 254, 539, 44, 131, 23, 778}, +{18, 212, 167, 118, 363, 1, 447, 411, 146, 60, 271, 16, 781, 121, 647, 9, 621, 562, 21, 478, 664, 68, 815, 5, 354, 98, 48, 101, 24, 446, 777, 463}, +{24, 28, 22, 0, 7, 1, 2, 16, 14, 65, 35, 49, 158, 95, 109, 159, 55, 105, 10, 18, 124, 9, 67, 5, 239, 149, 12, 289, 108, 68, 21, 424}, +{105, 22, 131, 272, 286, 98, 55, 239, 1, 31, 320, 9, 127, 327, 36, 185, 28, 374, 86, 219, 0, 64, 187, 44, 578, 164, 224, 913, 535, 115, 601, 13}, +{22, 31, 28, 301, 127, 98, 44, 0, 105, 1, 512, 395, 9, 293, 109, 299, 95, 338, 239, 125, 242, 116, 36, 320, 55, 841, 900, 685, 599, 23, 13, 763}, +{2, 1, 58, 29, 5, 14, 52, 46, 186, 334, 45, 155, 151, 50, 400, 75, 38, 69, 502, 61, 48, 227, 223, 7, 163, 17, 262, 67, 549, 21, 70, 113}, +{7, 107, 135, 232, 97, 14, 2, 92, 66, 16, 172, 192, 278, 387, 298, 356, 38, 35, 448, 52, 46, 43, 60, 29, 20, 126, 324, 526, 357, 359, 64, 5}, +{20, 43, 104, 426, 173, 7, 560, 414, 707, 784, 319, 81, 0, 861, 422, 819, 38, 74, 715, 52, 376, 97, 879, 32, 330, 22, 49, 64, 66, 95, 192, 526}, +{104, 74, 636, 66, 204, 0, 355, 81, 222, 25, 29, 319, 145, 784, 20, 65, 90, 4, 174, 194, 7, 64, 6, 746, 138, 173, 750, 715, 91, 43, 192, 32}, +{0, 9, 101, 35, 68, 39, 65, 28, 252, 124, 67, 154, 364, 336, 100, 166, 30, 1, 289, 55, 149, 346, 16, 114, 158, 88, 439, 24, 429, 22, 570, 194}, +{57, 14, 4, 231, 236, 585, 176, 59, 369, 23, 361, 13, 719, 51, 300, 342, 12, 457, 56, 3, 62, 38, 202, 401, 34, 46, 2, 322, 11, 215, 210, 507}, +{1, 2, 15, 3, 141, 0, 515, 5, 33, 700, 13, 64, 77, 180, 6, 128, 753, 10, 4, 269, 102, 202, 11, 7, 134, 197, 352, 120, 117, 318, 12, 291}, +{5, 1, 21, 202, 13, 32, 48, 23, 0, 61, 259, 22, 494, 120, 70, 49, 51, 18, 137, 128, 465, 12, 178, 115, 2, 453, 403, 141, 58, 3, 90, 450}, +{141, 205, 4, 72, 59, 79, 245, 11, 352, 94, 152, 76, 247, 216, 21, 188, 452, 217, 497, 12, 89, 37, 111, 339, 588, 77, 64, 875, 864, 115, 358, 464}, +{15, 515, 700, 753, 0, 1, 2, 13, 5, 4, 23, 3, 8, 341, 365, 51, 115, 10, 120, 457, 6, 141, 77, 197, 31, 7, 165, 9, 202, 450, 961, 260}, +{5, 2, 50, 14, 58, 38, 171, 46, 29, 1, 45, 186, 17, 52, 155, 218, 48, 281, 61, 487, 54, 36, 67, 21, 328, 334, 151, 227, 760, 114, 400, 133}, +{457, 120, 70, 125, 318, 64, 23, 48, 795, 291, 202, 761, 751, 415, 77, 846, 269, 758, 21, 237, 96, 260, 391, 165, 87, 1, 128, 5, 221, 13, 137, 763}, +{13, 23, 51, 33, 4, 40, 117, 102, 453, 64, 153, 196, 0, 77, 15, 11, 12, 475, 1, 65, 134, 10, 515, 22, 21, 14, 700, 59, 403, 141, 2, 753}, +{229, 152, 57, 266, 452, 381, 432, 12, 313, 184, 99, 471, 17, 4, 62, 339, 157, 3, 129, 59, 128, 11, 369, 37, 77, 38, 40, 123, 5, 497, 188, 257}, +{49, 28, 109, 22, 159, 9, 272, 95, 105, 131, 55, 35, 254, 168, 39, 327, 169, 0, 1, 286, 175, 374, 347, 158, 420, 67, 36, 194, 312, 424, 627, 346}, +{5, 2, 61, 29, 45, 58, 80, 311, 1, 17, 209, 227, 52, 243, 106, 869, 454, 151, 592, 496, 48, 334, 14, 155, 6, 186, 46, 171, 75, 21, 255, 667}, +{244, 44, 110, 141, 260, 30, 269, 352, 839, 131, 574, 228, 373, 276, 1, 406, 219, 717, 217, 137, 253, 224, 120, 93, 36, 31, 567, 116, 661, 187, 341, 88}, +{12, 99, 79, 139, 11, 453, 196, 51, 277, 474, 111, 23, 542, 37, 94, 188, 33, 13, 401, 775, 40, 961, 313, 102, 4, 339, 153, 485, 629, 134, 300, 431}, +{16, 35, 9, 0, 68, 24, 149, 69, 67, 18, 1, 114, 65, 230, 71, 7, 103, 133, 50, 167, 212, 118, 101, 191, 140, 64, 399, 28, 124, 283, 55, 565}, +{88, 30, 274, 435, 131, 613, 190, 100, 93, 829, 166, 1, 187, 795, 530, 127, 382, 957, 960, 160, 31, 137, 466, 264, 39, 800, 406, 254, 28, 473, 521, 219}, +{167, 16, 18, 118, 212, 24, 60, 71, 101, 68, 191, 9, 375, 411, 363, 35, 0, 1, 589, 199, 302, 21, 447, 55, 146, 126, 92, 271, 647, 121, 562, 48}, +{64, 141, 86, 177, 77, 128, 147, 597, 304, 95, 269, 102, 275, 4, 352, 49, 120, 5, 372, 194, 465, 13, 588, 237, 947, 216, 202, 180, 612, 751, 107, 534}, +{18, 65, 90, 403, 523, 289, 240, 214, 194, 102, 701, 475, 202, 217, 283, 862, 389, 51, 33, 0, 494, 421, 453, 817, 84, 64, 847, 899, 352, 13, 23, 437}, +{13, 51, 23, 202, 5, 12, 21, 128, 15, 115, 0, 1, 141, 120, 64, 32, 4, 2, 515, 403, 165, 457, 3, 10, 700, 99, 453, 318, 719, 450, 308, 401}, +{98, 223, 393, 31, 1, 271, 834, 791, 167, 44, 202, 64, 93, 697, 5, 116, 77, 125, 450, 446, 212, 18, 541, 293, 51, 120, 195, 132, 284, 13, 807, 765}, +{15, 515, 700, 753, 4, 11, 23, 13, 40, 51, 82, 165, 0, 110, 93, 33, 141, 64, 120, 5, 10, 77, 3, 102, 180, 32, 202, 125, 8, 197, 31, 21}, +{15, 515, 700, 753, 0, 1, 13, 2, 901, 23, 5, 341, 3, 51, 82, 8, 4, 180, 961, 9, 115, 10, 12, 6, 898, 7, 351, 141, 134, 22, 31, 120}, +{234, 416, 77, 5, 315, 639, 325, 202, 147, 198, 113, 49, 450, 61, 455, 142, 0, 21, 22, 342, 329, 494, 178, 58, 102, 427, 318, 230, 13, 120, 43, 470}, +{60, 146, 16, 18, 156, 126, 121, 271, 199, 360, 132, 24, 167, 0, 640, 10, 71, 522, 21, 92, 5, 340, 107, 354, 118, 150, 22, 195, 446, 35, 28, 212}, +{4, 361, 11, 14, 56, 368, 377, 161, 27, 12, 300, 77, 59, 200, 17, 554, 202, 33, 40, 494, 495, 21, 210, 80, 757, 25, 128, 23, 19, 38, 444, 53}, +{141, 82, 217, 351, 15, 352, 120, 1, 180, 260, 515, 64, 854, 36, 700, 317, 752, 372, 13, 269, 77, 753, 922, 21, 349, 23, 202, 110, 93, 137, 51, 373}, +{15, 515, 700, 753, 77, 13, 0, 1, 23, 33, 102, 2, 51, 4, 3, 5, 291, 217, 10, 9, 450, 120, 341, 7, 317, 6, 11, 117, 115, 8, 260, 180}, +{15, 515, 120, 13, 700, 23, 77, 141, 1, 260, 0, 753, 180, 51, 137, 202, 115, 365, 110, 291, 217, 5, 128, 9, 21, 341, 197, 269, 2, 450, 317, 165}, +{174, 6, 348, 85, 138, 74, 280, 204, 66, 233, 192, 355, 289, 65, 81, 580, 636, 353, 25, 91, 104, 343, 673, 214, 64, 95, 42, 712, 792, 32, 194, 90}, +{152, 497, 452, 59, 4, 216, 11, 79, 94, 77, 128, 188, 269, 339, 588, 33, 76, 529, 318, 32, 141, 471, 12, 202, 111, 21, 5, 51, 37, 90, 72, 177}, +{417, 499, 10, 141, 253, 244, 110, 559, 8, 564, 180, 260, 728, 120, 352, 638, 642, 341, 951, 206, 143, 752, 901, 93, 137, 661, 922, 373, 44, 31, 811, 197}, +{13, 77, 23, 33, 4, 51, 0, 102, 128, 59, 141, 40, 64, 115, 177, 10, 137, 22, 202, 2, 7, 11, 90, 1, 117, 180, 269, 14, 49, 6, 134, 3}, +{1, 2, 22, 0, 36, 5, 67, 50, 14, 28, 12, 86, 38, 46, 83, 168, 194, 65, 103, 114, 49, 7, 10, 95, 21, 69, 23, 24, 128, 51, 55, 13}, +{17, 106, 119, 207, 255, 306, 742, 378, 84, 62, 136, 45, 3, 5, 240, 80, 61, 56, 209, 383, 311, 790, 655, 32, 2, 440, 76, 151, 58, 29, 179, 263}, +{3, 128, 1, 141, 2, 202, 33, 5, 64, 15, 0, 515, 102, 13, 269, 10, 700, 180, 134, 51, 120, 6, 77, 318, 23, 137, 17, 117, 753, 197, 82, 153}, +{514, 38, 377, 328, 11, 57, 41, 248, 880, 266, 556, 4, 152, 361, 471, 757, 485, 403, 305, 102, 3, 211, 313, 99, 457, 130, 12, 14, 157, 40, 23, 54}, +{68, 0, 167, 101, 9, 118, 264, 520, 16, 18, 21, 478, 562, 1, 124, 212, 100, 936, 664, 777, 191, 88, 806, 154, 48, 24, 759, 604, 35, 252, 265, 65}, +{230, 689, 699, 213, 466, 352, 217, 831, 30, 443, 418, 144, 854, 201, 840, 855, 1, 251, 203, 317, 530, 957, 96, 93, 822, 539, 36, 752, 351, 137, 83, 800}, +{33, 77, 102, 117, 15, 82, 13, 134, 23, 64, 0, 515, 120, 153, 51, 4, 40, 128, 700, 260, 202, 141, 196, 22, 753, 11, 351, 10, 1, 326, 95, 269}, +{11, 40, 33, 51, 117, 13, 542, 328, 14, 134, 38, 153, 23, 12, 485, 231, 102, 54, 775, 37, 3, 377, 111, 139, 211, 4, 457, 403, 369, 475, 99, 719}, +{33, 64, 77, 128, 141, 2, 1, 202, 102, 13, 23, 117, 0, 15, 3, 153, 51, 134, 10, 40, 6, 5, 515, 269, 137, 180, 318, 165, 700, 7, 196, 753}, +{15, 515, 700, 753, 4, 1, 5, 11, 13, 21, 33, 180, 93, 141, 64, 2, 23, 77, 82, 3, 0, 102, 32, 40, 352, 341, 10, 197, 98, 110, 117, 901}, +{1, 2, 14, 67, 50, 46, 38, 24, 103, 83, 0, 5, 36, 28, 29, 133, 114, 96, 65, 52, 18, 75, 54, 108, 22, 7, 238, 58, 160, 9, 361, 69}, +{258, 201, 276, 137, 160, 860, 116, 261, 295, 843, 567, 144, 131, 44, 187, 268, 943, 219, 284, 31, 202, 935, 141, 98, 662, 203, 127, 96, 36, 93, 224, 1}, +{7, 2, 14, 16, 46, 87, 75, 52, 92, 278, 29, 38, 140, 70, 1, 5, 35, 294, 24, 262, 135, 69, 171, 172, 58, 409, 112, 60, 50, 66, 97, 12}, +{13, 23, 0, 2, 51, 1, 33, 4, 115, 10, 15, 141, 77, 3, 5, 180, 217, 515, 9, 7, 64, 11, 700, 6, 102, 40, 197, 22, 317, 753, 165, 202}, +{74, 145, 6, 66, 25, 204, 42, 29, 222, 337, 138, 26, 7, 525, 192, 174, 746, 287, 544, 135, 415, 2, 609, 632, 112, 64, 87, 0, 85, 45, 712, 396}, +{77, 33, 102, 15, 217, 13, 23, 141, 202, 515, 51, 700, 291, 4, 269, 753, 317, 180, 21, 64, 318, 115, 128, 0, 275, 2, 352, 196, 3, 5, 137, 11}, +{187, 219, 258, 871, 44, 442, 160, 574, 137, 224, 908, 116, 839, 131, 36, 926, 276, 201, 93, 228, 202, 860, 31, 613, 144, 531, 406, 1, 902, 30, 190, 318}, +{1, 372, 141, 5, 21, 77, 225, 744, 96, 30, 23, 349, 13, 291, 269, 284, 69, 442, 459, 144, 303, 839, 217, 622, 160, 330, 260, 48, 120, 410, 189, 352}, +{66, 222, 2, 74, 29, 87, 135, 6, 7, 145, 52, 25, 294, 337, 226, 172, 138, 331, 42, 70, 97, 112, 26, 1, 632, 192, 43, 5, 415, 609, 461, 353}, +{45, 17, 106, 209, 5, 2, 21, 29, 48, 207, 3, 186, 243, 155, 255, 263, 454, 119, 400, 496, 270, 14, 290, 62, 425, 1, 171, 32, 659, 52, 38, 56}, +{93, 88, 141, 120, 30, 213, 260, 373, 100, 717, 459, 82, 110, 1, 166, 450, 180, 321, 217, 372, 36, 269, 131, 225, 22, 352, 326, 466, 473, 187, 244, 410}, +{266, 57, 152, 381, 313, 471, 12, 229, 99, 369, 339, 62, 157, 3, 4, 37, 77, 38, 188, 17, 11, 162, 40, 184, 129, 59, 475, 775, 128, 452, 403, 453}, +{217, 352, 317, 141, 752, 15, 180, 515, 372, 365, 700, 341, 753, 349, 77, 21, 291, 1, 115, 244, 64, 120, 13, 98, 269, 82, 5, 498, 864, 351, 23, 144}, +{14, 514, 369, 102, 403, 377, 51, 719, 880, 153, 23, 13, 457, 11, 485, 4, 401, 12, 328, 453, 33, 40, 117, 57, 629, 38, 730, 236, 134, 670, 361, 961}, +{107, 7, 172, 14, 92, 135, 2, 359, 60, 314, 46, 16, 126, 278, 232, 150, 279, 32, 38, 392, 298, 5, 35, 97, 24, 192, 259, 288, 330, 52, 356, 312}, +{0, 4, 25, 13, 59, 90, 65, 23, 26, 19, 18, 12, 5, 216, 91, 51, 389, 33, 77, 11, 22, 85, 27, 81, 21, 177, 746, 45, 42, 194, 37, 123}, +{5, 49, 315, 202, 416, 77, 455, 639, 450, 21, 197, 137, 350, 13, 408, 0, 329, 318, 494, 344, 61, 402, 64, 509, 347, 120, 113, 48, 95, 713, 308, 401}, +{130, 47, 381, 390, 59, 90, 200, 214, 289, 6, 65, 472, 29, 64, 874, 648, 50, 751, 624, 26, 52, 32, 4, 194, 875, 714, 85, 249, 247, 33, 881, 19}, +{51, 23, 453, 13, 719, 12, 457, 165, 37, 730, 99, 4, 386, 197, 401, 17, 11, 2, 3, 15, 5, 961, 475, 6, 515, 64, 54, 700, 32, 115, 0, 403}, +{15, 515, 1, 13, 700, 2, 23, 0, 753, 5, 3, 180, 51, 4, 165, 12, 141, 21, 197, 457, 7, 115, 6, 9, 352, 10, 120, 202, 8, 341, 11, 77}, +{0, 9, 1, 67, 35, 28, 68, 16, 24, 65, 18, 69, 50, 114, 103, 12, 22, 13, 5, 101, 2, 96, 23, 83, 149, 21, 39, 55, 7, 175, 433, 124}, +{28, 105, 22, 0, 1, 320, 170, 9, 49, 301, 109, 95, 127, 31, 98, 55, 65, 35, 2, 24, 168, 159, 36, 713, 16, 740, 13, 338, 21, 44, 512, 23}, +{13, 77, 4, 51, 23, 33, 102, 202, 128, 59, 40, 0, 64, 141, 117, 403, 115, 11, 15, 318, 153, 269, 22, 515, 475, 134, 10, 494, 177, 1, 90, 210}, +{13, 23, 0, 51, 77, 33, 2, 141, 4, 10, 1, 64, 115, 102, 3, 6, 22, 15, 217, 11, 180, 7, 40, 515, 165, 202, 177, 9, 269, 128, 700, 5}, +{456, 116, 492, 8, 949, 268, 867, 391, 203, 51, 499, 13, 719, 386, 31, 791, 457, 918, 125, 10, 23, 93, 479, 685, 417, 0, 22, 338, 506, 551, 870, 730}, +{17, 237, 45, 180, 106, 62, 32, 64, 115, 41, 136, 498, 255, 21, 197, 129, 241, 13, 3, 227, 23, 352, 165, 752, 350, 365, 449, 155, 4, 546, 476, 38}, +{1, 15, 180, 515, 0, 2, 341, 700, 901, 352, 4, 141, 13, 3, 752, 5, 753, 217, 317, 115, 365, 23, 197, 21, 51, 165, 31, 6, 269, 202, 77, 7}, +{205, 141, 216, 269, 497, 4, 588, 76, 59, 152, 128, 452, 79, 77, 875, 11, 72, 94, 188, 217, 352, 12, 247, 37, 90, 64, 32, 1, 474, 23, 947, 372}, +{64, 247, 217, 237, 317, 180, 752, 115, 349, 141, 498, 13, 437, 304, 23, 372, 352, 164, 579, 291, 33, 864, 177, 197, 0, 490, 72, 10, 482, 77, 269, 51}, +{2, 1, 0, 13, 15, 141, 3, 77, 5, 515, 64, 33, 23, 180, 6, 700, 4, 117, 217, 7, 10, 11, 102, 165, 753, 197, 115, 134, 40, 352, 12, 269}, +{11, 40, 38, 328, 33, 542, 12, 313, 41, 339, 23, 157, 377, 117, 369, 51, 471, 99, 775, 485, 13, 305, 457, 57, 14, 475, 37, 248, 4, 54, 188, 719}, +{33, 77, 102, 40, 13, 23, 0, 51, 4, 128, 64, 202, 117, 141, 22, 196, 153, 10, 134, 15, 59, 269, 1, 137, 65, 11, 403, 318, 453, 86, 515, 177}, +{472, 80, 34, 250, 495, 161, 17, 14, 469, 176, 128, 4, 389, 106, 283, 436, 216, 527, 3, 297, 483, 177, 53, 56, 231, 194, 119, 84, 719, 57, 255, 59}, +{317, 352, 180, 141, 217, 752, 115, 341, 365, 244, 1, 269, 202, 901, 253, 15, 21, 498, 372, 4, 137, 515, 13, 2, 700, 318, 5, 197, 23, 143, 753, 349}, +{9, 39, 101, 18, 265, 100, 333, 520, 252, 16, 0, 329, 593, 1, 553, 364, 68, 167, 310, 30, 121, 254, 118, 158, 363, 166, 60, 604, 272, 24, 286, 404}, +{15, 515, 1, 180, 700, 901, 0, 2, 753, 341, 752, 4, 3, 13, 115, 365, 317, 5, 23, 197, 141, 217, 165, 352, 6, 22, 36, 9, 137, 51, 7, 10}, +{131, 39, 9, 829, 166, 613, 578, 827, 1, 30, 716, 254, 100, 98, 31, 224, 0, 406, 228, 310, 616, 219, 44, 846, 127, 190, 938, 96, 265, 371, 856, 438}, +{17, 64, 62, 106, 141, 751, 136, 292, 32, 129, 352, 41, 38, 476, 86, 128, 214, 237, 5, 177, 123, 209, 217, 45, 269, 954, 162, 710, 180, 3, 90, 4}, +{25, 42, 235, 65, 650, 736, 605, 6, 630, 85, 123, 343, 233, 256, 26, 122, 63, 389, 141, 249, 416, 444, 368, 194, 19, 108, 138, 174, 90, 0, 544, 511}, +{184, 229, 152, 57, 266, 432, 497, 452, 17, 381, 619, 257, 313, 12, 4, 205, 59, 3, 99, 471, 157, 128, 5, 129, 339, 369, 77, 11, 32, 45, 202, 2}, +{137, 202, 160, 860, 141, 30, 93, 567, 36, 276, 295, 261, 131, 39, 9, 964, 201, 843, 1, 98, 800, 318, 116, 22, 943, 187, 10, 219, 206, 44, 269, 535}, +{0, 493, 125, 64, 49, 9, 279, 10, 35, 18, 93, 55, 293, 31, 14, 13, 194, 165, 325, 48, 22, 132, 21, 107, 98, 389, 44, 581, 342, 259, 174, 137}, +{15, 515, 700, 753, 4, 33, 13, 77, 23, 5, 51, 32, 102, 40, 93, 11, 349, 141, 21, 8, 82, 202, 64, 31, 110, 10, 117, 0, 1, 44, 3, 318}, +{110, 253, 854, 811, 352, 141, 244, 951, 180, 642, 661, 384, 498, 143, 752, 317, 911, 10, 269, 206, 559, 351, 261, 120, 902, 533, 922, 959, 365, 160, 332, 217}, +{2, 29, 70, 1, 75, 52, 6, 220, 26, 112, 145, 331, 74, 163, 19, 69, 38, 324, 46, 58, 14, 5, 25, 21, 278, 223, 50, 307, 66, 7, 67, 409}, +{13, 23, 77, 33, 51, 4, 64, 141, 115, 102, 0, 2, 128, 177, 40, 11, 202, 10, 6, 180, 7, 15, 269, 1, 32, 217, 59, 22, 291, 3, 137, 515}, +{340, 897, 691, 478, 658, 264, 914, 382, 100, 812, 363, 1, 724, 156, 166, 698, 88, 521, 39, 404, 682, 447, 296, 96, 303, 411, 30, 909, 9, 274, 656, 772}, +{9, 18, 310, 101, 265, 159, 326, 120, 105, 158, 33, 363, 77, 195, 51, 55, 13, 39, 354, 132, 23, 7, 28, 639, 16, 137, 98, 1, 252, 272, 709, 49}, +{57, 313, 471, 12, 99, 369, 157, 339, 266, 152, 38, 37, 475, 453, 328, 775, 11, 40, 59, 188, 77, 514, 401, 403, 342, 4, 139, 33, 377, 51, 229, 14}, +{16, 7, 24, 14, 35, 140, 60, 92, 18, 69, 71, 2, 189, 1, 46, 230, 108, 388, 150, 38, 21, 172, 278, 67, 246, 267, 50, 309, 236, 135, 451, 0}, +{206, 417, 93, 940, 959, 473, 499, 203, 8, 137, 559, 728, 31, 202, 44, 120, 450, 141, 10, 260, 116, 564, 22, 326, 269, 318, 268, 244, 0, 1, 253, 638}, +{15, 515, 700, 753, 1, 0, 13, 2, 23, 4, 3, 51, 5, 217, 7, 77, 341, 115, 8, 9, 10, 33, 6, 180, 317, 349, 291, 120, 11, 165, 457, 901}, +{1, 2, 5, 14, 48, 21, 290, 32, 50, 45, 38, 46, 263, 207, 155, 72, 76, 29, 17, 408, 425, 171, 89, 52, 7, 0, 292, 449, 3, 227, 513, 428}, +{121, 132, 354, 167, 271, 223, 146, 98, 18, 463, 1, 668, 446, 195, 407, 60, 212, 447, 781, 48, 360, 363, 411, 522, 156, 393, 807, 9, 21, 16, 293, 13}, +{131, 578, 105, 371, 219, 224, 716, 616, 187, 49, 9, 254, 737, 159, 385, 98, 258, 127, 272, 761, 0, 916, 623, 910, 28, 286, 39, 31, 22, 518, 924, 242}, +{302, 467, 97, 6, 273, 1, 24, 484, 124, 51, 36, 18, 2, 398, 453, 421, 523, 69, 7, 23, 13, 403, 386, 150, 66, 0, 298, 65, 426, 165, 22, 158}, +{30, 190, 530, 88, 1, 100, 778, 539, 625, 274, 382, 410, 96, 731, 960, 39, 795, 321, 9, 131, 264, 144, 840, 748, 44, 166, 669, 957, 36, 31, 435, 228}, +{141, 1, 2, 128, 64, 33, 15, 202, 3, 0, 180, 5, 13, 77, 515, 134, 269, 102, 197, 700, 10, 137, 318, 6, 120, 165, 753, 352, 4, 82, 23, 117}, +{44, 201, 567, 116, 131, 224, 295, 662, 489, 268, 219, 31, 434, 144, 187, 276, 110, 384, 93, 261, 699, 137, 36, 442, 120, 1, 613, 30, 228, 64, 141, 244}, +{12, 15, 51, 23, 515, 37, 99, 13, 700, 0, 10, 117, 753, 38, 165, 82, 134, 120, 11, 453, 197, 64, 115, 569, 1, 629, 401, 22, 457, 474, 110, 153}, +{7, 135, 2, 92, 172, 14, 66, 140, 38, 52, 97, 46, 29, 74, 16, 324, 278, 226, 6, 87, 1, 571, 262, 5, 357, 232, 35, 380, 69, 314, 24, 330}, +{125, 386, 23, 963, 949, 60, 51, 391, 165, 221, 13, 197, 118, 21, 719, 193, 541, 421, 517, 150, 393, 7, 401, 453, 308, 5, 791, 551, 326, 558, 48, 173}, +{6, 85, 42, 25, 138, 222, 174, 235, 280, 256, 525, 289, 26, 214, 64, 746, 90, 32, 544, 65, 204, 19, 66, 337, 355, 95, 348, 415, 74, 29, 5, 312}, +{1, 14, 5, 50, 2, 67, 24, 0, 46, 69, 48, 21, 58, 103, 16, 12, 18, 38, 54, 96, 83, 7, 502, 45, 36, 181, 35, 9, 430, 28, 10, 155}, +{811, 351, 642, 180, 951, 752, 110, 638, 253, 10, 82, 352, 197, 341, 365, 564, 499, 854, 873, 55, 9, 417, 282, 901, 244, 22, 559, 143, 206, 141, 28, 898}, +{23, 13, 51, 15, 12, 453, 403, 165, 4, 515, 115, 719, 475, 457, 700, 523, 2, 21, 0, 99, 202, 197, 14, 5, 386, 753, 128, 401, 37, 308, 33, 117}, +{120, 13, 23, 77, 141, 1, 15, 93, 217, 82, 260, 51, 137, 202, 110, 515, 21, 180, 165, 5, 128, 102, 64, 351, 291, 700, 269, 352, 326, 203, 177, 0}, +{1, 5, 0, 22, 12, 2, 36, 21, 10, 23, 86, 13, 28, 51, 9, 128, 48, 14, 32, 50, 7, 3, 96, 137, 54, 4, 202, 49, 37, 65, 208, 323}, +{219, 98, 23, 127, 301, 51, 258, 308, 170, 910, 13, 165, 22, 105, 293, 616, 125, 242, 276, 401, 201, 395, 964, 115, 55, 284, 31, 374, 327, 206, 512, 900}, +{64, 180, 80, 165, 5, 237, 2, 250, 34, 58, 297, 61, 197, 17, 22, 29, 186, 498, 231, 445, 247, 3, 752, 311, 95, 32, 483, 153, 27, 45, 115, 469}, +{13, 77, 23, 33, 0, 2, 1, 64, 141, 51, 102, 10, 15, 3, 115, 40, 180, 6, 515, 128, 7, 22, 269, 202, 4, 217, 700, 5, 177, 117, 14, 165}, +{15, 120, 51, 515, 13, 450, 23, 700, 202, 153, 196, 753, 260, 64, 128, 141, 730, 4, 326, 386, 21, 523, 33, 318, 5, 457, 95, 32, 403, 1, 77, 269}, +{2, 1, 5, 29, 32, 45, 207, 263, 14, 425, 58, 72, 76, 21, 7, 408, 48, 46, 52, 186, 17, 292, 38, 6, 61, 89, 476, 50, 155, 720, 119, 3}, +{15, 515, 700, 753, 4, 13, 11, 5, 1, 23, 33, 21, 3, 141, 32, 2, 40, 180, 117, 64, 269, 202, 102, 197, 0, 165, 120, 51, 341, 352, 153, 12}, +{76, 5, 214, 129, 2, 123, 45, 710, 17, 249, 618, 460, 179, 32, 1, 257, 205, 519, 90, 207, 245, 184, 162, 61, 769, 209, 292, 106, 6, 29, 14, 128}, +{1, 15, 23, 13, 120, 141, 51, 515, 202, 21, 700, 165, 0, 180, 137, 2, 5, 77, 128, 93, 753, 260, 269, 197, 326, 33, 110, 352, 82, 102, 318, 48}, +{7, 2, 135, 14, 29, 87, 66, 52, 97, 172, 70, 112, 5, 58, 46, 337, 92, 16, 20, 43, 1, 38, 232, 155, 74, 294, 6, 461, 409, 151, 262, 32}, +{574, 187, 384, 926, 860, 110, 258, 434, 269, 531, 141, 244, 160, 261, 253, 116, 699, 959, 940, 717, 533, 36, 219, 31, 902, 661, 871, 295, 201, 352, 10, 260}, +{156, 354, 296, 1, 182, 586, 64, 379, 340, 937, 850, 698, 31, 48, 98, 44, 120, 18, 163, 23, 30, 658, 195, 125, 77, 284, 223, 291, 774, 481, 96, 39}, +{250, 80, 34, 472, 17, 495, 176, 469, 33, 194, 64, 483, 4, 297, 141, 14, 161, 27, 53, 667, 56, 833, 73, 527, 585, 231, 106, 51, 84, 814, 2, 59}, +{97, 7, 81, 140, 66, 92, 172, 192, 24, 298, 43, 6, 74, 69, 314, 426, 462, 14, 501, 16, 21, 508, 60, 189, 267, 232, 230, 104, 48, 20, 135, 330}, +{31, 44, 116, 144, 268, 393, 492, 434, 367, 489, 127, 98, 918, 0, 384, 9, 22, 206, 948, 105, 93, 203, 1, 456, 332, 940, 299, 28, 137, 49, 293, 125}, +{15, 128, 33, 3, 13, 51, 141, 1, 202, 64, 23, 2, 515, 120, 102, 0, 5, 82, 10, 700, 165, 197, 269, 153, 403, 110, 753, 137, 196, 318, 117, 12}, +{31, 98, 127, 9, 0, 105, 22, 28, 44, 512, 293, 395, 299, 1, 242, 49, 685, 763, 320, 599, 125, 116, 109, 276, 284, 95, 870, 159, 23, 456, 36, 900}, +{7, 24, 124, 1, 6, 97, 2, 69, 14, 18, 23, 92, 21, 67, 66, 16, 5, 484, 43, 20, 118, 65, 36, 22, 28, 0, 51, 140, 13, 71, 29, 150}, +{1, 64, 442, 303, 284, 349, 202, 141, 622, 67, 154, 447, 260, 44, 652, 429, 9, 335, 237, 919, 197, 98, 167, 33, 682, 269, 547, 77, 863, 411, 340, 201}, +{1, 15, 2, 141, 515, 0, 700, 13, 3, 180, 10, 753, 5, 64, 77, 33, 4, 6, 7, 197, 102, 269, 165, 23, 134, 11, 352, 341, 291, 349, 22, 120}, +{99, 139, 12, 453, 196, 277, 775, 40, 475, 33, 23, 401, 215, 51, 11, 14, 77, 111, 313, 130, 38, 211, 37, 266, 129, 15, 339, 153, 719, 3, 369, 515}, +{33, 77, 102, 4, 23, 128, 13, 141, 202, 64, 51, 0, 40, 59, 269, 115, 117, 137, 153, 1, 318, 11, 10, 177, 15, 134, 22, 90, 196, 2, 403, 32}, +{7, 2, 14, 58, 70, 112, 16, 5, 87, 38, 46, 52, 6, 128, 135, 1, 32, 21, 155, 29, 66, 64, 0, 97, 92, 186, 172, 294, 13, 23, 20, 37}, +{15, 13, 515, 1, 700, 2, 23, 0, 753, 5, 3, 4, 51, 10, 341, 115, 365, 180, 11, 33, 317, 77, 6, 7, 217, 12, 197, 165, 117, 9, 64, 102}, +{2, 1, 14, 29, 75, 69, 67, 6, 52, 46, 38, 24, 103, 220, 83, 25, 70, 87, 262, 74, 96, 267, 50, 366, 26, 16, 226, 394, 357, 66, 108, 19}, +{9, 105, 18, 39, 1, 0, 16, 557, 101, 272, 252, 890, 326, 49, 265, 21, 137, 100, 23, 938, 13, 310, 159, 5, 31, 24, 254, 51, 30, 128, 202, 132}, +{80, 209, 45, 61, 667, 17, 6, 106, 5, 2, 151, 29, 483, 255, 454, 833, 27, 311, 112, 19, 738, 378, 1, 58, 113, 26, 25, 469, 119, 887, 32, 64}, +{13, 23, 51, 15, 5, 1, 515, 0, 21, 2, 12, 141, 700, 165, 202, 115, 753, 32, 180, 4, 3, 197, 10, 120, 457, 9, 269, 128, 64, 341, 7, 33}, +{99, 12, 453, 277, 139, 157, 369, 474, 339, 51, 38, 23, 37, 196, 188, 401, 775, 111, 11, 313, 328, 475, 153, 266, 4, 471, 79, 40, 33, 629, 102, 14}, +{7, 92, 16, 232, 97, 140, 126, 14, 60, 107, 66, 35, 298, 387, 314, 104, 246, 462, 441, 150, 0, 38, 24, 2, 172, 357, 230, 330, 5, 633, 22, 289}, +{13, 77, 23, 202, 318, 141, 33, 4, 51, 269, 102, 177, 115, 403, 137, 2, 40, 494, 90, 11, 342, 128, 31, 117, 21, 32, 7, 12, 64, 134, 14, 10}, +{13, 2, 0, 23, 141, 1, 77, 3, 180, 33, 6, 64, 15, 10, 115, 51, 4, 5, 217, 197, 7, 165, 515, 102, 22, 11, 700, 269, 40, 352, 177, 14}, +{15, 515, 700, 753, 4, 11, 1, 93, 13, 5, 180, 110, 82, 21, 120, 23, 2, 33, 10, 141, 3, 165, 197, 102, 901, 0, 32, 341, 117, 40, 153, 12}, +{15, 515, 700, 753, 1, 13, 0, 2, 23, 4, 77, 51, 3, 5, 341, 291, 7, 33, 6, 115, 10, 9, 8, 217, 11, 177, 120, 180, 102, 165, 197, 365}, +{20, 43, 198, 325, 173, 904, 104, 234, 66, 147, 77, 319, 416, 422, 97, 426, 5, 0, 7, 450, 861, 202, 712, 725, 2, 32, 639, 376, 38, 324, 945, 315}, +{105, 0, 9, 28, 49, 301, 170, 1, 127, 159, 22, 16, 31, 98, 512, 623, 24, 109, 158, 395, 35, 68, 371, 65, 713, 55, 2, 242, 293, 21, 44, 18}, +{213, 88, 689, 466, 230, 30, 321, 435, 699, 352, 217, 201, 795, 831, 144, 854, 1, 443, 96, 539, 530, 840, 418, 251, 855, 190, 93, 100, 669, 31, 957, 662}, +{130, 453, 47, 196, 4, 57, 14, 59, 236, 711, 51, 153, 730, 77, 412, 381, 23, 202, 108, 128, 361, 13, 283, 117, 11, 719, 200, 46, 34, 78, 210, 2}, +{1, 2, 5, 14, 0, 50, 36, 22, 38, 46, 65, 67, 12, 86, 114, 28, 103, 29, 208, 7, 10, 128, 21, 83, 218, 23, 96, 54, 194, 6, 133, 51}, +{6, 26, 74, 19, 165, 453, 14, 730, 1, 125, 197, 50, 29, 51, 138, 357, 13, 2, 108, 391, 70, 719, 46, 457, 47, 500, 386, 262, 112, 23, 235, 52}, +{9, 10, 376, 20, 43, 0, 49, 18, 30, 120, 2, 33, 325, 104, 501, 470, 77, 788, 725, 102, 523, 39, 858, 5, 904, 414, 174, 55, 137, 37, 342, 13}, +{15, 515, 700, 753, 0, 1, 13, 23, 51, 77, 120, 202, 341, 82, 5, 4, 9, 260, 2, 137, 141, 128, 115, 351, 901, 8, 180, 10, 197, 21, 450, 33}, +{105, 131, 272, 578, 9, 49, 371, 219, 159, 616, 286, 320, 224, 187, 716, 98, 28, 22, 0, 623, 127, 258, 910, 737, 385, 31, 239, 347, 254, 109, 424, 95}, +{457, 51, 13, 23, 961, 12, 719, 99, 453, 15, 4, 515, 165, 401, 629, 3, 700, 11, 17, 14, 2, 37, 753, 41, 57, 569, 38, 45, 0, 33, 5, 32}, +{202, 120, 5, 33, 318, 77, 450, 102, 1, 260, 403, 128, 494, 21, 165, 13, 269, 12, 326, 23, 342, 523, 402, 2, 817, 64, 15, 141, 125, 82, 457, 475}, +{141, 269, 352, 217, 180, 64, 349, 137, 202, 160, 317, 15, 372, 515, 700, 752, 318, 753, 244, 13, 437, 291, 165, 864, 22, 237, 5, 82, 954, 21, 77, 418}, +{70, 29, 2, 145, 74, 112, 26, 6, 75, 52, 19, 66, 632, 1, 87, 220, 5, 135, 163, 287, 307, 25, 226, 7, 58, 396, 294, 278, 113, 409, 69, 151}, +{82, 351, 317, 15, 752, 180, 898, 352, 141, 901, 515, 341, 10, 700, 365, 1, 753, 498, 0, 217, 253, 115, 55, 854, 33, 5, 143, 32, 21, 160, 36, 197}, +{39, 9, 310, 254, 0, 30, 101, 49, 252, 272, 100, 265, 105, 455, 159, 557, 190, 333, 286, 688, 18, 166, 1, 158, 709, 16, 625, 627, 31, 131, 327, 329}, +{2, 58, 29, 5, 1, 151, 186, 52, 70, 45, 7, 549, 14, 75, 112, 400, 113, 155, 61, 46, 227, 163, 311, 315, 66, 6, 307, 27, 17, 220, 287, 74}, +{141, 217, 13, 21, 352, 23, 269, 77, 180, 115, 317, 64, 202, 15, 349, 137, 5, 51, 165, 291, 318, 752, 372, 4, 0, 102, 33, 365, 197, 32, 341, 125}, +{68, 35, 0, 9, 65, 101, 149, 124, 24, 154, 175, 16, 28, 7, 67, 1, 18, 189, 114, 398, 55, 14, 345, 39, 118, 133, 69, 2, 230, 429, 71, 283}, +{66, 7, 29, 2, 112, 52, 20, 43, 97, 151, 74, 192, 135, 5, 173, 525, 337, 45, 145, 58, 415, 25, 14, 32, 644, 70, 544, 226, 222, 21, 6, 580}, +{31, 125, 44, 22, 116, 299, 242, 55, 1, 170, 64, 36, 479, 870, 456, 685, 10, 599, 558, 0, 268, 506, 28, 740, 23, 903, 492, 164, 393, 206, 2, 86}, +{188, 11, 79, 12, 99, 377, 94, 33, 542, 339, 40, 474, 111, 37, 4, 51, 102, 453, 139, 775, 13, 475, 23, 961, 277, 471, 134, 57, 431, 266, 115, 117}, +{658, 698, 340, 98, 296, 303, 1, 31, 850, 363, 156, 919, 44, 774, 586, 385, 120, 77, 82, 10, 223, 30, 354, 291, 23, 914, 478, 87, 260, 163, 48, 13}, +{15, 515, 700, 753, 82, 4, 1, 13, 901, 33, 197, 11, 5, 10, 23, 165, 2, 0, 180, 3, 21, 77, 51, 120, 365, 115, 217, 40, 117, 102, 32, 401}, +{15, 515, 700, 753, 4, 11, 5, 13, 1, 141, 3, 180, 23, 202, 21, 2, 269, 64, 165, 33, 40, 32, 0, 318, 120, 128, 12, 197, 117, 352, 51, 17}, +{91, 6, 233, 85, 370, 718, 81, 65, 25, 256, 63, 343, 42, 74, 235, 123, 138, 511, 397, 249, 26, 194, 650, 355, 64, 87, 544, 18, 90, 643, 66, 214}, +{23, 13, 202, 51, 21, 120, 1, 5, 141, 128, 450, 64, 318, 403, 15, 137, 260, 33, 12, 48, 32, 31, 125, 494, 269, 102, 165, 515, 77, 2, 197, 14}, +{180, 317, 365, 341, 752, 217, 115, 352, 901, 482, 372, 498, 1, 141, 15, 253, 515, 244, 2, 700, 0, 21, 13, 82, 23, 4, 579, 351, 753, 291, 269, 77}, +{13, 115, 197, 341, 9, 352, 468, 237, 64, 498, 23, 165, 22, 509, 901, 546, 482, 180, 28, 569, 317, 51, 365, 873, 391, 95, 86, 217, 49, 837, 752, 706}, +{13, 23, 51, 1, 141, 5, 165, 202, 21, 120, 64, 125, 180, 15, 2, 33, 197, 115, 128, 32, 260, 269, 12, 82, 4, 515, 137, 7, 318, 93, 0, 700}, +{214, 289, 90, 174, 874, 6, 138, 280, 65, 81, 64, 85, 355, 751, 194, 233, 312, 348, 835, 91, 0, 32, 343, 636, 249, 29, 875, 288, 519, 104, 247, 74}, +{15, 515, 700, 753, 4, 5, 11, 13, 1, 33, 23, 21, 2, 3, 102, 32, 141, 77, 180, 117, 31, 64, 0, 40, 134, 196, 120, 352, 12, 44, 197, 6}, +{33, 15, 13, 515, 117, 23, 700, 217, 134, 753, 0, 51, 153, 77, 141, 2, 4, 64, 196, 1, 3, 180, 10, 115, 5, 102, 6, 11, 22, 202, 165, 7}, +{15, 515, 700, 753, 33, 4, 77, 102, 1, 40, 13, 117, 11, 115, 134, 5, 21, 153, 23, 217, 3, 32, 2, 317, 120, 196, 180, 141, 51, 12, 59, 260}, +{15, 515, 700, 753, 13, 0, 1, 23, 2, 217, 51, 3, 4, 5, 8, 317, 115, 9, 341, 10, 202, 180, 6, 365, 7, 82, 457, 22, 120, 901, 33, 291}, +{7, 2, 135, 20, 97, 14, 66, 52, 337, 673, 192, 29, 43, 355, 353, 5, 16, 294, 107, 376, 147, 226, 331, 560, 64, 470, 222, 104, 415, 32, 4, 324}, +{195, 132, 142, 167, 146, 77, 363, 271, 121, 354, 202, 120, 647, 178, 786, 212, 687, 0, 101, 878, 16, 522, 60, 5, 450, 411, 35, 55, 98, 639, 259, 318}, +{202, 77, 20, 0, 318, 66, 104, 128, 102, 269, 177, 43, 33, 7, 216, 291, 494, 5, 2, 342, 74, 173, 97, 112, 450, 22, 337, 10, 234, 52, 64, 678}, +{107, 362, 612, 356, 359, 97, 414, 43, 259, 20, 392, 7, 298, 147, 819, 683, 465, 173, 729, 660, 319, 14, 5, 779, 581, 595, 246, 35, 501, 92, 0, 230}, +{6, 165, 14, 453, 13, 51, 19, 23, 386, 457, 74, 391, 308, 2, 26, 401, 47, 758, 603, 108, 719, 366, 1, 29, 309, 730, 324, 197, 133, 70, 115, 867}, +{179, 72, 205, 180, 247, 245, 4, 490, 352, 59, 317, 152, 79, 498, 94, 217, 148, 76, 752, 864, 11, 216, 141, 405, 89, 452, 197, 111, 497, 188, 37, 21}, +{107, 7, 298, 314, 14, 359, 32, 392, 232, 279, 172, 97, 60, 581, 387, 126, 121, 0, 534, 493, 356, 92, 441, 95, 13, 21, 35, 147, 22, 5, 16, 362}, +{156, 271, 354, 586, 360, 132, 591, 195, 121, 18, 340, 1, 5, 13, 21, 48, 668, 446, 23, 463, 296, 658, 60, 55, 407, 698, 146, 70, 626, 51, 163, 24}, +{13, 23, 51, 4, 0, 12, 457, 15, 11, 453, 2, 515, 5, 1, 99, 10, 115, 165, 700, 475, 401, 403, 3, 961, 40, 14, 37, 753, 719, 32, 64, 569}, +{48, 125, 21, 165, 13, 221, 23, 763, 423, 508, 197, 5, 98, 92, 193, 16, 441, 386, 64, 314, 293, 457, 391, 140, 49, 60, 102, 693, 683, 51, 35, 867}, +{202, 77, 120, 450, 5, 318, 1, 494, 0, 195, 18, 132, 523, 403, 326, 604, 354, 260, 121, 576, 203, 167, 234, 817, 682, 49, 35, 615, 21, 20, 13, 102}, +{39, 9, 166, 30, 0, 101, 158, 68, 404, 190, 333, 274, 252, 310, 88, 100, 49, 28, 344, 35, 21, 22, 419, 131, 438, 1, 16, 65, 530, 694, 124, 10}, +{15, 515, 700, 753, 110, 4, 1, 11, 165, 180, 93, 13, 82, 5, 2, 197, 33, 120, 0, 3, 10, 23, 21, 115, 901, 217, 341, 77, 317, 51, 32, 117}, +{2, 29, 1, 14, 6, 52, 5, 46, 50, 26, 70, 19, 103, 58, 38, 67, 96, 262, 516, 309, 218, 133, 108, 27, 75, 17, 112, 114, 24, 487, 331, 83}, +{120, 77, 15, 13, 1, 141, 260, 23, 515, 217, 110, 51, 137, 700, 317, 202, 165, 291, 180, 21, 753, 128, 0, 177, 326, 93, 450, 82, 64, 269, 197, 5}, +{255, 59, 554, 297, 183, 56, 33, 444, 108, 358, 123, 196, 269, 122, 77, 153, 57, 177, 117, 730, 19, 467, 605, 130, 128, 50, 275, 4, 291, 475, 134, 133}, +{13, 23, 51, 12, 153, 14, 117, 120, 165, 134, 99, 401, 38, 453, 15, 128, 197, 719, 64, 515, 475, 403, 37, 33, 196, 700, 40, 125, 5, 0, 54, 2}, +{64, 33, 174, 348, 95, 108, 467, 554, 56, 0, 25, 306, 233, 6, 63, 511, 343, 120, 13, 85, 29, 561, 543, 707, 319, 180, 899, 355, 77, 49, 256, 18}, +{120, 260, 51, 23, 77, 15, 202, 1, 93, 82, 141, 450, 13, 326, 515, 137, 21, 5, 64, 33, 110, 700, 128, 165, 318, 203, 269, 102, 351, 753, 197, 125}, +{15, 515, 700, 753, 4, 13, 11, 1, 5, 21, 23, 2, 33, 64, 3, 180, 32, 141, 22, 102, 77, 0, 10, 93, 82, 352, 117, 40, 341, 31, 165, 6}, +{15, 515, 700, 753, 341, 13, 23, 141, 33, 1, 0, 217, 4, 77, 180, 10, 82, 351, 51, 137, 5, 64, 9, 317, 21, 11, 102, 40, 260, 202, 854, 115}, +{105, 272, 131, 22, 327, 286, 28, 239, 320, 9, 109, 578, 219, 49, 98, 224, 95, 159, 538, 371, 616, 127, 187, 64, 713, 55, 0, 170, 168, 258, 716, 623}, +{16, 18, 68, 35, 24, 60, 71, 118, 92, 126, 0, 9, 101, 191, 7, 55, 154, 175, 212, 14, 167, 150, 302, 28, 375, 1, 107, 124, 346, 273, 21, 108}, +{20, 147, 43, 470, 376, 142, 904, 178, 427, 798, 0, 595, 198, 325, 858, 319, 61, 202, 173, 97, 5, 422, 14, 22, 107, 259, 32, 49, 887, 77, 414, 392}, +{13, 23, 51, 12, 33, 15, 99, 64, 128, 515, 453, 202, 117, 153, 37, 102, 700, 40, 134, 196, 120, 0, 2, 753, 141, 14, 38, 3, 82, 403, 77, 21}, +{383, 17, 62, 136, 84, 119, 56, 440, 3, 504, 240, 80, 378, 129, 123, 548, 106, 128, 4, 11, 14, 555, 162, 32, 184, 361, 59, 64, 205, 5, 469, 57}, +{70, 1, 48, 652, 5, 638, 846, 888, 21, 349, 269, 260, 340, 562, 767, 761, 163, 883, 774, 141, 125, 518, 591, 0, 23, 9, 87, 13, 371, 303, 622, 31}, +{66, 135, 6, 97, 74, 278, 69, 7, 14, 324, 267, 172, 2, 140, 462, 1, 357, 38, 808, 550, 92, 841, 189, 29, 16, 25, 298, 87, 75, 204, 24, 335}, +{51, 23, 33, 13, 102, 40, 12, 128, 64, 77, 10, 202, 0, 196, 117, 4, 14, 99, 134, 453, 65, 153, 11, 475, 139, 403, 22, 141, 86, 2, 21, 15}, +{88, 100, 264, 166, 274, 435, 772, 1, 382, 921, 96, 478, 30, 438, 639, 909, 897, 521, 190, 466, 960, 410, 9, 144, 530, 418, 31, 329, 265, 691, 778, 93}, +{62, 440, 136, 56, 84, 3, 504, 548, 555, 383, 4, 17, 129, 128, 507, 361, 123, 59, 119, 162, 14, 57, 152, 328, 161, 11, 202, 495, 184, 27, 80, 215}, +{911, 617, 332, 959, 206, 141, 253, 244, 282, 384, 110, 120, 10, 260, 352, 143, 951, 811, 269, 373, 160, 417, 93, 531, 728, 203, 434, 940, 137, 55, 36, 717}, +{120, 15, 260, 141, 77, 1, 515, 82, 700, 351, 33, 23, 450, 13, 110, 326, 64, 217, 269, 753, 203, 137, 102, 5, 165, 21, 51, 291, 93, 177, 373, 128}, +{15, 515, 700, 753, 0, 1, 2, 23, 13, 51, 5, 9, 82, 901, 180, 8, 3, 4, 120, 6, 7, 141, 93, 12, 197, 341, 10, 33, 115, 730, 64, 125}, +{7, 104, 97, 107, 356, 232, 66, 560, 298, 289, 14, 707, 38, 568, 359, 64, 20, 0, 65, 324, 22, 214, 92, 32, 192, 5, 387, 43, 712, 90, 172, 95}, +{6, 1, 2, 66, 67, 14, 74, 24, 108, 29, 69, 83, 458, 7, 25, 38, 135, 103, 36, 150, 451, 114, 52, 594, 75, 65, 380, 18, 267, 602, 19, 278}, +{13, 23, 51, 12, 115, 21, 202, 5, 457, 15, 4, 1, 64, 719, 0, 403, 2, 3, 453, 165, 99, 141, 401, 128, 32, 515, 10, 37, 523, 197, 120, 700}, +{57, 59, 4, 11, 412, 381, 77, 53, 421, 291, 250, 368, 99, 14, 27, 369, 803, 283, 23, 108, 403, 19, 339, 210, 0, 401, 12, 444, 236, 40, 361, 736}, +{15, 515, 700, 1, 0, 753, 2, 13, 23, 5, 51, 180, 3, 115, 6, 7, 457, 4, 9, 8, 12, 82, 197, 165, 141, 901, 120, 719, 33, 64, 21, 22}, +{64, 95, 180, 247, 929, 146, 90, 126, 197, 32, 237, 60, 288, 165, 316, 92, 5, 13, 77, 7, 217, 955, 522, 22, 16, 314, 132, 4, 317, 10, 312, 86}, +{15, 1, 120, 13, 23, 515, 0, 51, 700, 180, 141, 2, 5, 202, 21, 260, 753, 165, 137, 33, 77, 110, 197, 128, 326, 7, 450, 4, 102, 9, 269, 12}, +{14, 2, 16, 46, 1, 7, 24, 69, 75, 35, 38, 50, 29, 220, 52, 140, 267, 67, 18, 54, 70, 309, 5, 60, 92, 189, 171, 87, 71, 163, 58, 0}, +{31, 98, 127, 44, 9, 299, 0, 276, 293, 284, 116, 49, 935, 599, 105, 22, 456, 201, 28, 1, 39, 125, 242, 137, 371, 144, 131, 492, 159, 272, 51, 395}, +{6, 27, 151, 53, 573, 445, 297, 113, 26, 73, 436, 19, 491, 250, 396, 315, 45, 112, 145, 58, 614, 881, 25, 34, 611, 200, 17, 80, 70, 5, 138, 631}, +{32, 693, 81, 788, 90, 804, 403, 56, 494, 21, 84, 397, 202, 65, 18, 77, 64, 681, 214, 725, 523, 784, 526, 33, 102, 825, 240, 0, 115, 241, 817, 91}, +{24, 7, 14, 2, 18, 16, 65, 0, 108, 149, 28, 69, 1, 71, 154, 36, 124, 35, 67, 140, 189, 429, 92, 68, 66, 22, 55, 118, 302, 150, 9, 6}, +{0, 68, 9, 35, 65, 101, 189, 212, 114, 67, 124, 69, 1, 154, 149, 39, 230, 64, 252, 16, 88, 702, 103, 100, 18, 336, 28, 329, 520, 83, 30, 755}, +{5, 2, 186, 29, 61, 45, 17, 1, 52, 48, 58, 171, 155, 227, 80, 209, 311, 21, 14, 46, 50, 106, 243, 513, 334, 502, 496, 38, 3, 6, 32, 592}, +{15, 515, 700, 753, 13, 1, 2, 0, 3, 4, 5, 23, 341, 11, 10, 33, 6, 51, 165, 117, 153, 7, 180, 12, 365, 901, 77, 569, 197, 115, 64, 9}, +{13, 15, 23, 515, 0, 51, 1, 700, 4, 2, 753, 10, 3, 5, 12, 77, 33, 961, 165, 457, 197, 11, 115, 9, 22, 102, 40, 403, 202, 21, 14, 59}, +{15, 515, 700, 753, 13, 0, 1, 23, 2, 33, 102, 5, 4, 10, 9, 3, 51, 115, 77, 7, 6, 341, 12, 11, 217, 40, 457, 196, 180, 165, 8, 523}, +{166, 39, 30, 274, 190, 100, 333, 438, 530, 310, 88, 252, 0, 9, 539, 265, 1, 656, 404, 101, 625, 131, 778, 254, 31, 455, 676, 329, 724, 158, 21, 23}, +{734, 148, 94, 308, 431, 115, 37, 89, 111, 413, 79, 468, 197, 629, 341, 474, 569, 12, 13, 873, 179, 401, 11, 4, 180, 23, 205, 72, 59, 365, 134, 51}, +{539, 228, 224, 219, 816, 190, 30, 258, 871, 840, 669, 93, 406, 530, 957, 187, 160, 531, 748, 137, 131, 88, 863, 36, 728, 839, 44, 213, 352, 116, 202, 466}, +{393, 791, 125, 801, 730, 551, 386, 23, 31, 175, 93, 98, 51, 13, 144, 788, 126, 203, 21, 345, 116, 22, 949, 110, 575, 165, 326, 44, 0, 4, 60, 221}, +{13, 23, 77, 141, 0, 4, 51, 2, 33, 115, 64, 1, 10, 3, 6, 15, 11, 102, 7, 217, 180, 40, 515, 22, 128, 177, 202, 9, 700, 269, 165, 5}, +{2, 29, 7, 70, 52, 14, 1, 58, 112, 46, 75, 5, 171, 163, 87, 220, 307, 151, 186, 334, 38, 66, 155, 16, 69, 135, 278, 45, 262, 97, 6, 21}, +{88, 321, 213, 100, 230, 435, 689, 466, 1, 382, 30, 352, 217, 699, 410, 96, 795, 36, 921, 752, 190, 141, 144, 180, 44, 831, 317, 83, 443, 31, 840, 251}, +{363, 411, 101, 520, 354, 9, 195, 668, 132, 156, 447, 1, 905, 364, 18, 23, 765, 664, 146, 5, 360, 13, 121, 96, 98, 31, 252, 39, 100, 759, 264, 551}, +{13, 23, 51, 730, 12, 719, 453, 457, 401, 475, 5, 21, 403, 2, 0, 1, 15, 4, 3, 899, 99, 32, 165, 11, 515, 308, 197, 115, 6, 961, 700, 523}, +{72, 76, 89, 12, 37, 4, 308, 179, 38, 528, 90, 431, 54, 205, 148, 184, 401, 57, 152, 474, 23, 59, 51, 245, 428, 11, 32, 99, 405, 316, 257, 21}, +{376, 20, 43, 147, 470, 173, 97, 595, 107, 319, 414, 142, 819, 5, 729, 178, 858, 7, 427, 32, 426, 104, 14, 0, 392, 362, 259, 61, 230, 77, 560, 246}, +{202, 141, 269, 494, 318, 137, 51, 128, 403, 4, 217, 96, 77, 5, 64, 177, 291, 180, 15, 352, 102, 10, 33, 349, 2, 317, 0, 341, 120, 515, 21, 453}, +{77, 202, 33, 128, 102, 318, 494, 269, 13, 0, 117, 23, 342, 291, 403, 15, 134, 51, 153, 141, 177, 515, 82, 137, 196, 700, 203, 64, 22, 351, 753, 4}, +{253, 110, 951, 352, 499, 811, 10, 854, 180, 638, 244, 559, 642, 752, 564, 8, 141, 143, 417, 341, 901, 260, 206, 197, 922, 661, 93, 15, 498, 373, 165, 911}, +{141, 13, 23, 180, 4, 217, 5, 1, 269, 317, 21, 0, 2, 202, 115, 51, 352, 77, 3, 197, 64, 341, 318, 15, 291, 9, 137, 93, 32, 165, 515, 33}, +{9, 0, 18, 252, 16, 101, 68, 39, 24, 118, 35, 109, 158, 329, 28, 167, 60, 364, 333, 265, 49, 100, 22, 419, 553, 55, 1, 677, 71, 7, 212, 159}, +{28, 109, 9, 39, 0, 158, 49, 22, 168, 35, 55, 175, 1, 65, 67, 185, 194, 159, 289, 95, 272, 114, 30, 105, 86, 584, 36, 169, 254, 2, 83, 24}, +{15, 515, 13, 700, 1, 753, 2, 23, 0, 3, 4, 5, 33, 341, 11, 51, 6, 10, 197, 115, 901, 180, 77, 40, 102, 12, 365, 165, 141, 217, 7, 317}, +{173, 693, 104, 422, 5, 18, 61, 32, 102, 0, 20, 13, 784, 560, 33, 66, 397, 526, 49, 207, 29, 25, 510, 707, 65, 6, 11, 344, 21, 263, 81, 77}, +{23, 13, 386, 51, 308, 801, 719, 221, 401, 949, 21, 730, 165, 421, 102, 115, 125, 33, 341, 670, 468, 117, 770, 1, 120, 6, 197, 14, 403, 97, 67, 958}, +{0, 49, 105, 16, 28, 24, 159, 9, 158, 320, 1, 68, 35, 239, 170, 18, 109, 7, 55, 65, 2, 95, 301, 124, 347, 14, 21, 154, 22, 127, 286, 31}, +{2, 5, 1, 207, 45, 29, 32, 58, 76, 61, 6, 263, 292, 655, 72, 14, 17, 476, 7, 119, 52, 306, 70, 64, 21, 90, 186, 214, 106, 38, 3, 790}, +{21, 6, 125, 49, 13, 64, 715, 66, 115, 95, 197, 33, 22, 32, 204, 165, 56, 278, 0, 408, 241, 120, 4, 808, 681, 350, 263, 85, 81, 571, 135, 509}, +{612, 427, 325, 107, 202, 5, 376, 49, 64, 392, 403, 470, 21, 147, 31, 788, 494, 14, 362, 465, 858, 98, 20, 804, 518, 43, 845, 318, 125, 97, 725, 534}, +{32, 21, 76, 72, 2, 1, 14, 5, 241, 449, 89, 38, 350, 221, 155, 48, 50, 292, 37, 46, 45, 90, 270, 54, 17, 179, 214, 12, 148, 430, 476, 413}, +{24, 0, 28, 16, 7, 124, 35, 154, 14, 149, 65, 18, 9, 68, 55, 108, 175, 71, 2, 1, 22, 109, 92, 67, 484, 336, 118, 69, 302, 398, 570, 420}, +{1, 5, 14, 2, 48, 50, 38, 67, 46, 21, 0, 54, 45, 270, 281, 12, 24, 32, 155, 96, 513, 103, 290, 83, 61, 58, 36, 17, 37, 72, 69, 181}, +{13, 961, 569, 197, 37, 15, 23, 474, 515, 94, 148, 111, 12, 165, 629, 341, 700, 79, 901, 401, 51, 405, 753, 10, 134, 4, 115, 734, 873, 11, 89, 117}, +{33, 23, 102, 51, 13, 40, 77, 128, 64, 202, 141, 15, 4, 12, 0, 1, 2, 117, 22, 11, 10, 403, 153, 515, 99, 318, 137, 269, 139, 196, 700, 134}, +{0, 1, 24, 67, 9, 16, 18, 35, 28, 69, 103, 50, 5, 2, 65, 12, 83, 68, 7, 96, 14, 22, 21, 149, 75, 114, 13, 133, 23, 71, 218, 54}, +{384, 617, 940, 332, 855, 911, 206, 959, 434, 282, 141, 10, 93, 253, 244, 110, 144, 268, 120, 36, 352, 137, 417, 203, 116, 31, 44, 269, 160, 201, 143, 951}, +{30, 93, 473, 137, 31, 704, 450, 652, 190, 203, 800, 254, 166, 274, 326, 144, 269, 160, 127, 303, 120, 625, 88, 848, 110, 435, 77, 521, 349, 131, 340, 744}, +{53, 27, 73, 26, 19, 250, 297, 200, 25, 630, 17, 6, 611, 122, 34, 42, 714, 235, 472, 65, 436, 14, 80, 684, 690, 106, 45, 113, 680, 108, 64, 4}, +{15, 515, 1, 2, 700, 0, 753, 3, 5, 141, 180, 4, 13, 77, 33, 10, 217, 6, 7, 134, 11, 352, 197, 64, 165, 341, 317, 23, 12, 115, 102, 40}, +{254, 530, 39, 613, 688, 221, 30, 31, 438, 190, 228, 960, 1, 44, 141, 21, 180, 406, 23, 166, 9, 202, 13, 96, 137, 48, 131, 829, 317, 269, 393, 51}, +{9, 39, 28, 35, 30, 166, 158, 36, 0, 175, 101, 346, 364, 67, 49, 68, 168, 420, 88, 1, 194, 131, 100, 352, 55, 83, 190, 64, 137, 570, 86, 65}, +{62, 56, 3, 548, 555, 507, 440, 161, 34, 4, 215, 136, 162, 514, 361, 527, 17, 14, 211, 130, 328, 11, 383, 123, 84, 183, 38, 57, 184, 152, 205, 494}, +{92, 126, 107, 7, 356, 493, 97, 279, 359, 298, 16, 246, 35, 60, 14, 441, 362, 121, 43, 423, 5, 132, 392, 20, 508, 230, 199, 146, 232, 173, 150, 414}, +{15, 82, 141, 515, 291, 922, 349, 700, 217, 260, 372, 120, 351, 93, 77, 753, 318, 352, 373, 854, 1, 326, 269, 21, 13, 102, 144, 202, 64, 23, 203, 137}, +{141, 217, 352, 115, 180, 13, 269, 317, 752, 77, 23, 21, 341, 197, 5, 372, 244, 291, 9, 64, 51, 102, 4, 1, 365, 2, 165, 33, 3, 48, 237, 351}, +{78, 47, 390, 19, 130, 453, 108, 27, 711, 813, 730, 444, 412, 283, 196, 690, 123, 14, 128, 26, 250, 389, 650, 236, 200, 65, 51, 4, 34, 183, 297, 73}, +{34, 250, 297, 80, 472, 64, 495, 17, 311, 3, 148, 45, 667, 61, 176, 53, 243, 27, 90, 161, 469, 141, 483, 151, 62, 128, 29, 4, 58, 56, 5, 231}, +{51, 23, 33, 13, 551, 77, 102, 326, 421, 21, 523, 120, 5, 899, 453, 692, 202, 153, 308, 615, 115, 958, 450, 401, 791, 68, 221, 93, 475, 18, 403, 4}, +{98, 223, 393, 363, 411, 1, 478, 834, 664, 156, 284, 691, 447, 791, 914, 293, 354, 724, 697, 9, 807, 541, 759, 51, 18, 421, 48, 264, 948, 586, 195, 848}, +{7, 14, 107, 232, 16, 92, 2, 60, 46, 5, 359, 121, 24, 526, 220, 620, 135, 1, 172, 21, 126, 314, 132, 77, 18, 75, 32, 278, 12, 23, 52, 38}, +{32, 76, 2, 1, 21, 72, 241, 14, 5, 48, 292, 89, 476, 45, 720, 270, 179, 90, 17, 214, 148, 38, 50, 29, 129, 155, 350, 46, 290, 227, 123, 464}, +{15, 515, 700, 753, 13, 23, 33, 77, 51, 4, 102, 0, 32, 202, 1, 11, 128, 82, 117, 141, 40, 5, 110, 8, 3, 90, 137, 21, 10, 318, 403, 165}, +{66, 6, 69, 2, 1, 74, 14, 135, 278, 267, 380, 24, 29, 97, 67, 38, 103, 75, 7, 388, 324, 25, 52, 150, 87, 83, 189, 357, 335, 108, 204, 172}, +{152, 4, 339, 59, 79, 471, 188, 11, 77, 94, 128, 33, 529, 377, 12, 111, 102, 202, 452, 402, 216, 99, 13, 542, 51, 40, 474, 37, 64, 291, 23, 961}, +{15, 515, 700, 753, 1, 0, 196, 13, 33, 2, 77, 5, 23, 102, 3, 10, 9, 7, 217, 4, 6, 153, 117, 177, 14, 457, 115, 12, 40, 730, 11, 134}, +{17, 209, 45, 106, 207, 5, 255, 119, 62, 2, 61, 3, 263, 742, 306, 655, 425, 378, 32, 56, 29, 136, 84, 80, 311, 58, 186, 240, 243, 383, 14, 21}, +{120, 260, 450, 15, 1, 23, 817, 13, 515, 523, 326, 5, 700, 51, 82, 31, 202, 64, 21, 753, 318, 93, 32, 269, 98, 33, 351, 77, 102, 125, 457, 165}, +{116, 492, 268, 93, 23, 206, 203, 0, 551, 918, 13, 51, 8, 22, 417, 940, 120, 10, 499, 31, 949, 791, 125, 523, 165, 473, 341, 730, 421, 959, 401, 391}, +{15, 515, 700, 753, 165, 13, 0, 1, 197, 23, 4, 82, 120, 2, 180, 12, 260, 719, 8, 3, 386, 117, 5, 523, 901, 11, 341, 51, 10, 9, 141, 351}, +{14, 24, 69, 7, 2, 66, 108, 1, 67, 6, 36, 398, 18, 267, 150, 97, 29, 38, 83, 149, 65, 74, 28, 0, 189, 71, 388, 16, 273, 124, 46, 22}, +{330, 96, 523, 335, 367, 662, 141, 839, 1, 922, 372, 615, 244, 717, 269, 443, 418, 352, 403, 692, 217, 854, 752, 180, 36, 64, 498, 576, 349, 201, 98, 284}, +{184, 90, 257, 205, 245, 229, 57, 152, 769, 17, 524, 5, 32, 497, 45, 432, 619, 2, 452, 266, 4, 106, 1, 21, 179, 59, 76, 3, 460, 292, 381, 128}, +{7, 14, 16, 2, 46, 5, 70, 107, 87, 13, 58, 307, 92, 32, 38, 23, 202, 0, 172, 24, 18, 21, 60, 128, 77, 35, 20, 10, 9, 4, 171, 112}, +{7, 66, 140, 16, 14, 92, 97, 69, 267, 172, 189, 24, 380, 2, 35, 60, 298, 451, 230, 135, 314, 74, 150, 71, 38, 357, 6, 330, 67, 423, 21, 443}, +{121, 167, 354, 132, 18, 446, 147, 101, 212, 146, 407, 16, 55, 35, 647, 191, 20, 271, 199, 68, 60, 259, 463, 107, 9, 126, 363, 7, 195, 43, 14, 411}, +{76, 90, 179, 32, 205, 21, 184, 460, 257, 288, 45, 245, 316, 5, 57, 152, 241, 2, 358, 1, 229, 72, 524, 148, 48, 769, 17, 4, 12, 38, 14, 720}, +{147, 259, 178, 878, 427, 465, 581, 198, 786, 798, 142, 534, 325, 929, 20, 362, 35, 132, 107, 376, 43, 5, 279, 77, 49, 146, 70, 202, 590, 771, 33, 14}, +{473, 93, 450, 778, 141, 30, 855, 466, 144, 203, 330, 530, 88, 523, 459, 372, 201, 617, 839, 704, 254, 321, 934, 326, 39, 36, 82, 717, 332, 213, 559, 403}, +{523, 475, 51, 899, 730, 453, 23, 719, 403, 33, 457, 13, 421, 386, 4, 120, 117, 196, 102, 153, 15, 801, 450, 817, 515, 260, 202, 11, 700, 99, 165, 125}, +{15, 1, 13, 515, 0, 2, 700, 5, 23, 753, 4, 3, 341, 317, 10, 115, 180, 11, 33, 64, 217, 77, 117, 165, 197, 7, 6, 365, 9, 141, 102, 134}, +{19, 4, 119, 40, 33, 202, 27, 84, 102, 56, 77, 73, 504, 485, 26, 494, 757, 63, 862, 59, 23, 300, 25, 12, 128, 11, 5, 13, 342, 880, 469, 6}, +{32, 20, 2, 13, 5, 21, 23, 6, 12, 38, 43, 29, 64, 7, 95, 51, 61, 207, 48, 147, 90, 178, 17, 182, 49, 0, 115, 202, 52, 362, 37, 22}, +{339, 188, 11, 79, 4, 94, 377, 12, 99, 111, 542, 102, 37, 33, 474, 51, 471, 40, 453, 152, 77, 13, 59, 403, 342, 23, 117, 57, 475, 134, 128, 38}, +{34, 128, 283, 176, 495, 231, 318, 432, 503, 275, 529, 527, 161, 53, 3, 202, 56, 291, 585, 469, 73, 17, 14, 412, 57, 27, 80, 245, 250, 381, 402, 51}, +{15, 515, 13, 700, 1, 217, 141, 120, 23, 180, 753, 115, 365, 51, 317, 341, 77, 260, 0, 291, 110, 137, 202, 5, 21, 269, 64, 36, 349, 2, 4, 10}, +{13, 15, 961, 515, 700, 753, 4, 12, 2, 457, 3, 11, 197, 51, 37, 569, 115, 23, 5, 0, 99, 10, 1, 134, 6, 111, 165, 33, 72, 40, 38, 79}, +{15, 515, 700, 753, 13, 1, 0, 2, 23, 33, 5, 3, 10, 4, 9, 115, 7, 102, 6, 51, 12, 217, 77, 11, 40, 457, 569, 341, 117, 317, 14, 719}, +{5, 76, 2, 32, 292, 214, 45, 1, 129, 519, 123, 179, 90, 710, 17, 29, 460, 72, 14, 207, 21, 249, 58, 205, 464, 263, 618, 48, 6, 245, 3, 257}, +{72, 76, 32, 4, 21, 12, 38, 23, 99, 54, 89, 3, 14, 17, 51, 57, 11, 90, 13, 488, 179, 2, 59, 148, 45, 37, 5, 115, 401, 1, 10, 421}, +{98, 223, 393, 1, 834, 264, 284, 791, 724, 293, 478, 772, 697, 909, 363, 682, 905, 447, 541, 821, 411, 51, 421, 9, 807, 48, 765, 31, 730, 96, 386, 410}, +{341, 13, 509, 8, 23, 638, 165, 901, 762, 10, 569, 242, 391, 197, 873, 642, 506, 499, 629, 961, 15, 180, 116, 456, 206, 546, 417, 1, 338, 457, 515, 867}, +{1, 2, 5, 50, 14, 38, 46, 114, 0, 36, 29, 22, 218, 65, 86, 96, 137, 21, 133, 285, 12, 10, 323, 181, 17, 58, 51, 23, 67, 7, 28, 6}, +{481, 878, 202, 13, 5, 23, 182, 32, 269, 21, 1, 318, 77, 142, 557, 494, 141, 33, 640, 137, 70, 291, 2, 51, 260, 415, 929, 403, 120, 58, 4, 259}, +{15, 515, 700, 753, 1, 4, 13, 0, 2, 5, 341, 3, 11, 180, 134, 12, 10, 317, 197, 365, 33, 21, 23, 165, 117, 6, 77, 7, 217, 37, 32, 498}, +{25, 119, 19, 6, 26, 42, 27, 17, 4, 790, 45, 814, 2, 469, 483, 84, 122, 1, 0, 33, 32, 128, 76, 80, 611, 113, 73, 56, 5, 240, 202, 77}, +{14, 2, 7, 1, 24, 0, 65, 6, 16, 69, 67, 22, 124, 28, 108, 5, 18, 36, 86, 10, 38, 46, 66, 398, 289, 168, 12, 83, 21, 23, 610, 13}, +{51, 23, 128, 13, 15, 202, 12, 120, 33, 64, 141, 82, 10, 515, 0, 403, 700, 3, 1, 99, 117, 269, 153, 165, 753, 5, 318, 197, 102, 260, 2, 137}, +{16, 35, 24, 0, 9, 18, 7, 1, 68, 69, 50, 71, 103, 65, 67, 189, 133, 23, 28, 13, 60, 537, 149, 335, 75, 21, 64, 5, 114, 2, 12, 14}, +{754, 803, 133, 576, 880, 543, 2, 1, 657, 50, 14, 38, 46, 5, 29, 67, 218, 36, 58, 171, 52, 96, 24, 103, 775, 0, 114, 83, 181, 54, 65, 45}, +{21, 32, 5, 3, 2, 17, 14, 72, 76, 1, 12, 23, 38, 51, 4, 54, 10, 0, 89, 13, 99, 137, 45, 36, 421, 115, 543, 11, 22, 128, 221, 48}, +{434, 384, 268, 144, 855, 940, 617, 206, 332, 116, 93, 911, 959, 282, 203, 137, 141, 489, 44, 120, 10, 110, 244, 36, 98, 31, 269, 253, 367, 417, 160, 9}, +{15, 2, 1, 0, 13, 515, 5, 700, 3, 23, 180, 217, 141, 10, 753, 4, 117, 6, 77, 33, 64, 7, 11, 197, 352, 317, 341, 134, 165, 115, 12, 9}, +{2, 113, 6, 25, 1, 0, 29, 4, 7, 833, 5, 45, 32, 61, 128, 19, 77, 151, 74, 145, 64, 42, 14, 210, 655, 106, 59, 177, 27, 17, 21, 738}, +{116, 268, 918, 203, 551, 31, 8, 692, 206, 791, 403, 499, 417, 93, 940, 421, 0, 23, 22, 120, 13, 523, 44, 51, 299, 473, 959, 1, 10, 475, 202, 125}, +{107, 126, 132, 612, 362, 279, 20, 146, 259, 493, 199, 121, 590, 43, 660, 147, 35, 376, 939, 60, 941, 534, 683, 5, 0, 953, 16, 7, 49, 649, 595, 470}, +{15, 515, 700, 753, 13, 1, 0, 23, 2, 33, 77, 4, 3, 51, 5, 102, 115, 10, 9, 341, 6, 7, 11, 342, 217, 12, 120, 180, 40, 317, 141, 8}, +{53, 27, 17, 161, 469, 378, 73, 527, 19, 136, 383, 250, 495, 56, 862, 26, 62, 84, 80, 106, 200, 4, 34, 14, 440, 297, 3, 128, 585, 5, 129, 123}, +{17, 45, 209, 106, 5, 207, 243, 454, 119, 255, 2, 263, 186, 290, 29, 3, 21, 62, 425, 61, 84, 32, 58, 56, 48, 408, 655, 136, 306, 14, 742, 227}, +{4, 152, 59, 452, 128, 79, 216, 11, 339, 471, 529, 188, 94, 77, 202, 12, 291, 33, 318, 377, 99, 51, 23, 5, 402, 349, 32, 474, 102, 13, 205, 111}, +{15, 515, 700, 753, 1, 0, 2, 13, 3, 5, 23, 4, 180, 51, 115, 9, 6, 12, 7, 8, 197, 33, 10, 961, 901, 77, 141, 752, 110, 22, 120, 341}, +{951, 752, 638, 811, 351, 642, 180, 253, 10, 341, 197, 901, 110, 873, 8, 244, 15, 352, 165, 898, 143, 515, 564, 762, 499, 55, 365, 700, 82, 753, 141, 854}, +{6, 262, 197, 350, 74, 26, 115, 509, 841, 583, 165, 38, 21, 13, 47, 50, 235, 19, 33, 324, 453, 4, 308, 196, 138, 99, 64, 903, 675, 1, 223, 130}, +{125, 165, 391, 23, 386, 221, 21, 13, 558, 457, 51, 867, 197, 115, 401, 758, 77, 97, 308, 791, 7, 180, 48, 120, 963, 451, 743, 89, 603, 134, 403, 450}, +{1, 14, 2, 5, 16, 46, 7, 38, 58, 24, 50, 0, 69, 48, 35, 67, 54, 18, 12, 75, 21, 45, 513, 155, 430, 37, 270, 9, 61, 163, 223, 32}, +{23, 13, 51, 0, 12, 15, 4, 1, 115, 2, 515, 453, 10, 457, 5, 3, 202, 21, 165, 700, 403, 11, 37, 64, 77, 401, 9, 197, 753, 59, 475, 99}, +{129, 84, 17, 56, 27, 495, 19, 548, 80, 123, 162, 378, 3, 504, 161, 469, 618, 73, 40, 53, 4, 26, 205, 184, 106, 183, 62, 6, 257, 128, 862, 12}, +{28, 9, 22, 49, 109, 1, 67, 0, 39, 55, 168, 158, 83, 36, 35, 86, 420, 194, 185, 159, 95, 105, 69, 208, 272, 103, 50, 114, 2, 254, 169, 30}, +{242, 391, 8, 456, 116, 13, 23, 492, 341, 165, 867, 51, 499, 457, 479, 638, 338, 509, 719, 10, 1, 642, 417, 762, 401, 93, 206, 268, 901, 569, 22, 197}, +{211, 162, 248, 130, 57, 4, 41, 556, 507, 266, 183, 152, 305, 361, 11, 129, 62, 229, 38, 471, 514, 313, 157, 300, 377, 3, 440, 128, 123, 328, 339, 59}, +{7, 92, 97, 16, 298, 140, 60, 126, 14, 35, 279, 314, 232, 246, 43, 230, 508, 173, 71, 107, 423, 24, 150, 779, 20, 189, 66, 18, 607, 21, 0, 653}, +{15, 515, 700, 753, 1, 0, 2, 13, 23, 5, 3, 180, 51, 901, 6, 4, 7, 12, 9, 115, 8, 457, 165, 82, 120, 197, 10, 64, 141, 341, 22, 117}, +{0, 18, 403, 25, 523, 74, 6, 24, 42, 91, 22, 102, 13, 51, 49, 193, 475, 681, 95, 85, 730, 64, 899, 397, 273, 750, 247, 673, 32, 805, 757, 288}, +{56, 0, 18, 65, 33, 554, 84, 343, 64, 6, 90, 561, 22, 19, 899, 108, 27, 63, 289, 475, 240, 467, 370, 32, 233, 214, 24, 123, 95, 287, 28, 194}, +{31, 98, 127, 9, 0, 44, 293, 105, 395, 299, 49, 242, 28, 22, 599, 116, 1, 284, 276, 125, 456, 685, 763, 159, 272, 623, 23, 935, 393, 144, 201, 137}, +{1, 5, 2, 14, 38, 46, 50, 48, 21, 7, 58, 45, 270, 61, 155, 171, 0, 290, 69, 32, 29, 54, 67, 16, 24, 666, 663, 17, 37, 75, 502, 52}, +{23, 51, 13, 453, 457, 12, 719, 4, 15, 99, 401, 2, 961, 3, 11, 730, 475, 515, 0, 1, 165, 115, 629, 700, 14, 17, 403, 40, 5, 33, 37, 64}, +{968, 967, 966, 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937}, +{2, 1, 14, 29, 67, 103, 6, 46, 52, 75, 24, 133, 38, 218, 83, 309, 36, 108, 70, 114, 96, 5, 238, 74, 25, 26, 220, 236, 65, 50, 69, 87}, +{7, 71, 16, 92, 24, 60, 14, 97, 150, 140, 35, 189, 149, 298, 18, 230, 43, 508, 2, 423, 69, 0, 38, 314, 66, 279, 399, 517, 251, 20, 232, 273}, +{23, 1, 120, 51, 13, 202, 77, 141, 260, 21, 15, 5, 128, 82, 2, 450, 269, 165, 102, 318, 48, 32, 137, 515, 125, 64, 12, 115, 351, 180, 33, 7}, +{77, 13, 33, 23, 64, 51, 4, 102, 141, 128, 40, 1, 2, 202, 0, 6, 177, 115, 137, 15, 59, 10, 11, 7, 269, 22, 515, 180, 318, 3, 700, 95}, +{101, 9, 18, 363, 264, 520, 411, 604, 676, 682, 905, 271, 16, 821, 167, 0, 621, 364, 39, 100, 121, 118, 166, 781, 647, 252, 1, 848, 447, 265, 404, 60}, +{144, 203, 326, 382, 166, 418, 93, 88, 96, 822, 1, 141, 859, 77, 744, 438, 110, 269, 921, 367, 521, 274, 100, 39, 494, 120, 403, 473, 217, 576, 13, 291}, +{13, 21, 180, 125, 5, 23, 191, 32, 18, 16, 146, 199, 115, 24, 165, 118, 0, 225, 22, 1, 60, 197, 64, 901, 375, 241, 48, 12, 408, 71, 522, 818}, +{15, 515, 700, 753, 13, 0, 23, 8, 1, 51, 82, 102, 2, 33, 4, 9, 180, 165, 5, 77, 10, 110, 12, 197, 120, 260, 18, 326, 351, 403, 22, 457}, +{33, 77, 102, 64, 13, 23, 128, 51, 141, 202, 1, 40, 0, 2, 117, 10, 15, 4, 6, 318, 269, 134, 22, 515, 180, 115, 177, 153, 137, 196, 3, 700}, +{174, 544, 104, 525, 74, 0, 151, 25, 6, 624, 29, 66, 2, 636, 81, 45, 204, 177, 64, 416, 7, 644, 5, 138, 222, 319, 355, 77, 22, 122, 789, 216}, +{141, 304, 372, 352, 291, 947, 177, 269, 128, 954, 77, 349, 217, 202, 64, 318, 498, 437, 102, 864, 86, 13, 115, 180, 137, 5, 210, 197, 32, 950, 678, 7}, +{161, 200, 53, 17, 714, 27, 34, 73, 472, 62, 585, 56, 440, 383, 136, 78, 527, 19, 4, 3, 106, 361, 14, 250, 80, 514, 377, 84, 322, 390, 862, 548}, +{32, 76, 72, 21, 38, 14, 89, 54, 12, 37, 2, 241, 5, 428, 17, 1, 181, 221, 350, 45, 3, 4, 449, 90, 148, 179, 99, 292, 794, 770, 477, 46}, +{33, 23, 128, 64, 141, 13, 77, 51, 102, 202, 2, 15, 1, 3, 40, 10, 5, 153, 269, 515, 165, 0, 117, 196, 180, 318, 6, 700, 137, 134, 120, 22}, +{96, 137, 30, 0, 9, 39, 840, 202, 669, 406, 141, 530, 613, 1, 180, 88, 22, 160, 679, 576, 28, 403, 31, 219, 49, 228, 829, 100, 36, 15, 10, 856}, +{180, 141, 352, 1, 15, 752, 115, 0, 217, 365, 2, 515, 13, 901, 341, 317, 23, 4, 197, 700, 269, 5, 3, 31, 753, 244, 21, 165, 253, 202, 51, 44}, +{1, 2, 67, 0, 28, 50, 83, 65, 14, 46, 103, 114, 24, 38, 36, 9, 69, 5, 18, 7, 22, 133, 55, 218, 16, 124, 29, 54, 96, 160, 12, 480}, +{180, 115, 352, 317, 365, 217, 752, 901, 141, 15, 341, 1, 515, 253, 700, 0, 753, 873, 2, 197, 31, 137, 165, 244, 4, 120, 160, 44, 98, 5, 202, 3}, +{5, 32, 347, 49, 13, 21, 95, 713, 23, 1, 77, 33, 60, 64, 107, 4, 126, 928, 296, 850, 0, 241, 197, 102, 652, 195, 180, 534, 165, 153, 379, 10}, +{341, 180, 365, 901, 317, 115, 15, 752, 515, 700, 217, 873, 753, 82, 0, 110, 197, 141, 951, 165, 1, 564, 13, 351, 253, 12, 10, 3, 2, 4, 308, 244}, +{17, 45, 21, 3, 106, 5, 155, 38, 227, 32, 2, 209, 62, 54, 12, 243, 14, 181, 552, 587, 46, 540, 207, 794, 37, 48, 430, 119, 255, 221, 770, 29}, +{16, 24, 35, 18, 7, 0, 50, 1, 9, 14, 75, 69, 2, 5, 12, 21, 60, 13, 67, 71, 23, 48, 10, 108, 223, 181, 189, 103, 46, 64, 92, 51}, +{127, 13, 98, 165, 308, 23, 286, 293, 258, 51, 219, 395, 197, 115, 301, 401, 31, 391, 22, 105, 457, 170, 239, 276, 55, 338, 629, 116, 180, 479, 509, 569}, +{539, 213, 748, 840, 957, 669, 30, 466, 88, 217, 144, 251, 863, 190, 137, 93, 230, 228, 679, 352, 317, 203, 617, 321, 258, 530, 160, 219, 96, 831, 816, 689}, +{5, 48, 1, 21, 2, 14, 0, 36, 12, 38, 32, 54, 430, 181, 50, 270, 72, 99, 281, 45, 17, 10, 46, 22, 37, 218, 67, 3, 290, 76, 23, 51}, +{13, 23, 0, 4, 33, 51, 2, 115, 141, 1, 77, 217, 180, 10, 9, 317, 3, 102, 11, 5, 15, 197, 7, 202, 22, 165, 40, 64, 515, 6, 341, 31}, +{13, 15, 117, 515, 23, 12, 37, 134, 165, 700, 38, 54, 457, 753, 51, 64, 153, 197, 14, 10, 33, 82, 961, 0, 99, 89, 115, 719, 141, 3, 4, 1}, +{5, 21, 2, 3, 1, 32, 14, 12, 48, 17, 0, 10, 51, 23, 38, 22, 4, 72, 13, 54, 36, 45, 137, 76, 99, 114, 86, 37, 11, 64, 540, 430}, +{202, 128, 77, 318, 291, 33, 269, 102, 275, 141, 494, 342, 40, 678, 0, 177, 20, 210, 402, 7, 4, 5, 137, 6, 13, 450, 403, 32, 49, 120, 23, 22}, +{1, 2, 24, 14, 67, 46, 69, 50, 38, 103, 16, 18, 75, 35, 83, 29, 52, 96, 5, 108, 0, 7, 54, 71, 149, 394, 236, 309, 70, 133, 220, 58}, +{15, 515, 1, 700, 0, 2, 753, 13, 23, 5, 180, 3, 51, 4, 165, 457, 12, 197, 115, 6, 7, 21, 9, 141, 8, 901, 33, 82, 120, 77, 10, 110}, +{0, 28, 65, 14, 67, 2, 124, 24, 1, 9, 7, 69, 55, 154, 36, 16, 46, 114, 175, 35, 83, 22, 429, 18, 109, 149, 68, 189, 108, 336, 251, 133}, +{56, 162, 403, 3, 129, 775, 99, 161, 17, 40, 527, 33, 880, 4, 14, 128, 475, 12, 548, 23, 102, 202, 361, 117, 34, 184, 383, 200, 183, 196, 64, 53}, +{151, 2, 29, 58, 112, 45, 186, 113, 5, 70, 52, 1, 311, 6, 315, 66, 61, 7, 74, 27, 631, 17, 80, 87, 287, 243, 209, 227, 14, 491, 19, 869}, +{6, 1, 74, 2, 75, 29, 25, 66, 26, 70, 52, 138, 67, 324, 357, 42, 19, 220, 14, 85, 87, 108, 38, 451, 309, 103, 24, 69, 380, 135, 114, 65}, +{15, 515, 700, 13, 23, 0, 1, 120, 753, 51, 180, 2, 260, 202, 5, 141, 77, 102, 9, 450, 115, 21, 197, 165, 7, 137, 110, 33, 12, 269, 901, 4}, +{5, 45, 17, 2, 14, 46, 48, 38, 181, 50, 155, 3, 186, 54, 61, 29, 21, 227, 281, 80, 540, 106, 12, 400, 52, 1, 58, 32, 328, 171, 209, 487}, +{16, 18, 265, 121, 158, 35, 60, 9, 39, 7, 329, 105, 252, 68, 24, 1, 132, 167, 159, 22, 0, 49, 286, 101, 21, 146, 23, 327, 120, 709, 5, 14}, +{108, 467, 283, 56, 389, 650, 123, 412, 33, 177, 899, 475, 216, 453, 269, 349, 619, 65, 51, 730, 403, 670, 23, 196, 523, 128, 84, 13, 401, 789, 503, 543}, +{514, 3, 11, 377, 328, 4, 361, 507, 57, 403, 14, 880, 130, 485, 176, 215, 236, 38, 152, 102, 211, 56, 62, 757, 54, 585, 300, 556, 34, 555, 40, 229}, +{3, 555, 62, 266, 130, 99, 507, 139, 514, 12, 152, 229, 215, 305, 57, 40, 440, 33, 403, 471, 38, 56, 475, 14, 361, 313, 775, 328, 196, 548, 123, 23}, +{120, 202, 318, 15, 77, 13, 1, 450, 33, 269, 515, 260, 5, 128, 494, 51, 23, 700, 102, 141, 40, 753, 326, 403, 817, 137, 523, 21, 177, 922, 342, 7}, +{15, 1, 515, 23, 0, 13, 700, 2, 51, 753, 180, 5, 165, 21, 197, 12, 3, 120, 115, 4, 141, 6, 9, 7, 457, 33, 386, 202, 82, 8, 31, 341}, +{15, 180, 515, 82, 351, 700, 10, 317, 753, 115, 217, 365, 141, 898, 33, 901, 13, 23, 110, 854, 752, 77, 1, 197, 4, 341, 143, 36, 64, 352, 102, 9}, +{104, 289, 66, 707, 214, 90, 712, 64, 97, 173, 20, 0, 414, 194, 874, 43, 32, 7, 568, 560, 65, 38, 426, 312, 715, 192, 376, 74, 835, 5, 324, 147}, +{84, 56, 0, 554, 63, 65, 453, 249, 123, 643, 18, 26, 847, 475, 511, 403, 416, 561, 524, 289, 370, 73, 9, 19, 45, 42, 719, 194, 27, 467, 33, 730}, +{21, 346, 13, 350, 308, 826, 197, 101, 352, 68, 570, 0, 165, 23, 9, 841, 115, 100, 509, 694, 221, 230, 35, 217, 569, 88, 124, 749, 1, 777, 212, 154}, +{16, 92, 7, 24, 60, 18, 35, 140, 126, 14, 50, 71, 46, 330, 2, 75, 246, 5, 121, 267, 571, 1, 230, 309, 220, 0, 9, 64, 146, 236, 54, 108}, +{82, 15, 515, 898, 365, 700, 180, 33, 341, 753, 77, 901, 10, 115, 55, 351, 21, 5, 1, 4, 13, 102, 36, 217, 2, 165, 752, 120, 197, 117, 11, 317}, +{16, 24, 35, 18, 69, 71, 140, 1, 103, 7, 189, 68, 0, 50, 9, 108, 2, 133, 60, 267, 230, 46, 149, 67, 167, 118, 92, 14, 75, 21, 191, 38}, +{60, 71, 16, 18, 7, 20, 43, 118, 35, 68, 375, 28, 608, 0, 175, 566, 154, 92, 14, 149, 628, 33, 22, 13, 2, 10, 279, 23, 107, 356, 55, 117}, +{187, 258, 871, 295, 201, 434, 219, 224, 489, 384, 268, 110, 261, 839, 44, 699, 93, 116, 36, 131, 141, 228, 144, 160, 940, 567, 244, 406, 137, 574, 98, 253}, +{66, 7, 97, 172, 192, 712, 232, 324, 204, 74, 43, 448, 387, 426, 568, 20, 526, 107, 104, 135, 356, 729, 173, 0, 22, 5, 32, 95, 2, 64, 500, 560}, +{15, 515, 700, 753, 1, 4, 0, 341, 13, 3, 134, 2, 5, 33, 11, 77, 12, 10, 23, 197, 365, 901, 7, 40, 217, 32, 21, 6, 51, 180, 961, 37}, +{0, 28, 24, 9, 35, 65, 16, 124, 68, 55, 109, 154, 7, 39, 22, 149, 158, 14, 175, 1, 49, 252, 18, 71, 2, 168, 289, 419, 108, 420, 67, 101}, +{7, 16, 14, 92, 2, 46, 140, 24, 220, 35, 38, 60, 75, 1, 50, 18, 87, 54, 5, 126, 29, 52, 278, 262, 314, 107, 71, 21, 172, 135, 330, 394}, +{7, 92, 16, 14, 172, 126, 2, 60, 140, 35, 135, 314, 278, 46, 24, 38, 232, 107, 330, 66, 5, 18, 150, 246, 230, 97, 52, 1, 121, 563, 279, 21}, +{6, 26, 235, 53, 297, 436, 27, 19, 25, 73, 113, 445, 90, 214, 65, 42, 64, 289, 250, 611, 624, 32, 45, 648, 614, 17, 85, 491, 34, 122, 200, 416}, +{352, 141, 1, 217, 854, 752, 351, 180, 244, 36, 110, 661, 82, 258, 816, 160, 295, 219, 567, 224, 230, 269, 922, 144, 260, 268, 93, 201, 137, 116, 489, 202}, +{16, 60, 35, 18, 126, 107, 68, 191, 92, 121, 7, 14, 598, 20, 493, 279, 167, 446, 118, 0, 28, 43, 463, 55, 24, 212, 375, 566, 9, 150, 575, 21}, +{15, 1, 515, 2, 4, 13, 0, 700, 3, 5, 23, 753, 341, 77, 51, 115, 33, 11, 180, 10, 197, 141, 6, 165, 7, 901, 102, 40, 9, 202, 217, 12}, +{23, 51, 13, 202, 21, 5, 1, 120, 15, 137, 128, 125, 32, 2, 12, 141, 33, 165, 64, 515, 403, 318, 700, 48, 180, 7, 6, 450, 115, 523, 475, 260}, +{131, 716, 224, 371, 219, 187, 737, 616, 385, 254, 9, 98, 105, 924, 31, 258, 836, 39, 127, 578, 49, 916, 44, 761, 272, 137, 944, 159, 0, 242, 442, 22}, +{15, 515, 700, 1, 753, 2, 5, 0, 4, 13, 3, 180, 11, 141, 197, 10, 341, 217, 33, 134, 165, 6, 77, 7, 317, 12, 352, 64, 365, 32, 102, 40}, +{66, 74, 7, 173, 174, 29, 192, 2, 222, 20, 226, 43, 353, 52, 712, 6, 0, 138, 500, 204, 97, 145, 64, 104, 426, 673, 355, 90, 25, 5, 65, 87}, +{5, 259, 786, 534, 590, 493, 279, 49, 13, 581, 465, 21, 929, 35, 941, 132, 147, 32, 23, 612, 362, 626, 107, 121, 178, 0, 146, 61, 48, 939, 10, 18}, +{2, 14, 16, 7, 278, 69, 135, 140, 46, 24, 267, 35, 92, 38, 1, 189, 29, 52, 309, 60, 66, 75, 71, 172, 74, 357, 18, 87, 67, 6, 230, 5}, +{165, 13, 308, 197, 391, 23, 401, 15, 51, 457, 180, 509, 115, 569, 3, 629, 961, 719, 34, 758, 317, 734, 14, 29, 46, 2, 17, 901, 38, 453, 5, 217}, +{1, 22, 2, 14, 0, 28, 7, 168, 67, 49, 65, 24, 36, 95, 5, 105, 55, 35, 12, 46, 69, 16, 114, 159, 194, 50, 10, 9, 158, 83, 164, 109}, +{34, 453, 3, 196, 130, 14, 322, 11, 47, 51, 377, 236, 361, 4, 730, 153, 514, 711, 57, 440, 62, 17, 161, 108, 176, 59, 485, 56, 162, 412, 202, 117}, +{18, 16, 21, 23, 48, 13, 24, 35, 121, 5, 156, 60, 51, 1, 7, 132, 141, 221, 163, 115, 0, 271, 447, 340, 363, 202, 125, 71, 2, 781, 22, 698}, +{165, 13, 457, 23, 197, 961, 629, 569, 341, 41, 12, 38, 401, 901, 54, 51, 115, 17, 15, 509, 421, 37, 62, 45, 719, 57, 32, 328, 117, 758, 157, 99}, +{2, 1, 77, 141, 33, 64, 3, 102, 0, 23, 13, 5, 128, 10, 6, 15, 180, 202, 269, 40, 51, 515, 7, 165, 137, 117, 318, 4, 700, 153, 197, 352}, +{68, 212, 0, 124, 101, 9, 154, 16, 562, 191, 21, 149, 65, 24, 35, 1, 118, 167, 818, 350, 520, 100, 722, 841, 264, 71, 13, 302, 478, 23, 375, 346}, +{98, 23, 48, 598, 13, 293, 541, 21, 125, 121, 51, 807, 0, 31, 35, 259, 126, 7, 386, 1, 223, 783, 10, 107, 199, 20, 221, 144, 342, 963, 49, 64}, +{21, 13, 5, 586, 1, 23, 167, 48, 33, 781, 647, 49, 165, 18, 51, 271, 77, 32, 761, 118, 0, 82, 391, 22, 146, 141, 459, 31, 197, 156, 115, 4}, +{2, 1, 5, 61, 29, 7, 58, 45, 14, 6, 425, 32, 70, 52, 290, 738, 207, 21, 72, 112, 66, 76, 655, 17, 186, 46, 64, 263, 38, 0, 128, 87}, +{39, 265, 9, 100, 1, 333, 363, 101, 18, 411, 447, 254, 166, 310, 31, 98, 264, 30, 639, 404, 156, 286, 16, 93, 593, 203, 272, 682, 0, 905, 44, 821}, +{6, 2, 1, 19, 29, 51, 26, 108, 25, 74, 5, 23, 14, 114, 13, 386, 133, 103, 42, 66, 453, 70, 309, 138, 719, 324, 65, 38, 64, 96, 52, 75}, +{20, 43, 356, 107, 49, 858, 595, 7, 414, 359, 0, 5, 392, 319, 97, 612, 422, 819, 14, 376, 173, 246, 22, 470, 147, 427, 230, 92, 197, 33, 683, 95}, +{0, 9, 68, 35, 65, 67, 114, 101, 28, 1, 124, 175, 336, 69, 154, 103, 83, 24, 189, 133, 39, 16, 50, 7, 2, 149, 55, 251, 18, 345, 230, 36}, +{23, 13, 51, 15, 0, 1, 515, 115, 165, 2, 5, 12, 700, 202, 4, 21, 141, 457, 753, 197, 10, 3, 180, 120, 32, 9, 318, 11, 453, 64, 6, 269}, +{121, 195, 60, 16, 126, 107, 98, 271, 146, 407, 132, 35, 1, 167, 199, 223, 493, 191, 279, 20, 18, 5, 43, 7, 21, 92, 48, 393, 0, 362, 212, 467}, +{31, 44, 299, 116, 393, 144, 492, 456, 268, 22, 105, 0, 367, 918, 384, 434, 127, 489, 98, 9, 963, 125, 242, 948, 1, 28, 206, 49, 36, 51, 93, 293}, +{23, 13, 457, 51, 165, 401, 719, 758, 197, 453, 961, 629, 308, 14, 15, 12, 730, 3, 386, 569, 391, 29, 739, 515, 34, 828, 832, 901, 115, 514, 670, 341}, +{105, 36, 131, 22, 180, 115, 341, 127, 169, 1, 9, 31, 64, 98, 44, 365, 317, 141, 272, 143, 160, 55, 219, 86, 197, 776, 239, 187, 0, 535, 13, 752}, +{1, 6, 2, 14, 66, 25, 29, 5, 108, 67, 65, 114, 19, 38, 26, 52, 74, 7, 24, 18, 69, 86, 36, 388, 64, 51, 17, 83, 23, 46, 42, 75}, +{51, 386, 23, 453, 719, 13, 730, 6, 457, 670, 758, 19, 401, 165, 2, 475, 47, 26, 899, 14, 108, 17, 1, 5, 197, 29, 894, 754, 236, 74, 27, 285}, +{252, 18, 9, 101, 121, 16, 132, 0, 419, 167, 364, 60, 604, 35, 265, 363, 146, 271, 39, 158, 68, 109, 28, 329, 848, 24, 647, 907, 682, 159, 212, 55}, +{283, 503, 128, 432, 26, 193, 63, 269, 789, 529, 102, 122, 389, 275, 678, 6, 25, 318, 445, 4, 342, 27, 573, 605, 177, 862, 643, 291, 216, 57, 235, 59}, +{2, 1, 29, 75, 69, 52, 14, 6, 46, 74, 87, 7, 220, 226, 278, 38, 135, 66, 267, 70, 16, 262, 25, 24, 380, 324, 357, 140, 67, 394, 97, 222}, +{97, 298, 69, 7, 66, 140, 189, 24, 16, 267, 172, 423, 60, 150, 14, 314, 92, 71, 81, 501, 43, 35, 74, 6, 517, 232, 149, 607, 83, 330, 18, 2}, +{475, 421, 403, 899, 51, 805, 523, 958, 453, 817, 23, 615, 401, 801, 120, 326, 202, 670, 494, 730, 450, 386, 115, 629, 260, 576, 77, 365, 569, 0, 165, 13}, +{7, 20, 14, 128, 77, 97, 112, 202, 2, 177, 16, 415, 269, 318, 275, 66, 107, 43, 141, 414, 135, 38, 307, 10, 58, 0, 6, 291, 32, 5, 4, 40}, +{24, 14, 7, 0, 2, 1, 22, 28, 16, 65, 168, 124, 35, 67, 108, 109, 18, 49, 10, 149, 69, 158, 5, 95, 289, 12, 55, 6, 36, 71, 46, 21}, +{26, 80, 27, 73, 122, 25, 19, 17, 6, 42, 684, 209, 445, 573, 667, 106, 45, 690, 4, 611, 255, 680, 297, 495, 65, 59, 128, 119, 483, 113, 64, 53}, +{107, 259, 362, 376, 465, 20, 470, 147, 595, 534, 612, 683, 660, 43, 5, 49, 581, 0, 858, 35, 427, 246, 97, 786, 178, 356, 14, 21, 142, 878, 7, 279}, +{131, 30, 228, 190, 856, 406, 224, 88, 219, 530, 863, 613, 778, 274, 944, 816, 187, 39, 100, 160, 258, 31, 44, 93, 1, 321, 539, 36, 871, 137, 435, 531}, +{113, 6, 311, 25, 45, 491, 80, 611, 27, 26, 209, 667, 17, 73, 122, 42, 684, 396, 19, 85, 106, 5, 614, 4, 2, 255, 151, 29, 1, 64, 648, 61}, +{15, 515, 700, 753, 0, 1, 23, 51, 120, 2, 13, 82, 5, 260, 9, 4, 341, 77, 180, 115, 141, 10, 7, 12, 450, 8, 202, 901, 197, 351, 165, 93}, +{219, 127, 98, 258, 395, 421, 924, 293, 242, 201, 697, 105, 276, 51, 308, 23, 453, 272, 401, 944, 512, 137, 13, 31, 284, 567, 386, 365, 116, 131, 964, 125}, +{15, 180, 352, 141, 515, 752, 217, 82, 1, 317, 854, 700, 351, 753, 115, 341, 110, 13, 260, 120, 21, 36, 33, 898, 23, 10, 5, 365, 4, 160, 901, 137}, +{129, 123, 17, 257, 162, 184, 205, 249, 183, 769, 5, 80, 3, 4, 229, 130, 119, 45, 90, 99, 618, 106, 57, 497, 12, 128, 2, 84, 59, 152, 27, 40}, +{33, 102, 23, 77, 64, 128, 51, 13, 0, 202, 10, 141, 40, 15, 1, 22, 117, 137, 2, 86, 4, 403, 269, 153, 515, 196, 65, 11, 700, 115, 99, 5}, +{7, 14, 2, 16, 172, 107, 46, 92, 5, 135, 35, 202, 294, 87, 38, 232, 29, 97, 20, 21, 24, 1, 60, 220, 66, 43, 12, 0, 126, 52, 54, 70}, +{403, 576, 615, 523, 475, 326, 805, 817, 494, 421, 51, 202, 120, 450, 137, 453, 23, 859, 260, 401, 402, 77, 33, 670, 0, 958, 15, 197, 386, 515, 165, 480}, +{141, 352, 217, 137, 0, 180, 202, 349, 9, 269, 23, 51, 115, 291, 77, 372, 13, 317, 120, 752, 365, 351, 93, 22, 2, 341, 64, 10, 82, 854, 28, 18}, +{1, 23, 13, 51, 202, 141, 5, 165, 21, 15, 120, 180, 64, 2, 197, 125, 33, 102, 12, 7, 137, 515, 48, 128, 269, 318, 93, 700, 0, 403, 9, 4}, +{25, 151, 6, 145, 122, 29, 174, 45, 113, 74, 4, 665, 42, 138, 2, 614, 416, 287, 19, 348, 746, 0, 66, 26, 1, 7, 64, 243, 311, 396, 81, 624}, +{30, 190, 254, 166, 100, 382, 731, 829, 88, 131, 264, 795, 9, 93, 625, 274, 438, 1, 578, 613, 716, 31, 44, 39, 530, 36, 616, 921, 265, 203, 160, 77}, +{132, 5, 21, 13, 1, 23, 32, 195, 379, 687, 156, 121, 626, 296, 48, 70, 850, 146, 51, 82, 883, 771, 35, 49, 652, 407, 60, 4, 260, 0, 845, 33}, +{9, 254, 0, 49, 272, 131, 39, 159, 688, 101, 105, 578, 518, 158, 286, 28, 327, 333, 68, 224, 252, 219, 344, 16, 22, 1, 716, 31, 30, 228, 24, 890}, +{16, 7, 35, 60, 18, 20, 14, 68, 9, 0, 28, 118, 43, 92, 126, 55, 107, 2, 101, 154, 24, 71, 5, 202, 121, 109, 22, 252, 21, 97, 1, 621}, +{15, 515, 700, 753, 13, 1, 341, 2, 0, 4, 3, 5, 11, 23, 10, 33, 117, 12, 901, 197, 6, 134, 77, 8, 165, 317, 21, 365, 217, 7, 17, 40}, +{78, 19, 444, 47, 26, 390, 27, 453, 130, 813, 108, 730, 711, 65, 412, 122, 51, 680, 113, 235, 690, 196, 630, 283, 128, 236, 14, 64, 73, 53, 200, 445}, +{2, 7, 29, 5, 61, 6, 45, 1, 66, 113, 112, 14, 52, 315, 738, 128, 32, 151, 74, 16, 20, 64, 70, 21, 592, 0, 25, 4, 425, 43, 491, 222}, +{145, 112, 74, 66, 6, 29, 26, 70, 19, 396, 25, 87, 2, 287, 135, 151, 138, 222, 5, 226, 42, 122, 7, 307, 1, 644, 45, 58, 113, 651, 635, 632}, +{92, 16, 7, 60, 126, 24, 140, 35, 14, 232, 18, 121, 246, 71, 46, 267, 172, 150, 107, 314, 132, 146, 230, 2, 278, 108, 330, 199, 236, 5, 38, 572}, +{13, 115, 197, 538, 569, 341, 98, 55, 165, 127, 365, 762, 219, 286, 844, 23, 170, 206, 734, 638, 535, 901, 169, 253, 629, 0, 873, 509, 180, 10, 332, 258}, +{58, 151, 74, 53, 287, 27, 29, 396, 6, 70, 2, 73, 5, 52, 112, 26, 651, 1, 297, 113, 17, 75, 19, 45, 334, 445, 145, 34, 315, 549, 436, 331}, +{214, 289, 90, 874, 104, 751, 64, 65, 312, 835, 204, 249, 750, 194, 74, 81, 875, 32, 519, 288, 348, 0, 174, 247, 636, 715, 138, 192, 784, 6, 524, 280}, +{9, 39, 28, 35, 30, 0, 166, 49, 1, 175, 439, 158, 64, 346, 36, 101, 67, 364, 86, 88, 274, 100, 168, 55, 23, 10, 420, 22, 190, 141, 505, 180}, +{341, 901, 15, 515, 700, 753, 1, 365, 10, 0, 569, 180, 2, 197, 115, 31, 165, 3, 5, 4, 44, 22, 317, 13, 9, 951, 23, 253, 116, 143, 762, 93}, +{120, 202, 77, 450, 260, 15, 128, 318, 102, 515, 494, 13, 817, 700, 269, 5, 403, 51, 1, 33, 23, 753, 82, 326, 141, 342, 291, 137, 21, 523, 351, 32}, +{13, 115, 241, 64, 180, 32, 125, 197, 165, 4, 118, 22, 21, 23, 16, 247, 237, 28, 225, 191, 95, 141, 167, 5, 0, 341, 288, 35, 459, 18, 177, 24}, +{16, 24, 35, 14, 1, 2, 7, 69, 18, 46, 60, 50, 267, 140, 71, 189, 108, 38, 75, 92, 0, 5, 9, 230, 67, 21, 309, 335, 54, 236, 394, 220}, +{15, 515, 700, 753, 898, 180, 901, 341, 197, 638, 10, 165, 33, 1, 115, 4, 77, 365, 317, 13, 102, 217, 117, 0, 5, 2, 253, 3, 82, 569, 21, 752}, +{193, 523, 18, 84, 56, 730, 233, 65, 4, 817, 90, 33, 643, 403, 91, 511, 453, 240, 59, 11, 214, 51, 719, 196, 153, 475, 32, 123, 64, 847, 102, 561}, +{112, 29, 151, 2, 74, 6, 66, 7, 222, 145, 287, 45, 5, 624, 52, 25, 113, 416, 58, 122, 19, 70, 186, 204, 4, 87, 644, 549, 337, 884, 32, 0}, +{13, 0, 23, 2, 1, 15, 33, 3, 77, 515, 141, 5, 4, 217, 10, 51, 64, 180, 700, 115, 6, 117, 11, 7, 753, 40, 102, 165, 197, 22, 317, 153}, +{28, 0, 1, 67, 65, 9, 2, 114, 83, 69, 103, 50, 36, 22, 55, 24, 46, 14, 124, 109, 35, 7, 16, 38, 133, 160, 389, 323, 18, 12, 154, 5}, +{121, 132, 18, 167, 271, 146, 101, 363, 621, 9, 411, 647, 16, 354, 520, 60, 212, 932, 1, 806, 55, 0, 195, 446, 68, 35, 31, 364, 777, 252, 407, 118}, +{26, 6, 85, 396, 122, 624, 25, 19, 42, 445, 64, 648, 573, 416, 174, 680, 665, 214, 45, 348, 90, 65, 194, 145, 113, 881, 138, 289, 112, 436, 297, 544}, +{16, 146, 18, 92, 24, 199, 60, 71, 121, 126, 35, 108, 156, 953, 271, 674, 132, 7, 32, 640, 360, 246, 649, 118, 21, 95, 5, 517, 14, 9, 1, 314}, +{51, 13, 23, 453, 475, 730, 719, 15, 457, 403, 64, 115, 33, 95, 4, 523, 3, 12, 21, 6, 899, 102, 5, 128, 401, 202, 11, 141, 308, 515, 22, 125}, +{151, 396, 6, 53, 27, 113, 58, 26, 73, 112, 74, 287, 45, 29, 297, 19, 145, 70, 138, 445, 315, 436, 34, 2, 17, 573, 5, 61, 549, 491, 1, 80}, +{223, 1, 888, 774, 260, 98, 269, 385, 349, 202, 96, 141, 421, 622, 730, 863, 318, 697, 87, 453, 393, 418, 922, 834, 751, 5, 163, 335, 120, 291, 352, 30}, +{16, 60, 92, 35, 126, 121, 7, 150, 246, 18, 107, 1, 598, 24, 167, 195, 14, 97, 71, 279, 98, 441, 191, 199, 517, 146, 356, 223, 298, 271, 230, 0}, +{22, 1, 105, 28, 239, 170, 0, 55, 95, 31, 36, 301, 2, 320, 98, 127, 9, 49, 44, 64, 35, 67, 10, 86, 5, 12, 109, 23, 168, 13, 21, 312}, +{2, 6, 5, 207, 292, 76, 1, 119, 45, 32, 17, 29, 61, 306, 790, 58, 240, 106, 14, 64, 214, 151, 476, 710, 7, 72, 84, 128, 4, 179, 70, 25}, +{51, 23, 221, 254, 115, 13, 438, 530, 125, 48, 21, 39, 541, 960, 386, 49, 1, 613, 15, 840, 228, 308, 627, 131, 688, 401, 5, 326, 421, 158, 165, 83}, +{1, 5, 2, 0, 12, 22, 21, 36, 10, 14, 48, 86, 23, 13, 32, 54, 3, 4, 28, 65, 51, 50, 137, 37, 208, 114, 9, 38, 17, 7, 281, 202}, +{363, 23, 447, 182, 296, 340, 1, 93, 698, 478, 379, 156, 284, 144, 18, 269, 21, 98, 141, 70, 668, 411, 664, 658, 110, 914, 67, 937, 180, 691, 335, 291}, +{17, 32, 45, 498, 41, 115, 180, 197, 106, 62, 54, 38, 546, 165, 13, 155, 468, 509, 341, 243, 241, 217, 542, 15, 57, 536, 428, 51, 117, 721, 292, 129}, +{32, 95, 64, 246, 22, 92, 180, 13, 5, 652, 125, 241, 638, 237, 7, 49, 4, 126, 21, 115, 197, 296, 888, 316, 0, 165, 774, 23, 16, 392, 1, 534}, +{15, 515, 700, 753, 33, 341, 13, 217, 4, 141, 77, 23, 180, 317, 1, 10, 102, 351, 82, 115, 40, 5, 854, 21, 137, 11, 352, 901, 365, 117, 197, 0}, +{15, 120, 1, 82, 93, 217, 515, 260, 77, 141, 13, 110, 700, 351, 352, 23, 180, 753, 21, 854, 202, 317, 64, 349, 269, 51, 165, 137, 5, 128, 291, 36}, +{13, 23, 51, 141, 77, 0, 33, 4, 115, 64, 2, 10, 102, 202, 217, 128, 1, 177, 269, 11, 7, 22, 6, 21, 32, 9, 180, 40, 15, 3, 165, 318}, +{478, 264, 1, 520, 98, 724, 9, 682, 223, 664, 21, 759, 13, 772, 604, 100, 23, 363, 411, 48, 821, 5, 0, 905, 909, 447, 31, 265, 88, 101, 166, 39}, +{20, 29, 7, 2, 77, 416, 6, 128, 33, 5, 0, 113, 104, 32, 43, 13, 491, 66, 23, 21, 102, 51, 74, 210, 202, 525, 64, 318, 10, 81, 174, 14}, +{2, 1, 5, 14, 7, 58, 61, 29, 45, 290, 46, 38, 52, 21, 32, 270, 6, 592, 425, 0, 75, 155, 16, 48, 17, 50, 72, 70, 207, 24, 263, 663}, +{80, 6, 17, 209, 106, 26, 483, 113, 19, 469, 255, 25, 378, 27, 495, 833, 45, 64, 161, 2, 61, 667, 76, 742, 32, 90, 445, 5, 814, 65, 887, 119}, +{98, 223, 393, 1, 354, 834, 195, 791, 447, 697, 284, 293, 360, 541, 781, 156, 51, 807, 18, 664, 421, 411, 163, 668, 48, 31, 591, 765, 883, 386, 948, 23}, +{679, 141, 816, 36, 93, 406, 876, 144, 228, 137, 1, 180, 669, 21, 332, 251, 5, 269, 116, 187, 96, 351, 202, 752, 317, 64, 203, 831, 574, 466, 855, 345}, +{15, 515, 700, 13, 1, 753, 2, 0, 23, 341, 3, 5, 4, 10, 51, 11, 33, 165, 6, 7, 115, 197, 12, 64, 180, 153, 217, 77, 9, 569, 901, 317}, +{13, 23, 202, 51, 5, 21, 403, 15, 120, 64, 1, 450, 128, 141, 12, 523, 33, 165, 494, 125, 2, 515, 269, 7, 48, 102, 318, 95, 260, 180, 453, 197}, +{16, 18, 24, 60, 71, 92, 146, 246, 199, 35, 140, 7, 9, 118, 121, 108, 167, 230, 126, 132, 0, 640, 156, 14, 68, 133, 267, 360, 649, 271, 64, 55}, +{269, 141, 678, 177, 202, 77, 128, 318, 33, 947, 40, 120, 291, 349, 102, 137, 64, 352, 210, 864, 461, 498, 13, 342, 196, 23, 275, 450, 954, 0, 205, 111}, +{16, 24, 92, 18, 71, 60, 35, 7, 108, 191, 167, 246, 140, 14, 126, 21, 1, 68, 150, 118, 149, 388, 399, 9, 273, 0, 121, 796, 230, 48, 212, 517}, +{2, 14, 1, 29, 46, 75, 52, 70, 69, 171, 38, 7, 58, 163, 16, 5, 24, 220, 67, 112, 223, 54, 50, 409, 155, 35, 267, 186, 151, 334, 394, 140}, +{9, 252, 100, 265, 166, 39, 88, 404, 329, 0, 1, 520, 382, 812, 101, 593, 264, 274, 604, 676, 30, 118, 68, 553, 18, 664, 363, 23, 639, 865, 21, 411}, +{16, 18, 35, 24, 0, 60, 158, 7, 22, 68, 14, 49, 109, 159, 55, 9, 28, 71, 2, 10, 5, 105, 1, 118, 329, 13, 344, 23, 92, 20, 21, 126}, +{15, 13, 515, 700, 23, 0, 753, 1, 51, 2, 4, 10, 77, 5, 3, 197, 115, 165, 961, 202, 9, 457, 180, 12, 141, 22, 33, 120, 6, 11, 318, 31}, +{160, 93, 251, 137, 317, 1, 180, 36, 120, 217, 345, 752, 617, 352, 332, 10, 96, 531, 498, 318, 365, 202, 141, 269, 816, 341, 901, 679, 143, 35, 83, 968}, +{6, 25, 42, 128, 19, 59, 122, 4, 85, 26, 611, 27, 269, 233, 45, 0, 343, 91, 318, 80, 11, 177, 283, 73, 33, 614, 2, 77, 64, 138, 445, 216}, +{95, 64, 74, 7, 32, 81, 51, 204, 0, 20, 237, 65, 56, 38, 91, 23, 207, 180, 347, 343, 29, 6, 511, 52, 49, 10, 25, 18, 554, 370, 14, 312}, +{202, 120, 326, 260, 450, 817, 494, 318, 137, 403, 128, 77, 523, 553, 859, 5, 704, 1, 15, 23, 13, 576, 7, 16, 615, 51, 682, 291, 515, 0, 21, 234}, +{20, 43, 107, 356, 362, 126, 595, 92, 359, 7, 422, 319, 493, 16, 858, 5, 392, 246, 414, 683, 60, 0, 35, 945, 441, 21, 259, 819, 49, 97, 279, 173}, +{25, 42, 6, 77, 33, 102, 0, 122, 4, 690, 29, 483, 210, 27, 21, 19, 2, 300, 18, 648, 680, 119, 117, 59, 1, 10, 342, 12, 26, 153, 91, 684}, +{31, 44, 299, 116, 125, 242, 456, 599, 22, 393, 0, 144, 492, 28, 268, 1, 9, 963, 301, 105, 367, 36, 127, 170, 384, 434, 206, 98, 918, 10, 13, 93}, +{410, 521, 686, 367, 662, 88, 335, 321, 201, 96, 98, 772, 144, 1, 934, 921, 443, 435, 284, 274, 264, 551, 120, 897, 44, 100, 33, 225, 744, 418, 909, 960}, +{142, 178, 878, 234, 132, 786, 195, 202, 77, 416, 147, 929, 146, 522, 167, 259, 687, 639, 450, 271, 626, 481, 590, 5, 198, 212, 771, 49, 0, 465, 315, 427}, +{254, 39, 131, 9, 272, 0, 578, 716, 310, 224, 30, 49, 105, 827, 518, 829, 166, 333, 616, 228, 613, 846, 101, 219, 1, 31, 890, 98, 159, 938, 252, 100}, +{230, 699, 854, 473, 450, 351, 831, 137, 855, 217, 352, 704, 800, 202, 251, 498, 160, 144, 206, 203, 317, 201, 253, 752, 418, 141, 1, 332, 82, 180, 443, 36}, +{403, 202, 475, 453, 494, 23, 51, 77, 318, 402, 13, 33, 128, 102, 137, 141, 120, 342, 269, 0, 450, 4, 899, 576, 40, 421, 275, 117, 217, 177, 196, 64}, +{23, 44, 98, 182, 291, 144, 116, 39, 110, 141, 96, 82, 905, 70, 367, 264, 125, 93, 77, 411, 120, 1, 658, 202, 100, 415, 107, 363, 197, 30, 447, 105}, +{15, 515, 1, 13, 700, 23, 77, 120, 0, 753, 51, 180, 202, 141, 260, 5, 21, 115, 2, 137, 128, 9, 450, 197, 365, 269, 12, 326, 110, 102, 318, 7}, +{0, 32, 18, 95, 207, 577, 193, 29, 61, 104, 64, 784, 715, 102, 693, 887, 81, 91, 583, 671, 403, 5, 52, 474, 397, 180, 138, 49, 37, 344, 38, 263}, +{0, 101, 9, 68, 252, 16, 100, 39, 166, 364, 124, 24, 154, 265, 212, 88, 18, 35, 329, 419, 28, 118, 71, 30, 65, 158, 191, 55, 1, 694, 21, 676}, +{16, 24, 191, 18, 35, 71, 167, 118, 149, 68, 212, 9, 0, 1, 21, 108, 101, 92, 60, 375, 302, 7, 589, 755, 124, 674, 350, 48, 562, 246, 13, 363}, +{2, 14, 69, 24, 1, 67, 46, 16, 38, 103, 29, 267, 7, 35, 189, 135, 278, 71, 108, 18, 83, 309, 52, 6, 149, 388, 75, 236, 60, 0, 150, 66}, +{13, 1, 23, 0, 4, 2, 51, 15, 180, 33, 3, 115, 5, 515, 141, 10, 77, 700, 11, 9, 197, 341, 202, 165, 217, 102, 22, 7, 753, 317, 365, 6}, +{447, 1, 698, 411, 31, 363, 98, 5, 919, 4, 156, 125, 759, 691, 13, 64, 459, 354, 44, 21, 48, 293, 30, 914, 478, 225, 82, 120, 2, 922, 848, 839}, +{854, 82, 351, 217, 141, 180, 352, 15, 515, 752, 1, 700, 317, 898, 753, 244, 10, 21, 922, 115, 77, 36, 4, 260, 64, 110, 372, 13, 5, 365, 120, 11}, +{0, 1, 4, 13, 5, 2, 82, 33, 3, 120, 10, 23, 9, 11, 77, 260, 21, 102, 8, 31, 40, 6, 351, 51, 64, 450, 22, 117, 93, 110, 7, 457}, +{51, 13, 403, 23, 12, 475, 1, 2, 21, 5, 453, 523, 115, 202, 817, 7, 0, 99, 3, 6, 450, 120, 494, 64, 22, 95, 49, 899, 10, 37, 32, 141}, +{180, 752, 352, 141, 498, 864, 317, 217, 9, 0, 115, 237, 230, 39, 30, 197, 83, 1, 930, 64, 35, 365, 372, 13, 579, 88, 702, 36, 101, 901, 482, 21}, +{16, 24, 0, 7, 22, 18, 28, 35, 14, 158, 71, 2, 109, 60, 1, 168, 49, 154, 124, 68, 10, 55, 92, 118, 159, 9, 5, 747, 95, 105, 65, 6}, +{15, 515, 700, 753, 0, 23, 1, 13, 341, 51, 120, 77, 141, 4, 137, 33, 260, 82, 202, 9, 180, 5, 351, 2, 291, 10, 11, 901, 21, 115, 40, 128}, +{24, 68, 35, 149, 18, 16, 0, 7, 9, 14, 189, 108, 69, 65, 67, 1, 71, 2, 118, 28, 140, 101, 114, 336, 230, 124, 175, 133, 46, 55, 251, 154}, +{13, 308, 197, 115, 125, 9, 165, 237, 391, 23, 509, 569, 546, 28, 49, 629, 22, 338, 317, 254, 749, 180, 468, 159, 903, 386, 217, 352, 558, 39, 36, 734}, +{64, 90, 32, 217, 77, 4, 141, 216, 172, 312, 128, 13, 86, 33, 597, 147, 352, 95, 5, 115, 875, 22, 59, 11, 102, 14, 182, 437, 97, 177, 874, 707}, +{1, 22, 36, 0, 105, 28, 2, 67, 95, 49, 55, 5, 239, 12, 86, 9, 83, 170, 312, 64, 31, 21, 23, 10, 164, 50, 114, 159, 208, 13, 7, 320}, +{9, 18, 16, 0, 159, 105, 101, 252, 49, 310, 24, 68, 35, 39, 265, 272, 7, 1, 60, 28, 455, 890, 329, 557, 118, 286, 55, 137, 327, 167, 5, 13}, +{129, 123, 214, 249, 618, 17, 5, 257, 205, 184, 460, 76, 2, 162, 769, 245, 90, 106, 128, 45, 119, 1, 183, 4, 3, 12, 179, 64, 6, 229, 99, 209}, +{51, 453, 719, 457, 23, 13, 730, 899, 475, 386, 4, 15, 11, 12, 670, 196, 515, 523, 961, 401, 153, 3, 700, 99, 753, 117, 403, 32, 120, 165, 57, 0}, +{173, 66, 192, 204, 20, 74, 104, 636, 7, 43, 289, 426, 825, 712, 560, 214, 81, 750, 65, 97, 707, 0, 90, 414, 64, 348, 32, 500, 22, 861, 95, 6}, +{13, 23, 1, 51, 5, 21, 141, 120, 202, 15, 165, 2, 515, 180, 12, 125, 0, 64, 82, 700, 197, 269, 32, 48, 260, 128, 115, 93, 9, 137, 33, 753}, +{200, 34, 322, 78, 472, 390, 27, 714, 19, 14, 136, 161, 453, 176, 236, 444, 59, 3, 62, 128, 108, 57, 283, 862, 73, 53, 47, 17, 412, 813, 4, 56}, +{33, 347, 66, 204, 426, 498, 56, 172, 97, 95, 5, 681, 546, 22, 10, 0, 135, 180, 4, 241, 19, 174, 6, 353, 263, 21, 7, 370, 42, 197, 27, 808}, +{131, 224, 219, 187, 385, 371, 258, 442, 254, 737, 31, 98, 836, 127, 924, 944, 44, 871, 908, 716, 39, 827, 201, 574, 116, 137, 36, 1, 276, 242, 578, 616}, +{1, 15, 2, 180, 4, 141, 13, 515, 0, 5, 3, 115, 700, 901, 341, 23, 217, 352, 753, 51, 197, 77, 317, 33, 365, 752, 165, 21, 6, 7, 269, 93}, +{370, 91, 718, 74, 81, 510, 397, 66, 636, 240, 355, 84, 138, 511, 18, 278, 6, 681, 701, 289, 90, 5, 214, 582, 64, 104, 0, 643, 192, 65, 750, 32}, +{15, 515, 700, 753, 13, 120, 1, 0, 165, 2, 197, 23, 260, 180, 4, 82, 51, 386, 8, 5, 12, 10, 3, 141, 351, 341, 326, 9, 450, 7, 64, 6}, +{32, 2, 76, 5, 1, 292, 72, 45, 476, 214, 21, 241, 29, 14, 17, 48, 129, 90, 179, 460, 464, 123, 290, 148, 519, 205, 3, 263, 249, 38, 710, 89}, +{13, 165, 115, 17, 197, 569, 23, 509, 457, 45, 32, 41, 106, 180, 62, 38, 659, 734, 155, 536, 341, 629, 961, 873, 587, 54, 431, 37, 391, 99, 405, 428}, +{68, 24, 35, 16, 0, 101, 9, 124, 154, 71, 149, 65, 18, 175, 28, 118, 7, 55, 302, 108, 92, 14, 22, 346, 1, 39, 429, 252, 375, 364, 10, 67}, +{0, 9, 1, 68, 230, 65, 35, 69, 83, 23, 101, 13, 141, 67, 217, 352, 21, 39, 16, 88, 28, 124, 212, 100, 115, 154, 51, 64, 30, 36, 10, 317}, +{100, 265, 88, 909, 410, 382, 812, 593, 1, 213, 321, 30, 252, 230, 352, 264, 9, 166, 689, 39, 676, 98, 21, 466, 724, 639, 478, 217, 13, 48, 553, 101}, +{113, 61, 198, 904, 43, 0, 5, 37, 899, 325, 20, 59, 33, 523, 204, 725, 817, 389, 470, 329, 222, 40, 174, 58, 22, 453, 690, 848, 122, 104, 788, 105}, +{16, 24, 141, 18, 7, 0, 71, 140, 35, 269, 75, 352, 12, 9, 108, 217, 5, 330, 60, 64, 199, 70, 22, 13, 486, 246, 318, 133, 65, 50, 23, 498}, +{271, 167, 121, 60, 18, 191, 146, 199, 16, 1, 446, 132, 575, 212, 463, 354, 126, 35, 598, 566, 727, 98, 107, 21, 608, 955, 640, 407, 5, 24, 223, 68}, +{15, 515, 115, 217, 700, 13, 317, 753, 141, 180, 33, 23, 110, 120, 4, 341, 82, 10, 1, 260, 365, 36, 64, 854, 351, 21, 51, 352, 137, 77, 40, 0}, +{173, 7, 97, 356, 43, 107, 20, 387, 729, 104, 426, 232, 560, 595, 359, 392, 414, 707, 885, 81, 5, 0, 66, 858, 612, 49, 861, 14, 22, 32, 819, 230}, +{15, 515, 700, 753, 13, 23, 51, 82, 0, 33, 165, 120, 196, 4, 1, 2, 197, 453, 260, 351, 180, 12, 40, 8, 386, 110, 5, 326, 9, 141, 217, 457}, +{9, 100, 120, 30, 77, 795, 137, 82, 202, 39, 264, 827, 578, 127, 0, 166, 373, 318, 18, 326, 141, 260, 1, 450, 731, 31, 33, 395, 217, 291, 341, 254}, +{14, 2, 67, 1, 24, 69, 0, 28, 65, 7, 46, 18, 114, 108, 36, 83, 38, 398, 9, 16, 124, 133, 103, 154, 50, 55, 22, 267, 29, 160, 35, 547}, +{14, 7, 69, 24, 66, 16, 2, 267, 189, 67, 71, 150, 140, 97, 18, 60, 172, 35, 6, 1, 38, 149, 388, 92, 83, 135, 108, 74, 462, 380, 29, 36}, +{15, 515, 700, 753, 1, 13, 2, 0, 4, 341, 5, 3, 23, 365, 11, 117, 180, 10, 12, 33, 134, 115, 77, 197, 217, 165, 6, 7, 317, 102, 21, 9}, +{1, 22, 0, 12, 5, 2, 36, 28, 21, 10, 86, 13, 23, 49, 128, 9, 95, 51, 55, 96, 208, 141, 48, 202, 4, 137, 37, 64, 105, 3, 50, 7}, +{605, 630, 63, 123, 736, 650, 65, 108, 444, 368, 561, 389, 19, 25, 42, 619, 122, 194, 183, 27, 53, 33, 84, 26, 297, 813, 114, 73, 256, 235, 249, 216}, +{127, 39, 9, 0, 31, 371, 98, 254, 1, 385, 395, 44, 30, 836, 187, 131, 100, 116, 284, 578, 299, 166, 28, 21, 737, 16, 276, 272, 23, 49, 137, 935}, +{2, 61, 6, 29, 45, 151, 1, 655, 7, 207, 32, 5, 112, 425, 17, 76, 833, 4, 14, 64, 58, 106, 119, 25, 113, 128, 72, 52, 70, 21, 292, 790}, +{2, 5, 17, 14, 3, 29, 23, 27, 13, 401, 46, 6, 51, 58, 1, 453, 45, 53, 34, 52, 133, 19, 236, 26, 181, 114, 99, 366, 151, 108, 218, 38}, +{31, 22, 170, 1, 301, 44, 127, 98, 36, 28, 55, 105, 239, 0, 338, 116, 512, 299, 293, 125, 86, 10, 242, 395, 2, 13, 9, 64, 841, 23, 95, 685}, +{1, 21, 2, 14, 5, 32, 48, 50, 38, 270, 46, 76, 290, 72, 45, 54, 17, 0, 155, 221, 263, 207, 37, 281, 430, 3, 89, 12, 181, 408, 36, 67}, +{17, 106, 119, 378, 84, 240, 62, 80, 383, 136, 306, 3, 56, 790, 742, 5, 207, 504, 64, 440, 32, 128, 45, 2, 123, 209, 14, 4, 61, 57, 297, 667}, +{13, 15, 1, 515, 23, 2, 0, 700, 4, 115, 3, 51, 5, 10, 753, 180, 33, 341, 217, 11, 165, 317, 365, 197, 6, 77, 40, 64, 22, 9, 7, 117}, +{772, 335, 96, 744, 1, 367, 662, 686, 652, 897, 303, 264, 521, 31, 225, 410, 141, 520, 260, 116, 64, 44, 321, 98, 144, 88, 919, 966, 340, 269, 349, 284}, +{1, 0, 5, 28, 36, 2, 12, 22, 83, 67, 65, 50, 24, 14, 9, 96, 21, 218, 18, 114, 48, 281, 54, 10, 7, 160, 181, 103, 37, 23, 133, 99}, +{25, 6, 145, 42, 138, 81, 174, 348, 525, 544, 26, 74, 85, 280, 287, 648, 746, 91, 66, 0, 29, 396, 204, 64, 636, 90, 122, 194, 355, 104, 65, 233}, +{16, 24, 0, 18, 28, 158, 7, 35, 49, 22, 68, 159, 55, 1, 14, 109, 105, 2, 9, 71, 65, 154, 124, 95, 424, 344, 60, 239, 118, 577, 21, 10}, +{352, 854, 699, 230, 93, 689, 137, 144, 217, 160, 251, 36, 669, 202, 351, 120, 617, 855, 752, 203, 332, 82, 450, 180, 141, 748, 831, 30, 258, 201, 1, 816}, +{15, 13, 515, 700, 1, 2, 0, 753, 23, 5, 4, 3, 51, 33, 10, 115, 11, 317, 217, 77, 180, 341, 117, 165, 6, 134, 197, 153, 64, 9, 102, 7}, +{104, 20, 43, 173, 66, 319, 0, 77, 202, 7, 198, 5, 97, 580, 355, 74, 2, 204, 174, 52, 712, 234, 426, 155, 102, 192, 32, 4, 500, 337, 226, 904}, +{13, 23, 15, 51, 1, 515, 0, 2, 5, 700, 141, 4, 753, 165, 115, 12, 3, 21, 457, 10, 180, 269, 32, 6, 197, 202, 9, 7, 120, 11, 77, 33}, +{15, 515, 700, 753, 0, 1, 13, 2, 23, 115, 4, 317, 8, 3, 5, 51, 9, 341, 10, 217, 22, 365, 33, 457, 6, 180, 77, 901, 197, 120, 18, 7}, +{15, 515, 700, 753, 1, 0, 2, 3, 4, 13, 5, 141, 23, 16, 82, 217, 457, 10, 365, 180, 9, 317, 51, 21, 269, 898, 64, 202, 11, 12, 318, 341}, +{2, 5, 1, 14, 50, 38, 29, 17, 114, 46, 133, 3, 45, 21, 58, 171, 181, 36, 218, 12, 6, 52, 0, 48, 137, 65, 361, 23, 155, 4, 285, 51}, +{0, 68, 9, 65, 101, 124, 35, 212, 16, 149, 154, 100, 24, 1, 114, 336, 67, 589, 252, 39, 71, 189, 69, 562, 18, 13, 30, 398, 118, 88, 265, 264}, +{1, 2, 14, 22, 0, 7, 67, 65, 28, 36, 24, 46, 168, 5, 86, 69, 38, 16, 49, 12, 289, 10, 194, 50, 83, 114, 95, 6, 18, 23, 55, 158}, +{13, 23, 15, 51, 515, 0, 700, 4, 1, 753, 2, 10, 115, 961, 457, 12, 33, 11, 3, 5, 197, 9, 165, 77, 102, 403, 453, 40, 64, 22, 37, 59}, +{15, 515, 700, 753, 0, 1, 2, 13, 23, 5, 51, 901, 8, 9, 180, 3, 7, 82, 4, 120, 12, 10, 719, 341, 6, 31, 141, 457, 197, 22, 115, 93}, +{100, 252, 88, 101, 0, 265, 9, 724, 48, 1, 21, 352, 213, 676, 410, 382, 321, 230, 30, 329, 593, 909, 39, 812, 553, 217, 23, 689, 520, 264, 166, 419}, +{2, 5, 1, 58, 171, 14, 46, 50, 29, 52, 45, 38, 186, 155, 67, 54, 151, 281, 334, 61, 48, 96, 17, 181, 103, 400, 502, 227, 21, 223, 12, 69}, +{23, 120, 13, 1, 202, 141, 51, 21, 165, 128, 260, 15, 5, 269, 137, 64, 33, 180, 82, 318, 93, 197, 77, 326, 515, 125, 110, 700, 450, 2, 32, 48}, +{341, 197, 10, 901, 13, 15, 8, 638, 569, 515, 479, 23, 180, 873, 700, 165, 143, 642, 0, 961, 753, 951, 1, 115, 509, 499, 116, 12, 498, 242, 82, 206}, +{15, 1, 23, 13, 515, 21, 120, 51, 2, 141, 202, 700, 5, 180, 165, 0, 753, 197, 12, 7, 33, 260, 352, 137, 269, 4, 82, 128, 48, 9, 110, 6}, +{2, 29, 50, 58, 1, 6, 5, 52, 14, 262, 17, 46, 27, 53, 151, 34, 171, 74, 324, 26, 38, 309, 45, 113, 19, 96, 287, 396, 223, 67, 73, 583}, +{13, 23, 141, 51, 4, 202, 0, 115, 77, 2, 33, 217, 5, 317, 180, 64, 10, 269, 3, 9, 15, 21, 1, 128, 102, 137, 318, 11, 352, 515, 22, 31}, +{1, 67, 0, 24, 50, 5, 14, 18, 16, 69, 2, 9, 103, 35, 83, 12, 96, 28, 54, 7, 58, 223, 21, 46, 281, 48, 65, 181, 22, 38, 36, 108}, +{13, 23, 141, 51, 77, 64, 202, 115, 33, 102, 128, 4, 0, 269, 10, 21, 217, 32, 180, 318, 9, 137, 2, 11, 22, 291, 7, 177, 16, 31, 165, 197}, +{317, 115, 180, 365, 873, 498, 217, 341, 13, 752, 482, 197, 569, 352, 1, 901, 36, 23, 457, 468, 165, 346, 546, 143, 509, 134, 579, 876, 868, 2, 332, 21}, +{184, 257, 205, 229, 152, 17, 57, 497, 266, 432, 452, 524, 5, 619, 381, 32, 4, 90, 2, 12, 313, 128, 45, 59, 245, 106, 3, 471, 129, 769, 339, 214}, +{13, 23, 1, 0, 15, 2, 4, 515, 51, 3, 10, 33, 5, 700, 115, 180, 753, 77, 11, 365, 341, 217, 9, 6, 197, 7, 102, 165, 317, 40, 22, 64}, +{626, 70, 771, 687, 379, 846, 767, 761, 518, 878, 82, 481, 31, 786, 49, 591, 178, 163, 407, 44, 87, 13, 845, 125, 590, 371, 195, 120, 98, 557, 937, 351}, +{264, 1, 410, 909, 772, 897, 686, 521, 335, 478, 98, 96, 691, 639, 100, 44, 284, 382, 31, 321, 744, 88, 914, 724, 662, 765, 223, 9, 682, 363, 0, 367}, +{13, 23, 1, 2, 0, 15, 51, 515, 5, 10, 4, 33, 115, 77, 180, 700, 3, 141, 217, 40, 6, 753, 317, 197, 64, 165, 7, 11, 102, 9, 341, 22}, +{141, 77, 13, 64, 269, 23, 115, 21, 318, 217, 5, 202, 102, 33, 137, 2, 15, 291, 177, 51, 48, 180, 32, 4, 515, 352, 128, 7, 0, 10, 96, 11}, +{13, 15, 23, 515, 51, 0, 700, 753, 1, 2, 4, 10, 33, 11, 961, 453, 115, 40, 457, 14, 12, 3, 9, 5, 165, 401, 197, 77, 22, 21, 64, 102}, +{1, 22, 0, 36, 2, 31, 5, 12, 13, 105, 28, 9, 49, 86, 141, 21, 23, 95, 128, 55, 44, 115, 170, 10, 164, 98, 180, 4, 137, 239, 83, 51}, +{100, 101, 88, 0, 252, 9, 265, 30, 21, 39, 759, 724, 213, 329, 321, 13, 419, 68, 562, 382, 676, 352, 694, 35, 553, 410, 1, 166, 909, 593, 230, 23}, +{539, 88, 30, 190, 321, 530, 840, 144, 669, 435, 957, 748, 778, 100, 96, 418, 203, 213, 1, 131, 410, 228, 466, 274, 36, 382, 219, 863, 613, 83, 822, 352}, +{7, 97, 92, 173, 298, 107, 43, 314, 232, 140, 16, 356, 20, 387, 729, 362, 126, 359, 246, 14, 230, 501, 426, 441, 0, 5, 560, 66, 104, 779, 35, 60}, +{2, 14, 7, 1, 58, 5, 46, 16, 38, 70, 75, 45, 24, 155, 29, 0, 21, 52, 61, 163, 220, 50, 69, 270, 35, 48, 32, 171, 18, 6, 64, 54}, +{447, 411, 363, 664, 647, 98, 621, 1, 354, 271, 223, 478, 18, 777, 781, 936, 360, 759, 167, 132, 121, 48, 21, 156, 9, 195, 118, 293, 23, 691, 13, 264}, +{2, 1, 14, 65, 36, 67, 0, 7, 46, 22, 69, 5, 38, 24, 28, 6, 83, 29, 86, 114, 168, 50, 124, 208, 12, 18, 108, 10, 194, 484, 103, 16}, +{421, 386, 51, 791, 730, 958, 165, 801, 23, 453, 697, 403, 615, 13, 221, 523, 24, 899, 401, 326, 551, 670, 576, 102, 18, 33, 125, 77, 566, 115, 203, 197}, +{104, 319, 422, 945, 0, 81, 20, 43, 715, 32, 784, 693, 879, 7, 397, 74, 306, 207, 52, 681, 671, 2, 61, 173, 6, 636, 904, 95, 887, 5, 18, 192}, +{2, 29, 1, 46, 14, 52, 70, 262, 6, 26, 50, 67, 75, 96, 309, 38, 103, 112, 58, 19, 5, 163, 145, 83, 74, 220, 223, 357, 24, 69, 331, 25}, +{786, 929, 590, 771, 687, 626, 941, 178, 465, 259, 70, 5, 13, 21, 35, 534, 107, 518, 132, 49, 878, 48, 146, 121, 379, 279, 31, 767, 147, 195, 108, 125}, +{5, 2, 186, 45, 17, 29, 48, 50, 14, 61, 46, 155, 400, 1, 227, 171, 52, 58, 38, 54, 430, 209, 80, 281, 3, 106, 536, 311, 181, 243, 21, 502}, +{0, 32, 64, 95, 817, 494, 342, 403, 207, 202, 194, 389, 453, 365, 312, 180, 316, 5, 690, 237, 848, 577, 450, 61, 102, 523, 475, 289, 49, 241, 65, 482}, +{23, 13, 51, 15, 202, 515, 1, 0, 2, 12, 115, 4, 700, 5, 165, 753, 77, 457, 21, 141, 128, 10, 3, 64, 403, 32, 197, 318, 9, 11, 33, 117}, +{119, 2, 6, 76, 5, 17, 45, 292, 306, 240, 32, 1, 19, 84, 64, 61, 4, 209, 710, 80, 26, 0, 106, 27, 214, 25, 128, 129, 29, 179, 3, 113}, +{15, 515, 700, 1, 753, 0, 13, 23, 180, 120, 51, 2, 5, 33, 165, 197, 9, 450, 7, 260, 115, 523, 4, 12, 202, 141, 82, 77, 21, 102, 8, 6}, +{6, 138, 74, 280, 222, 85, 66, 226, 25, 42, 87, 204, 64, 337, 29, 135, 95, 174, 235, 26, 145, 65, 19, 32, 792, 294, 112, 52, 256, 2, 5, 22}, +{39, 9, 0, 101, 333, 158, 49, 252, 310, 254, 272, 68, 16, 18, 159, 286, 344, 455, 30, 109, 627, 327, 24, 105, 419, 100, 364, 22, 35, 1, 329, 709}, +{21, 5, 32, 14, 2, 1, 38, 72, 76, 54, 17, 3, 48, 221, 270, 0, 45, 46, 12, 181, 37, 89, 36, 50, 540, 290, 430, 10, 4, 741, 99, 23}, +{120, 137, 202, 269, 141, 260, 318, 450, 922, 494, 77, 291, 82, 15, 5, 351, 128, 1, 515, 326, 64, 854, 700, 352, 342, 21, 753, 678, 349, 32, 523, 90}, +{16, 24, 68, 35, 71, 18, 149, 118, 191, 167, 9, 0, 212, 124, 65, 246, 7, 67, 140, 189, 399, 101, 133, 60, 1, 108, 267, 114, 69, 92, 695, 154}, +{28, 0, 9, 67, 1, 22, 109, 36, 55, 65, 194, 114, 39, 83, 49, 69, 2, 35, 103, 50, 158, 208, 86, 420, 168, 289, 505, 24, 7, 185, 5, 323}, +{147, 325, 198, 427, 142, 178, 202, 798, 5, 376, 20, 318, 259, 43, 120, 450, 77, 234, 534, 904, 470, 465, 878, 725, 329, 14, 315, 0, 260, 858, 70, 61}, +{28, 0, 65, 9, 109, 1, 55, 67, 35, 22, 24, 39, 289, 7, 175, 14, 114, 2, 158, 124, 420, 194, 68, 16, 336, 36, 49, 69, 168, 570, 154, 505}, +{141, 180, 13, 115, 1, 23, 4, 269, 2, 202, 0, 317, 217, 51, 15, 5, 21, 352, 77, 318, 3, 752, 197, 10, 165, 365, 137, 341, 9, 515, 33, 64}, +{15, 515, 700, 0, 753, 1, 2, 13, 23, 9, 51, 5, 4, 901, 33, 7, 8, 3, 12, 93, 180, 120, 197, 6, 82, 341, 10, 141, 22, 260, 457, 115}, +{6, 74, 66, 1, 25, 75, 324, 380, 278, 26, 138, 85, 135, 500, 87, 42, 220, 841, 97, 350, 29, 19, 70, 226, 38, 21, 52, 606, 235, 889, 2, 14}, +{13, 23, 51, 12, 4, 15, 453, 0, 457, 1, 403, 165, 115, 3, 11, 2, 64, 5, 401, 10, 515, 37, 202, 33, 40, 32, 99, 475, 197, 700, 308, 17}, +{788, 180, 5, 83, 693, 319, 314, 4, 32, 21, 17, 11, 817, 3, 510, 498, 33, 12, 24, 104, 814, 120, 64, 117, 306, 804, 523, 450, 288, 160, 102, 43}, +{15, 1, 515, 13, 2, 700, 23, 0, 4, 753, 3, 341, 5, 51, 33, 11, 10, 6, 77, 7, 115, 102, 180, 165, 141, 9, 197, 217, 901, 40, 12, 64}, +{101, 18, 9, 167, 520, 16, 0, 118, 60, 212, 604, 364, 694, 24, 55, 252, 68, 917, 264, 35, 1, 121, 146, 363, 39, 100, 806, 5, 21, 166, 191, 28}, +{13, 23, 0, 33, 51, 141, 77, 4, 64, 2, 115, 217, 9, 102, 7, 202, 21, 10, 180, 3, 15, 128, 5, 269, 6, 32, 11, 16, 165, 352, 22, 317}, +{66, 135, 97, 74, 172, 6, 278, 7, 204, 324, 138, 174, 29, 85, 2, 87, 25, 140, 92, 192, 52, 38, 802, 69, 448, 500, 808, 620, 22, 1, 280, 232}, +{2, 24, 69, 6, 97, 7, 1, 0, 14, 298, 423, 66, 67, 29, 150, 25, 189, 267, 124, 74, 607, 18, 36, 81, 172, 33, 83, 38, 52, 273, 71, 809}, +{0, 9, 158, 39, 68, 49, 109, 16, 24, 333, 35, 344, 101, 22, 159, 254, 272, 30, 124, 65, 28, 18, 793, 154, 310, 252, 327, 105, 627, 419, 286, 55}, +{15, 515, 700, 10, 753, 33, 77, 180, 4, 341, 1, 197, 13, 115, 365, 23, 901, 317, 5, 102, 11, 217, 165, 117, 141, 40, 2, 3, 253, 21, 134, 55}, +{100, 166, 382, 478, 265, 264, 88, 39, 98, 1, 404, 274, 9, 593, 724, 921, 639, 438, 363, 682, 411, 31, 30, 812, 96, 447, 821, 905, 252, 0, 223, 435}, +{19, 283, 436, 53, 297, 26, 813, 432, 27, 128, 42, 25, 390, 503, 122, 736, 73, 123, 605, 63, 389, 529, 630, 250, 690, 65, 381, 444, 6, 269, 108, 216}, +{33, 202, 13, 128, 494, 0, 51, 141, 269, 1, 4, 2, 102, 180, 15, 137, 65, 95, 6, 450, 77, 40, 117, 59, 457, 36, 196, 817, 134, 86, 49, 515}, +{18, 16, 60, 68, 101, 167, 191, 118, 35, 121, 9, 212, 55, 0, 126, 1, 24, 647, 199, 146, 520, 107, 628, 621, 363, 71, 21, 28, 346, 92, 806, 727}, +{352, 230, 217, 531, 160, 93, 36, 669, 748, 854, 689, 258, 137, 871, 728, 699, 752, 251, 574, 202, 373, 351, 228, 120, 717, 260, 144, 219, 268, 82, 816, 1}, +{15, 515, 700, 753, 13, 23, 0, 51, 8, 1, 4, 82, 165, 77, 110, 33, 10, 180, 5, 202, 11, 22, 120, 12, 9, 197, 115, 93, 403, 141, 40, 351}, +{0, 9, 101, 217, 35, 88, 352, 100, 39, 175, 30, 68, 562, 752, 13, 317, 252, 115, 180, 197, 64, 1, 83, 141, 65, 213, 165, 230, 194, 36, 28, 265}, +{32, 64, 5, 470, 288, 90, 21, 147, 0, 95, 356, 22, 20, 519, 835, 312, 819, 18, 247, 182, 11, 97, 13, 4, 387, 49, 43, 298, 316, 48, 107, 7}, +{16, 14, 24, 1, 7, 2, 35, 0, 5, 50, 18, 69, 46, 12, 58, 75, 9, 67, 70, 163, 21, 54, 38, 48, 223, 502, 281, 37, 140, 60, 28, 10}, +{18, 265, 9, 252, 39, 195, 354, 411, 1, 16, 132, 101, 121, 682, 167, 203, 5, 363, 146, 593, 35, 333, 21, 271, 60, 13, 100, 0, 156, 327, 7, 520}, +{4, 13, 1, 115, 141, 23, 2, 180, 5, 0, 51, 3, 217, 202, 77, 15, 33, 269, 341, 318, 317, 21, 165, 515, 11, 10, 197, 365, 9, 137, 64, 352}, +{7, 24, 16, 14, 71, 35, 18, 92, 140, 189, 108, 149, 68, 60, 69, 150, 2, 230, 97, 66, 0, 458, 67, 1, 65, 251, 38, 314, 388, 267, 36, 46}, +{1, 22, 31, 36, 0, 2, 44, 5, 141, 105, 180, 170, 12, 64, 13, 98, 86, 55, 23, 21, 28, 164, 115, 127, 10, 125, 128, 4, 9, 239, 352, 197}, +{66, 7, 97, 2, 192, 20, 52, 43, 135, 74, 560, 107, 104, 0, 750, 147, 414, 29, 580, 173, 324, 376, 226, 194, 77, 174, 204, 38, 356, 64, 16, 470}, +{0, 101, 9, 68, 35, 124, 24, 65, 39, 16, 252, 100, 154, 166, 28, 364, 149, 694, 30, 88, 55, 346, 1, 419, 71, 439, 265, 289, 22, 21, 175, 158}, +{39, 9, 100, 30, 127, 0, 737, 856, 31, 836, 827, 254, 98, 931, 166, 88, 93, 1, 44, 190, 131, 228, 120, 395, 625, 385, 863, 264, 219, 373, 110, 28}, +{5, 17, 2, 3, 21, 45, 14, 155, 48, 32, 38, 1, 328, 181, 186, 46, 23, 51, 12, 61, 227, 29, 106, 54, 99, 133, 62, 832, 13, 37, 514, 543}, +{131, 613, 30, 224, 228, 716, 274, 100, 827, 406, 219, 856, 39, 190, 31, 88, 1, 166, 9, 44, 829, 863, 931, 93, 0, 187, 625, 924, 127, 98, 137, 254}, +{352, 217, 64, 141, 752, 269, 180, 864, 437, 372, 954, 115, 498, 177, 77, 349, 317, 318, 579, 291, 947, 197, 247, 0, 23, 717, 237, 304, 128, 457, 776, 678}, +{141, 217, 180, 317, 352, 115, 15, 341, 1, 23, 13, 365, 515, 752, 2, 64, 0, 5, 498, 700, 372, 165, 51, 237, 753, 77, 244, 197, 137, 4, 21, 253}, +{5, 2, 17, 14, 1, 45, 3, 38, 21, 29, 181, 58, 46, 48, 50, 133, 114, 171, 61, 155, 32, 6, 186, 281, 361, 12, 36, 54, 4, 13, 52, 514}, +{6, 2, 119, 25, 790, 4, 45, 483, 655, 113, 1, 29, 76, 26, 32, 19, 887, 17, 128, 0, 292, 833, 59, 61, 106, 64, 77, 814, 14, 151, 84, 42}, +{13, 23, 2, 0, 51, 4, 1, 115, 141, 3, 5, 180, 33, 217, 77, 9, 202, 11, 7, 15, 10, 6, 317, 64, 21, 197, 515, 165, 102, 128, 22, 269}, +{13, 23, 51, 202, 21, 5, 1, 15, 141, 165, 120, 2, 115, 12, 32, 0, 515, 128, 318, 64, 125, 700, 4, 403, 197, 453, 180, 457, 3, 7, 10, 6}, +{9, 39, 31, 30, 0, 127, 1, 44, 100, 131, 98, 187, 385, 276, 88, 442, 219, 908, 254, 116, 49, 166, 935, 28, 201, 36, 141, 827, 137, 299, 284, 21}, +{22, 49, 28, 109, 9, 185, 105, 95, 1, 131, 159, 272, 36, 67, 86, 254, 39, 55, 35, 0, 505, 31, 83, 169, 208, 327, 286, 98, 168, 535, 312, 708}, +{5, 1, 2, 21, 0, 12, 48, 22, 10, 14, 36, 3, 32, 17, 23, 54, 86, 38, 4, 51, 13, 37, 137, 50, 65, 281, 114, 45, 28, 99, 58, 202}, +{141, 269, 352, 82, 217, 351, 180, 854, 372, 922, 752, 1, 15, 260, 317, 318, 515, 202, 64, 700, 120, 349, 954, 753, 77, 35, 67, 717, 898, 137, 365, 115}, +{144, 203, 613, 418, 326, 406, 96, 669, 137, 679, 1, 228, 494, 822, 840, 317, 36, 83, 855, 160, 817, 859, 856, 816, 217, 831, 345, 93, 876, 77, 44, 251}, +{15, 13, 515, 23, 700, 753, 51, 1, 33, 0, 202, 21, 2, 5, 180, 141, 120, 165, 217, 82, 12, 117, 4, 352, 269, 197, 115, 32, 3, 9, 134, 260}, +{13, 23, 115, 1, 0, 51, 4, 77, 2, 33, 15, 141, 10, 5, 341, 180, 515, 3, 217, 202, 9, 365, 317, 64, 700, 102, 11, 165, 197, 22, 753, 7}, +{531, 943, 373, 160, 728, 93, 206, 260, 261, 559, 964, 269, 717, 535, 332, 384, 365, 295, 110, 533, 141, 10, 180, 352, 244, 137, 120, 55, 959, 564, 36, 253}, +{1, 31, 36, 170, 22, 55, 44, 10, 86, 64, 127, 0, 2, 98, 301, 164, 740, 338, 237, 143, 5, 125, 116, 13, 242, 141, 299, 180, 23, 169, 105, 12}, +{13, 23, 141, 77, 51, 4, 64, 32, 33, 202, 115, 269, 102, 128, 21, 0, 177, 180, 318, 90, 40, 10, 7, 5, 137, 15, 217, 352, 9, 291, 59, 22}, +{202, 120, 260, 318, 77, 15, 450, 269, 1, 82, 33, 23, 141, 13, 51, 515, 351, 128, 700, 5, 64, 326, 137, 21, 102, 110, 753, 494, 93, 523, 817, 165}, +{523, 899, 102, 33, 730, 15, 23, 403, 719, 117, 153, 13, 515, 51, 475, 4, 700, 5, 453, 817, 196, 753, 494, 40, 202, 120, 1, 2, 450, 457, 17, 421}, +{202, 403, 494, 450, 120, 817, 523, 475, 318, 453, 33, 402, 128, 77, 13, 51, 260, 576, 342, 102, 15, 23, 515, 4, 700, 5, 82, 753, 326, 210, 137, 615}, +{2, 29, 112, 66, 7, 52, 70, 151, 58, 87, 135, 5, 74, 226, 307, 6, 14, 186, 1, 45, 549, 172, 644, 25, 113, 287, 46, 155, 334, 64, 294, 97}, +{1, 77, 349, 291, 260, 120, 652, 102, 5, 39, 64, 269, 9, 33, 340, 342, 13, 98, 888, 698, 23, 296, 100, 318, 51, 202, 87, 137, 638, 128, 50, 850}, +{1, 13, 15, 2, 0, 4, 23, 515, 5, 141, 180, 3, 700, 341, 115, 51, 753, 269, 77, 901, 197, 352, 217, 33, 21, 11, 365, 6, 165, 202, 7, 317}, +{7, 14, 16, 2, 46, 5, 70, 58, 1, 38, 24, 35, 92, 163, 0, 75, 21, 18, 50, 54, 140, 12, 87, 220, 155, 69, 171, 23, 60, 9, 13, 307}, +{2, 29, 66, 226, 135, 7, 87, 74, 52, 278, 6, 75, 222, 220, 294, 70, 97, 1, 145, 25, 172, 262, 324, 38, 69, 112, 331, 92, 5, 14, 140, 26}, +{15, 515, 700, 753, 33, 77, 117, 4, 1, 102, 134, 40, 153, 11, 13, 196, 217, 21, 5, 51, 23, 115, 32, 3, 2, 202, 141, 137, 128, 291, 48, 177}, +{15, 217, 82, 515, 351, 141, 317, 1, 13, 700, 260, 77, 110, 120, 115, 854, 23, 753, 180, 51, 21, 36, 137, 922, 5, 64, 365, 352, 291, 202, 93, 341}, +{31, 190, 30, 373, 120, 110, 863, 88, 44, 127, 908, 856, 260, 318, 82, 98, 93, 187, 836, 717, 935, 39, 442, 131, 141, 254, 228, 219, 1, 968, 77, 116}, +{23, 13, 308, 9, 165, 115, 51, 21, 401, 125, 49, 39, 197, 391, 159, 254, 217, 743, 28, 438, 773, 629, 558, 386, 341, 95, 32, 317, 876, 679, 109, 166}, +{49, 5, 43, 165, 7, 0, 21, 104, 125, 22, 173, 422, 64, 13, 623, 102, 20, 18, 314, 95, 91, 141, 23, 31, 193, 51, 391, 900, 779, 558, 92, 232}, +{1, 4, 13, 2, 15, 0, 23, 515, 77, 3, 341, 33, 5, 700, 115, 51, 202, 753, 141, 180, 11, 10, 102, 217, 6, 901, 40, 7, 197, 318, 317, 365}, +{93, 843, 295, 120, 36, 160, 206, 261, 10, 137, 567, 110, 384, 141, 943, 268, 201, 332, 258, 55, 1, 180, 64, 116, 44, 144, 699, 203, 282, 31, 260, 373}, +{81, 7, 192, 426, 43, 173, 172, 104, 879, 91, 5, 712, 715, 526, 6, 97, 568, 95, 448, 66, 33, 861, 560, 32, 49, 20, 0, 636, 232, 825, 2, 22}, +{475, 403, 51, 453, 33, 102, 13, 23, 494, 202, 0, 196, 15, 77, 153, 18, 4, 117, 515, 450, 318, 22, 730, 128, 700, 421, 65, 753, 269, 402, 134, 817}, +{141, 269, 260, 318, 202, 120, 352, 349, 82, 351, 1, 5, 854, 137, 64, 291, 15, 922, 180, 851, 32, 77, 515, 372, 21, 700, 7, 217, 13, 947, 33, 753}, +{15, 515, 700, 753, 1, 13, 0, 2, 4, 23, 3, 5, 180, 115, 197, 12, 51, 165, 217, 10, 961, 9, 6, 141, 352, 21, 8, 7, 33, 77, 457, 120}, +{39, 166, 9, 30, 0, 101, 274, 404, 252, 333, 190, 100, 158, 438, 310, 88, 68, 265, 656, 21, 1, 530, 329, 344, 49, 539, 625, 254, 13, 131, 48, 419}, +{0, 1, 28, 9, 22, 12, 65, 83, 67, 36, 5, 2, 50, 55, 96, 109, 16, 13, 24, 23, 21, 238, 49, 18, 285, 160, 128, 39, 69, 114, 7, 323}, +{15, 515, 700, 1, 0, 753, 23, 2, 13, 51, 5, 180, 115, 6, 3, 9, 197, 12, 457, 120, 7, 165, 901, 82, 4, 21, 8, 141, 31, 33, 719, 341}, +{9, 39, 30, 0, 28, 166, 22, 49, 180, 1, 352, 35, 317, 158, 88, 141, 498, 131, 115, 345, 752, 128, 228, 217, 100, 83, 219, 930, 13, 251, 365, 36}, +{5, 61, 45, 2, 80, 29, 311, 209, 6, 17, 58, 1, 151, 106, 454, 667, 243, 70, 52, 496, 287, 592, 255, 738, 64, 74, 483, 14, 27, 32, 112, 19}, +{31, 125, 22, 44, 299, 456, 685, 242, 599, 116, 170, 28, 0, 1, 492, 393, 506, 144, 558, 10, 268, 301, 239, 23, 13, 36, 963, 367, 55, 206, 105, 95}, +{187, 258, 926, 574, 839, 93, 228, 860, 406, 219, 871, 160, 137, 531, 224, 116, 120, 902, 669, 201, 36, 131, 44, 144, 843, 533, 318, 384, 442, 1, 434, 268}, +{7, 107, 75, 16, 87, 9, 64, 177, 24, 18, 291, 77, 349, 141, 60, 232, 23, 0, 51, 269, 132, 14, 5, 21, 70, 32, 678, 112, 126, 121, 71, 947}, +{15, 515, 700, 753, 1, 0, 2, 13, 5, 3, 23, 180, 4, 115, 901, 51, 6, 8, 961, 9, 7, 10, 12, 82, 197, 22, 141, 341, 33, 120, 365, 457}, +{13, 23, 51, 1, 5, 202, 2, 12, 15, 21, 165, 141, 0, 115, 3, 4, 32, 515, 197, 10, 180, 318, 128, 120, 64, 700, 6, 7, 403, 269, 457, 137}, +{1, 2, 0, 77, 64, 3, 141, 13, 33, 15, 23, 10, 6, 102, 5, 515, 180, 4, 117, 7, 700, 165, 11, 217, 269, 40, 753, 115, 128, 17, 197, 134}, +{345, 531, 332, 269, 260, 317, 717, 752, 373, 351, 180, 352, 728, 82, 10, 365, 160, 533, 217, 143, 498, 251, 244, 93, 341, 901, 36, 1, 141, 898, 55, 864}, +{16, 7, 33, 189, 92, 77, 388, 60, 140, 35, 102, 24, 14, 1, 230, 21, 150, 117, 733, 314, 18, 915, 71, 13, 108, 134, 5, 64, 69, 2, 98, 22}, +{142, 202, 234, 178, 5, 786, 77, 49, 70, 0, 416, 450, 639, 878, 1, 48, 21, 929, 147, 259, 315, 455, 198, 120, 12, 481, 163, 113, 846, 329, 318, 22}, +{81, 715, 192, 0, 173, 712, 681, 104, 636, 91, 74, 20, 750, 370, 7, 718, 95, 879, 22, 43, 825, 560, 422, 64, 207, 49, 172, 18, 397, 10, 426, 319}, +{13, 23, 15, 51, 515, 0, 700, 753, 4, 1, 961, 2, 10, 115, 457, 11, 33, 453, 3, 5, 9, 40, 12, 197, 165, 77, 401, 475, 64, 102, 22, 569}, +{64, 297, 5, 445, 95, 61, 250, 311, 80, 34, 17, 312, 45, 2, 86, 472, 58, 14, 180, 53, 22, 151, 869, 738, 247, 237, 29, 1, 128, 165, 21, 288}, +{16, 24, 18, 71, 7, 35, 118, 92, 14, 154, 60, 68, 0, 149, 28, 302, 124, 150, 55, 175, 2, 9, 97, 1, 429, 20, 108, 273, 22, 65, 43, 126}, +{195, 360, 156, 771, 132, 163, 626, 687, 591, 371, 883, 146, 121, 846, 70, 586, 379, 13, 293, 98, 407, 48, 761, 296, 354, 18, 31, 1, 55, 49, 21, 105}, +{202, 13, 77, 23, 318, 33, 51, 0, 4, 141, 5, 21, 217, 32, 291, 102, 64, 128, 15, 10, 9, 494, 269, 137, 515, 403, 1, 31, 117, 700, 120, 317}, +{7, 192, 97, 81, 172, 66, 426, 173, 43, 715, 712, 232, 861, 879, 104, 330, 568, 298, 74, 893, 885, 526, 387, 825, 92, 140, 91, 14, 636, 6, 5, 448}, +{2, 1, 14, 6, 67, 7, 65, 69, 24, 36, 66, 124, 108, 83, 38, 29, 22, 86, 0, 18, 484, 5, 28, 46, 12, 10, 25, 302, 150, 16, 650, 74}, +{33, 77, 13, 202, 102, 4, 0, 23, 128, 51, 141, 64, 318, 22, 403, 269, 137, 10, 15, 40, 494, 117, 32, 59, 11, 153, 1, 21, 177, 196, 515, 115}, +{269, 141, 318, 77, 349, 291, 217, 202, 33, 15, 372, 304, 515, 22, 102, 177, 351, 700, 352, 120, 5, 137, 10, 317, 260, 753, 64, 851, 854, 403, 49, 21}, +{6, 74, 66, 85, 138, 25, 87, 42, 135, 26, 226, 222, 280, 29, 75, 500, 220, 278, 792, 70, 19, 2, 1, 294, 204, 64, 32, 145, 853, 112, 52, 174}, +{9, 0, 105, 39, 16, 18, 1, 101, 272, 31, 127, 98, 24, 518, 333, 252, 310, 28, 68, 737, 846, 371, 158, 916, 938, 49, 30, 7, 286, 35, 301, 455}, +{2, 1, 14, 67, 24, 46, 83, 108, 69, 29, 38, 103, 114, 36, 6, 133, 18, 0, 28, 7, 65, 52, 236, 75, 50, 398, 5, 309, 135, 16, 278, 160}, +{22, 1, 28, 105, 49, 95, 0, 2, 67, 55, 36, 239, 168, 159, 65, 35, 14, 170, 320, 164, 9, 7, 10, 5, 114, 12, 83, 64, 194, 109, 24, 301}, +{7, 66, 172, 97, 92, 140, 232, 568, 298, 14, 192, 314, 16, 380, 135, 324, 2, 330, 74, 38, 357, 448, 126, 69, 35, 5, 107, 6, 387, 60, 204, 572}, +{2, 29, 1, 14, 5, 6, 46, 133, 114, 50, 52, 26, 218, 108, 19, 13, 366, 236, 27, 45, 70, 17, 58, 23, 86, 51, 137, 65, 112, 38, 25, 12}, +{6, 1, 74, 25, 2, 26, 29, 66, 42, 19, 75, 14, 388, 67, 108, 70, 52, 85, 103, 65, 38, 138, 357, 133, 114, 594, 324, 516, 603, 96, 309, 69}, +{22, 9, 28, 1, 36, 49, 109, 105, 86, 95, 131, 31, 169, 39, 0, 141, 272, 159, 44, 55, 98, 180, 13, 30, 185, 115, 83, 128, 352, 137, 64, 208}, +{203, 822, 326, 23, 77, 859, 403, 494, 576, 39, 473, 182, 33, 1, 691, 100, 18, 217, 13, 817, 411, 447, 363, 102, 93, 966, 96, 478, 291, 704, 310, 120}, +{15, 515, 700, 753, 33, 77, 117, 4, 102, 134, 115, 153, 13, 1, 40, 217, 11, 196, 341, 2, 5, 3, 23, 317, 365, 0, 21, 291, 32, 51, 12, 569}, +{15, 515, 700, 753, 13, 0, 23, 1, 8, 82, 51, 165, 197, 120, 180, 2, 9, 33, 4, 110, 5, 12, 10, 260, 351, 386, 141, 7, 457, 475, 93, 901}, +{1, 23, 13, 15, 51, 0, 21, 2, 515, 5, 141, 180, 120, 165, 700, 202, 197, 4, 753, 12, 33, 9, 7, 82, 115, 93, 3, 352, 260, 6, 110, 48}, +{15, 515, 700, 753, 0, 1, 2, 5, 3, 4, 8, 13, 180, 341, 10, 23, 7, 6, 9, 51, 77, 197, 961, 115, 165, 82, 120, 31, 22, 202, 457, 217}, +{559, 661, 922, 564, 141, 533, 10, 317, 373, 110, 143, 269, 244, 260, 332, 261, 93, 642, 752, 295, 351, 876, 531, 843, 180, 206, 728, 384, 352, 1, 434, 120}, +{15, 515, 1, 0, 700, 2, 13, 23, 753, 5, 51, 180, 3, 165, 12, 6, 197, 115, 4, 9, 7, 21, 719, 8, 457, 82, 141, 120, 33, 22, 901, 10}, +{198, 234, 0, 325, 5, 77, 202, 416, 20, 147, 32, 43, 639, 315, 49, 61, 450, 455, 142, 21, 113, 230, 22, 318, 725, 342, 207, 13, 95, 904, 494, 10}, +{447, 264, 363, 9, 411, 676, 682, 1, 156, 664, 821, 478, 166, 354, 812, 39, 100, 905, 382, 897, 98, 18, 759, 404, 31, 101, 724, 5, 265, 223, 88, 13}, +{24, 14, 69, 16, 35, 18, 2, 7, 108, 189, 71, 67, 267, 149, 1, 46, 68, 83, 38, 140, 0, 236, 251, 9, 388, 60, 133, 103, 65, 28, 29, 50}, +{16, 7, 35, 20, 14, 18, 109, 2, 43, 120, 107, 60, 1, 121, 326, 907, 553, 77, 13, 147, 23, 82, 68, 260, 0, 403, 5, 24, 202, 126, 265, 199}, +{30, 131, 187, 276, 31, 44, 613, 442, 39, 9, 190, 228, 1, 839, 116, 935, 908, 219, 127, 88, 244, 224, 110, 137, 93, 201, 98, 141, 36, 567, 0, 856}, +{98, 223, 1, 393, 812, 265, 100, 421, 593, 834, 697, 48, 51, 410, 791, 382, 21, 88, 31, 284, 9, 125, 96, 293, 230, 23, 213, 217, 656, 689, 541, 5}, +{98, 51, 127, 219, 616, 258, 105, 293, 395, 421, 924, 512, 31, 308, 23, 201, 116, 44, 301, 272, 763, 276, 125, 13, 453, 170, 401, 295, 261, 944, 115, 567}, +{253, 110, 951, 352, 811, 206, 332, 180, 141, 244, 282, 10, 854, 417, 642, 638, 559, 752, 143, 911, 260, 55, 93, 533, 499, 498, 661, 120, 351, 959, 564, 341}, +{49, 9, 159, 254, 272, 158, 0, 131, 28, 39, 627, 105, 327, 286, 22, 518, 688, 578, 68, 347, 374, 101, 224, 424, 95, 35, 219, 24, 16, 364, 65, 344}, +{105, 22, 131, 272, 98, 286, 327, 109, 374, 239, 28, 95, 320, 219, 9, 224, 55, 127, 187, 36, 578, 169, 64, 185, 538, 1, 159, 10, 371, 634, 49, 616}, +{691, 478, 340, 1, 658, 914, 724, 363, 744, 698, 156, 772, 411, 296, 682, 447, 9, 284, 335, 98, 264, 303, 909, 21, 354, 410, 225, 13, 664, 686, 88, 919}, +{16, 24, 35, 18, 71, 7, 140, 108, 189, 267, 92, 60, 14, 230, 68, 69, 9, 1, 149, 46, 246, 191, 388, 167, 2, 0, 118, 236, 133, 21, 674, 5}, +{9, 0, 127, 31, 98, 371, 395, 39, 737, 49, 1, 44, 385, 272, 512, 28, 293, 242, 836, 761, 254, 299, 101, 16, 187, 22, 116, 158, 159, 131, 18, 21}, +{16, 18, 68, 0, 60, 35, 9, 101, 252, 28, 118, 24, 419, 55, 7, 109, 604, 71, 39, 121, 22, 364, 14, 158, 191, 167, 925, 126, 329, 21, 92, 49}, +{116, 268, 203, 93, 206, 692, 551, 31, 417, 940, 499, 8, 473, 44, 202, 523, 959, 0, 120, 137, 559, 22, 450, 403, 576, 10, 728, 299, 13, 326, 51, 1}, +{225, 459, 744, 1, 919, 914, 691, 330, 622, 21, 141, 223, 5, 284, 934, 335, 88, 538, 340, 82, 385, 839, 363, 120, 478, 98, 48, 30, 64, 32, 686, 166}, +{5, 1, 2, 0, 14, 36, 21, 281, 12, 48, 50, 67, 22, 28, 54, 83, 24, 218, 38, 10, 181, 9, 32, 18, 65, 58, 45, 114, 430, 17, 99, 37}, +{137, 450, 202, 704, 120, 260, 326, 318, 968, 269, 851, 403, 291, 77, 23, 141, 182, 310, 494, 373, 351, 457, 82, 890, 349, 110, 60, 128, 817, 678, 105, 96}, +{15, 515, 700, 753, 4, 33, 13, 23, 77, 5, 40, 11, 102, 93, 1, 21, 110, 51, 82, 117, 141, 2, 10, 8, 32, 64, 120, 31, 202, 3, 217, 115}, +{15, 13, 1, 23, 515, 0, 51, 2, 700, 5, 753, 21, 180, 141, 165, 3, 12, 115, 197, 4, 7, 6, 457, 9, 352, 202, 33, 8, 719, 120, 77, 341}, +{219, 127, 258, 98, 276, 201, 131, 395, 944, 293, 116, 284, 567, 31, 242, 105, 137, 935, 295, 44, 403, 860, 51, 224, 576, 456, 9, 371, 578, 475, 202, 512}, +{16, 7, 18, 35, 60, 0, 14, 20, 118, 28, 68, 22, 2, 24, 1, 92, 158, 107, 5, 49, 154, 126, 109, 12, 43, 10, 55, 6, 677, 71, 21, 168}, +{93, 728, 531, 160, 559, 373, 574, 120, 295, 860, 533, 269, 717, 260, 926, 902, 258, 318, 36, 201, 261, 434, 851, 137, 617, 141, 187, 352, 843, 384, 332, 251}, +{28, 0, 1, 9, 22, 109, 83, 39, 49, 12, 36, 67, 55, 5, 96, 2, 128, 30, 158, 69, 21, 23, 160, 208, 35, 13, 65, 323, 50, 141, 194, 238}, +{23, 13, 51, 1, 5, 15, 141, 21, 0, 2, 165, 515, 202, 700, 12, 197, 180, 120, 32, 115, 4, 753, 64, 9, 7, 269, 6, 3, 125, 386, 48, 453}, +{5, 21, 13, 49, 14, 20, 7, 23, 43, 32, 1, 0, 652, 48, 713, 22, 38, 2, 16, 132, 955, 107, 12, 279, 24, 888, 197, 640, 70, 303, 18, 638}, +{9, 0, 28, 39, 1, 30, 35, 101, 22, 67, 83, 141, 49, 175, 36, 68, 55, 88, 13, 251, 10, 69, 23, 158, 180, 115, 64, 100, 217, 65, 345, 166}, +{260, 120, 82, 269, 5, 450, 351, 1, 202, 141, 854, 13, 77, 922, 32, 33, 137, 4, 23, 125, 291, 21, 15, 515, 165, 349, 177, 700, 318, 326, 180, 753}, +{121, 16, 18, 35, 363, 101, 60, 20, 107, 14, 68, 259, 621, 55, 604, 43, 7, 252, 9, 364, 126, 0, 167, 191, 5, 407, 132, 28, 199, 419, 146, 10}, +{13, 23, 51, 1, 15, 0, 2, 141, 5, 515, 12, 21, 700, 115, 165, 180, 4, 753, 3, 197, 202, 32, 9, 120, 7, 8, 6, 11, 37, 10, 457, 269}, +{201, 144, 206, 443, 418, 203, 435, 96, 335, 459, 187, 1, 88, 332, 330, 321, 269, 934, 30, 372, 822, 521, 268, 326, 44, 523, 382, 141, 410, 264, 494, 473}, +{31, 44, 276, 201, 116, 131, 284, 662, 567, 144, 9, 489, 98, 295, 268, 434, 0, 30, 137, 39, 93, 1, 187, 22, 219, 918, 110, 299, 141, 36, 224, 384}, +{520, 478, 664, 1, 264, 604, 9, 167, 777, 759, 411, 0, 806, 724, 48, 21, 101, 68, 647, 936, 363, 223, 118, 682, 410, 18, 100, 16, 252, 98, 265, 13}, +{23, 70, 21, 87, 60, 75, 120, 182, 163, 379, 92, 18, 7, 937, 71, 121, 446, 132, 24, 98, 931, 126, 107, 77, 795, 195, 115, 44, 411, 146, 51, 850}, +{39, 9, 0, 737, 127, 31, 846, 98, 1, 827, 105, 310, 371, 30, 254, 100, 44, 18, 395, 242, 272, 101, 385, 916, 836, 16, 265, 131, 938, 93, 166, 557}, +{279, 20, 43, 126, 107, 7, 92, 16, 356, 362, 60, 595, 246, 359, 598, 35, 0, 683, 939, 653, 121, 97, 125, 441, 399, 392, 150, 199, 48, 230, 14, 649}, +{206, 417, 93, 959, 499, 728, 8, 559, 120, 473, 137, 141, 10, 564, 31, 260, 44, 450, 203, 341, 253, 244, 373, 116, 143, 638, 268, 180, 352, 110, 318, 940}, +{259, 465, 147, 132, 590, 687, 534, 199, 581, 146, 941, 427, 107, 640, 279, 178, 121, 5, 195, 150, 522, 955, 198, 35, 786, 929, 798, 142, 1, 21, 325, 626}, +{523, 15, 120, 450, 202, 515, 403, 51, 817, 700, 13, 753, 23, 457, 33, 899, 128, 64, 730, 102, 494, 342, 115, 719, 453, 196, 49, 99, 318, 421, 308, 5}, +{141, 559, 10, 244, 365, 564, 661, 180, 253, 143, 752, 110, 55, 317, 533, 341, 901, 93, 373, 206, 535, 160, 82, 922, 260, 36, 531, 964, 352, 332, 261, 197}, +{219, 258, 98, 127, 276, 964, 943, 137, 843, 535, 201, 935, 131, 860, 261, 295, 284, 567, 206, 44, 116, 31, 253, 492, 203, 332, 160, 615, 36, 93, 55, 692}, +{0, 319, 422, 207, 945, 693, 577, 887, 32, 804, 95, 344, 104, 904, 61, 20, 5, 43, 7, 725, 113, 510, 306, 102, 49, 263, 153, 426, 33, 83, 22, 9}, +{1, 22, 0, 5, 12, 2, 36, 21, 28, 86, 49, 105, 9, 10, 23, 13, 141, 95, 31, 55, 128, 37, 51, 4, 83, 202, 3, 64, 96, 7, 32, 44}, +{15, 515, 13, 700, 1, 0, 753, 2, 23, 3, 4, 5, 51, 10, 115, 197, 6, 33, 12, 9, 165, 7, 8, 77, 11, 961, 180, 269, 141, 22, 120, 457}, +{15, 1, 23, 120, 77, 13, 515, 51, 141, 202, 700, 180, 110, 137, 260, 753, 326, 5, 128, 102, 0, 21, 2, 165, 269, 33, 197, 450, 318, 217, 93, 115}, +{15, 515, 1, 700, 0, 753, 13, 2, 23, 180, 51, 5, 120, 4, 9, 115, 197, 12, 7, 165, 21, 33, 6, 82, 3, 8, 523, 901, 31, 141, 457, 260}, +{16, 18, 24, 7, 92, 35, 60, 75, 9, 13, 71, 14, 0, 108, 50, 21, 126, 121, 1, 140, 23, 5, 132, 146, 2, 12, 128, 10, 64, 141, 70, 87}, +{180, 341, 901, 15, 515, 1, 365, 700, 0, 2, 197, 753, 115, 4, 10, 13, 752, 5, 3, 8, 165, 317, 141, 23, 143, 873, 44, 31, 569, 55, 93, 6}, +{9, 0, 175, 35, 101, 28, 39, 67, 68, 1, 65, 83, 30, 69, 364, 336, 22, 114, 55, 124, 194, 158, 100, 289, 252, 166, 64, 345, 103, 36, 50, 88}, +{64, 165, 180, 197, 115, 247, 217, 237, 21, 13, 32, 316, 22, 141, 352, 72, 288, 304, 95, 225, 76, 391, 386, 16, 468, 90, 49, 35, 365, 640, 372, 23}, +{15, 515, 700, 13, 753, 1, 0, 2, 23, 4, 5, 3, 115, 51, 141, 197, 12, 10, 180, 961, 7, 9, 21, 33, 217, 6, 8, 165, 457, 11, 77, 341}, +{132, 121, 199, 146, 60, 279, 493, 640, 407, 598, 126, 195, 534, 581, 955, 590, 107, 5, 150, 35, 522, 49, 259, 16, 18, 360, 156, 0, 147, 362, 21, 167}, +{0, 1, 28, 9, 22, 5, 36, 12, 65, 24, 67, 96, 2, 83, 18, 50, 114, 55, 21, 16, 7, 10, 23, 14, 13, 160, 137, 51, 48, 218, 103, 69}, +{93, 120, 957, 77, 30, 968, 459, 110, 137, 160, 613, 102, 202, 352, 373, 141, 31, 372, 217, 330, 190, 318, 269, 260, 203, 44, 28, 473, 228, 177, 863, 704}, +{15, 515, 700, 0, 753, 1, 13, 23, 2, 51, 5, 9, 120, 82, 4, 7, 901, 197, 10, 8, 260, 180, 341, 12, 33, 6, 3, 523, 165, 102, 115, 141}, +{206, 417, 8, 141, 499, 44, 244, 93, 31, 10, 137, 253, 559, 116, 728, 144, 120, 564, 269, 638, 203, 352, 143, 260, 341, 752, 268, 717, 951, 180, 160, 110}, +{530, 254, 228, 1, 96, 21, 406, 39, 827, 31, 669, 840, 613, 829, 137, 679, 166, 98, 23, 51, 960, 438, 131, 93, 48, 224, 219, 317, 310, 36, 876, 190}, +{15, 515, 700, 753, 13, 457, 0, 197, 719, 1, 165, 82, 23, 8, 120, 730, 2, 10, 12, 180, 134, 5, 9, 141, 260, 4, 351, 51, 115, 3, 341, 899}, +{0, 16, 68, 9, 24, 28, 18, 35, 252, 109, 39, 419, 124, 158, 154, 55, 101, 71, 22, 118, 60, 7, 49, 65, 333, 14, 1, 10, 329, 364, 677, 346}, +{1, 15, 13, 23, 515, 51, 120, 0, 700, 180, 2, 165, 5, 753, 141, 197, 21, 33, 202, 102, 260, 4, 9, 12, 7, 326, 137, 450, 115, 6, 82, 110}, +{535, 253, 352, 564, 110, 365, 82, 180, 341, 10, 854, 533, 55, 898, 244, 901, 873, 141, 752, 143, 642, 559, 498, 317, 36, 951, 115, 964, 638, 282, 661, 197}, +{31, 44, 125, 338, 116, 64, 242, 36, 1, 10, 55, 22, 456, 237, 180, 13, 299, 164, 506, 86, 23, 165, 558, 143, 0, 762, 492, 479, 844, 546, 93, 8}, +{13, 23, 4, 1, 202, 2, 0, 51, 115, 77, 141, 180, 5, 15, 217, 3, 33, 11, 515, 317, 9, 10, 102, 21, 700, 341, 365, 318, 269, 64, 32, 128}, +{9, 39, 0, 166, 68, 101, 28, 364, 30, 158, 562, 35, 175, 65, 333, 154, 49, 404, 706, 124, 21, 252, 274, 168, 190, 289, 100, 570, 16, 1, 310, 346}, +{15, 515, 700, 753, 341, 13, 0, 23, 1, 33, 141, 4, 260, 82, 77, 51, 351, 180, 9, 5, 115, 137, 10, 217, 11, 120, 102, 40, 349, 269, 202, 854} +#else { 202,403,51,450,318,23,120,13,494,5,523,260,77,21,15,128,48,141,33,817,137,269,12,102,1,475,4,326,7,32,453,64,196,115,730,49,165,2,82,342,6,401,180,31,899,59,402,351,197,17,125,457,14,386,40,3,61,58,37,221,95,16,99,719,98,20,10,854,117,153,27,576,134,341,308,216,11,194,30,24,922,285,9,50,86,65,19,615,391,44,75,237,177,90,352,93,56,22,18,116,70,96,247,291,45,110,105,60,57,54,43,36,0,217,421,203,46,629,569,365,210,92,69,66,38,28,144,551 }, { 13,115,51,23,141,217,269,137,318,202,77,21,317,5,64,4,291,2,352,7,32,33,6,372,0,48,365,3,102,349,12,341,177,180,10,237,9,221,403,165,752,22,11,244,28,308,15,128,247,197,49,16,494,125,98,40,120,498,31,90,304,143,95,93,437,196,144,86,44,864,153,18,678,342,901,39,24,30,203,160,117,105,475,14,482,253,457,873,59,35,579,36,569,450,206,72,99,17,717,401,241,453,110,546,201,83,421,61,37,326,260,509,284,275,96,8,109,57,391,386,468,134,82,961,822,576,89,68 }, { 29,58,262,74,287,52,151,331,171,500,396,334,75,27,635,220,53,1,26,409,6,324,5,70,145,223,163,112,73,50,45,549,445,113,297,19,675,651,46,61,502,307,14,17,34,573,186,80,394,436,583,315,138,38,21,767,250,491,820,350,64,2,32,357,42,852,25,764,309,67,802,96,631,48,606,780,243,881,103,241,115,807,13,4,155,181,11,106,611,614,278,153,23,108,69,845,841,308,400,72,853,200,66,196,226,237,587,632,24,281,785,133,128,125,117,380,95,474,294,83,197,90,161,134,366,236,760,311 }, @@ -967,3 +1964,7 @@ { 23,13,51,4,115,202,5,217,77,141,1,11,180,2,317,0,3,7,33,269,318,15,365,341,21,9,102,10,32,6,40,12,352,177,22,197,403,64,165,128,901,59,752,31,494,137,308,291,28,8,18,349,401,16,125,90,30,14,237,498,372,93,37,98,153,49,453,17,36,873,44,475,457,39,342,196,210,24,48,326,569,386,421,247,95,203,120,509,275,116,391,961,117,244,110,143,57,304,144,216,482,719,134,139,468,86,523,55,221,450,67,76,50,253,35,105,260,65,437,373,730,72,859,629,46,692,576,111 }, { 39,9,166,364,68,101,158,333,0,154,562,28,404,30,65,124,252,35,175,274,344,310,190,706,49,289,570,100,168,438,694,419,346,703,826,55,16,24,439,21,88,149,254,577,429,810,109,159,962,857,671,212,455,656,22,610,95,194,1,336,747,13,125,67,36,131,530,865,48,71,625,793,10,589,23,64,841,265,484,539,86,224,558,350,69,237,420,51,835,96,272,105,406,677,165,228,83,18,31,141,114,286,557,221,347,115,137,169,722,778,7,391,98,818,816,308,840,634,709,44,185,128,960,777,143,258,669,60 }, { 15,341,13,33,23,77,141,4,0,351,1,260,102,51,82,9,40,349,854,11,115,217,269,137,180,202,922,5,901,22,10,117,21,365,318,197,120,352,64,12,7,153,177,59,291,32,128,2,165,196,372,36,403,317,457,28,18,8,16,304,30,14,450,31,898,37,3,752,48,134,139,494,421,6,453,401,719,90,86,569,523,110,24,55,475,210,49,44,386,17,730,95,247,244,961,143,125,308,342,817,629,98,498,93,96,76,39,275,509,326,99,285,373,57,237,35,402,160,111,253,105,391,221,116,899,72,127,661 } +#endif +}}; +} // namespace rgbcx::BC1 +// clang-format on \ No newline at end of file diff --git a/src/rgbcx/BC1/Tables.cpp b/src/rgbcx/BC1/Tables.cpp deleted file mode 100644 index 937bf5b..0000000 --- a/src/rgbcx/BC1/Tables.cpp +++ /dev/null @@ -1,1317 +0,0 @@ -// rgbcx.h v1.12 -// High-performance scalar BC1-5 encoders. Public Domain or MIT license (you choose - see below), written by Richard Geldreich 2020 . - -#include "Tables.h" - -const float g_midpoint5[32] = {.015686f, .047059f, .078431f, .111765f, .145098f, .176471f, .207843f, .241176f, .274510f, .305882f, .337255f, - .370588f, .403922f, .435294f, .466667f, .5f, .533333f, .564706f, .596078f, .629412f, .662745f, .694118f, - .725490f, .758824f, .792157f, .823529f, .854902f, .888235f, .921569f, .952941f, .984314f, 1e+37f}; -const float g_midpoint6[64] = {.007843f, .023529f, .039216f, .054902f, .070588f, .086275f, .101961f, .117647f, .133333f, .149020f, .164706f, .180392f, .196078f, - .211765f, .227451f, .245098f, .262745f, .278431f, .294118f, .309804f, .325490f, .341176f, .356863f, .372549f, .388235f, .403922f, - .419608f, .435294f, .450980f, .466667f, .482353f, .500000f, .517647f, .533333f, .549020f, .564706f, .580392f, .596078f, .611765f, - .627451f, .643137f, .658824f, .674510f, .690196f, .705882f, .721569f, .737255f, .754902f, .772549f, .788235f, .803922f, .819608f, - .835294f, .850980f, .866667f, .882353f, .898039f, .913725f, .929412f, .945098f, .960784f, .976471f, .992157f, 1e+37f}; - -// All total orderings for 16 pixels 2-bit selectors. -// BC1 selector order 0, 2, 3, 1 (i.e. the selectors are reordered into linear order). -const uint8_t g_unique_total_orders4[NUM_UNIQUE_TOTAL_ORDERINGS4][4] = { - {0, 8, 2, 6}, {4, 3, 9, 0}, {4, 8, 1, 3}, {12, 0, 3, 1}, {11, 3, 2, 0}, {6, 4, 6, 0}, {7, 5, 0, 4}, {6, 0, 8, 2}, {1, 0, 0, 15}, {3, 0, 8, 5}, - {1, 1, 13, 1}, {13, 1, 2, 0}, {0, 14, 1, 1}, {0, 15, 1, 0}, {0, 13, 0, 3}, {16, 0, 0, 0}, {4, 3, 4, 5}, {8, 6, 0, 2}, {0, 10, 0, 6}, {10, 0, 4, 2}, - {7, 2, 1, 6}, {4, 7, 5, 0}, {1, 4, 7, 4}, {0, 14, 2, 0}, {2, 7, 2, 5}, {9, 0, 5, 2}, {9, 2, 2, 3}, {10, 0, 5, 1}, {2, 3, 7, 4}, {4, 9, 0, 3}, - {1, 5, 0, 10}, {1, 1, 6, 8}, {6, 6, 4, 0}, {11, 5, 0, 0}, {11, 2, 0, 3}, {4, 0, 10, 2}, {2, 3, 10, 1}, {1, 13, 1, 1}, {0, 14, 0, 2}, {2, 3, 3, 8}, - {12, 3, 1, 0}, {14, 0, 0, 2}, {9, 1, 3, 3}, {6, 4, 0, 6}, {1, 1, 5, 9}, {5, 9, 0, 2}, {2, 10, 1, 3}, {12, 0, 0, 4}, {4, 6, 6, 0}, {0, 6, 4, 6}, - {3, 7, 4, 2}, {0, 13, 3, 0}, {3, 10, 0, 3}, {10, 2, 1, 3}, {1, 12, 1, 2}, {2, 0, 13, 1}, {11, 0, 5, 0}, {12, 1, 3, 0}, {6, 4, 5, 1}, {10, 4, 2, 0}, - {3, 6, 1, 6}, {7, 3, 6, 0}, {10, 4, 0, 2}, {10, 0, 2, 4}, {0, 5, 9, 2}, {0, 9, 3, 4}, {6, 4, 2, 4}, {3, 4, 7, 2}, {3, 3, 5, 5}, {4, 2, 9, 1}, - {6, 2, 8, 0}, {3, 5, 3, 5}, {4, 10, 1, 1}, {10, 1, 3, 2}, {5, 7, 0, 4}, {5, 3, 7, 1}, {6, 8, 1, 1}, {8, 8, 0, 0}, {11, 1, 0, 4}, {14, 1, 0, 1}, - {9, 3, 2, 2}, {8, 2, 1, 5}, {0, 0, 2, 14}, {3, 3, 9, 1}, {10, 1, 5, 0}, {8, 3, 1, 4}, {1, 5, 8, 2}, {6, 1, 9, 0}, {3, 2, 1, 10}, {3, 11, 1, 1}, - {7, 6, 3, 0}, {9, 0, 3, 4}, {5, 2, 5, 4}, {0, 2, 3, 11}, {15, 0, 0, 1}, {0, 6, 6, 4}, {3, 4, 9, 0}, {4, 7, 0, 5}, {0, 4, 4, 8}, {0, 13, 2, 1}, - {2, 4, 1, 9}, {3, 2, 5, 6}, {10, 6, 0, 0}, {3, 5, 6, 2}, {8, 0, 4, 4}, {1, 3, 6, 6}, {7, 7, 0, 2}, {6, 1, 4, 5}, {0, 11, 1, 4}, {2, 2, 8, 4}, - {0, 1, 2, 13}, {15, 0, 1, 0}, {7, 2, 6, 1}, {8, 1, 7, 0}, {1, 8, 4, 3}, {2, 13, 1, 0}, {1, 0, 7, 8}, {14, 2, 0, 0}, {1, 8, 1, 6}, {9, 3, 3, 1}, - {0, 0, 7, 9}, {4, 4, 1, 7}, {9, 0, 6, 1}, {10, 2, 4, 0}, {1, 7, 3, 5}, {0, 3, 8, 5}, {5, 2, 4, 5}, {1, 2, 5, 8}, {0, 8, 7, 1}, {10, 3, 2, 1}, - {12, 0, 4, 0}, {2, 1, 4, 9}, {5, 2, 2, 7}, {1, 9, 3, 3}, {15, 1, 0, 0}, {6, 3, 4, 3}, {9, 5, 0, 2}, {1, 6, 9, 0}, {6, 6, 0, 4}, {13, 2, 1, 0}, - {5, 1, 8, 2}, {0, 5, 11, 0}, {7, 1, 0, 8}, {1, 2, 12, 1}, {0, 3, 3, 10}, {7, 4, 2, 3}, {5, 1, 4, 6}, {7, 0, 3, 6}, {3, 12, 0, 1}, {3, 4, 5, 4}, - {1, 10, 0, 5}, {7, 4, 3, 2}, {10, 5, 0, 1}, {13, 3, 0, 0}, {2, 5, 4, 5}, {3, 10, 1, 2}, {5, 1, 2, 8}, {14, 0, 1, 1}, {1, 5, 4, 6}, {1, 4, 5, 6}, - {2, 3, 11, 0}, {11, 0, 4, 1}, {11, 2, 2, 1}, {5, 3, 8, 0}, {1, 3, 10, 2}, {0, 1, 13, 2}, {3, 1, 4, 8}, {4, 2, 4, 6}, {1, 5, 6, 4}, {2, 1, 11, 2}, - {1, 2, 9, 4}, {4, 7, 3, 2}, {6, 2, 5, 3}, {7, 2, 2, 5}, {8, 1, 4, 3}, {3, 2, 8, 3}, {12, 1, 0, 3}, {7, 8, 1, 0}, {7, 0, 2, 7}, {5, 10, 0, 1}, - {0, 2, 14, 0}, {2, 9, 3, 2}, {7, 0, 0, 9}, {11, 1, 4, 0}, {10, 4, 1, 1}, {2, 2, 9, 3}, {5, 7, 2, 2}, {1, 3, 1, 11}, {13, 2, 0, 1}, {4, 2, 8, 2}, - {2, 3, 1, 10}, {4, 2, 5, 5}, {7, 0, 7, 2}, {10, 0, 0, 6}, {0, 8, 5, 3}, {4, 4, 0, 8}, {12, 4, 0, 0}, {0, 1, 14, 1}, {8, 0, 1, 7}, {5, 1, 5, 5}, - {11, 0, 3, 2}, {0, 4, 1, 11}, {0, 8, 8, 0}, {0, 2, 5, 9}, {7, 3, 2, 4}, {7, 8, 0, 1}, {1, 0, 3, 12}, {7, 4, 5, 0}, {1, 6, 7, 2}, {7, 6, 1, 2}, - {9, 6, 1, 0}, {12, 2, 0, 2}, {4, 1, 6, 5}, {4, 0, 1, 11}, {8, 4, 4, 0}, {13, 0, 1, 2}, {8, 6, 2, 0}, {4, 12, 0, 0}, {2, 7, 5, 2}, {2, 0, 5, 9}, - {5, 4, 5, 2}, {3, 8, 5, 0}, {7, 3, 3, 3}, {4, 4, 8, 0}, {2, 1, 3, 10}, {5, 0, 1, 10}, {6, 4, 3, 3}, {4, 9, 1, 2}, {1, 4, 0, 11}, {11, 3, 1, 1}, - {4, 0, 12, 0}, {13, 0, 0, 3}, {6, 1, 6, 3}, {9, 0, 4, 3}, {8, 0, 0, 8}, {8, 4, 0, 4}, {0, 12, 1, 3}, {0, 4, 10, 2}, {3, 4, 8, 1}, {1, 3, 8, 4}, - {9, 2, 5, 0}, {5, 7, 4, 0}, {1, 0, 11, 4}, {4, 10, 0, 2}, {1, 3, 12, 0}, {6, 9, 0, 1}, {5, 0, 9, 2}, {5, 9, 2, 0}, {13, 1, 0, 2}, {9, 3, 4, 0}, - {9, 4, 0, 3}, {3, 1, 12, 0}, {2, 4, 3, 7}, {1, 2, 13, 0}, {2, 2, 4, 8}, {6, 8, 0, 2}, {9, 2, 1, 4}, {9, 5, 1, 1}, {2, 0, 4, 10}, {5, 4, 0, 7}, - {0, 0, 6, 10}, {1, 2, 0, 13}, {4, 7, 2, 3}, {6, 5, 5, 0}, {3, 3, 1, 9}, {1, 6, 1, 8}, {12, 2, 1, 1}, {4, 4, 5, 3}, {1, 0, 6, 9}, {0, 6, 10, 0}, - {4, 8, 3, 1}, {4, 3, 2, 7}, {2, 1, 7, 6}, {1, 9, 1, 5}, {3, 1, 3, 9}, {8, 7, 1, 0}, {1, 2, 3, 10}, {14, 1, 1, 0}, {5, 4, 4, 3}, {3, 7, 0, 6}, - {7, 4, 1, 4}, {3, 7, 5, 1}, {1, 1, 0, 14}, {0, 10, 3, 3}, {0, 4, 3, 9}, {1, 7, 7, 1}, {2, 0, 10, 4}, {5, 8, 0, 3}, {6, 7, 3, 0}, {0, 8, 4, 4}, - {5, 7, 3, 1}, {7, 9, 0, 0}, {7, 6, 2, 1}, {0, 4, 5, 7}, {6, 3, 5, 2}, {1, 2, 1, 12}, {5, 2, 0, 9}, {8, 5, 0, 3}, {4, 6, 1, 5}, {1, 1, 7, 7}, - {10, 5, 1, 0}, {1, 2, 8, 5}, {1, 8, 2, 5}, {5, 1, 0, 10}, {6, 9, 1, 0}, {13, 0, 2, 1}, {8, 3, 5, 0}, {6, 3, 6, 1}, {2, 11, 3, 0}, {3, 7, 3, 3}, - {1, 5, 2, 8}, {7, 5, 2, 2}, {0, 6, 7, 3}, {13, 1, 1, 1}, {5, 3, 4, 4}, {7, 2, 7, 0}, {5, 8, 3, 0}, {3, 13, 0, 0}, {0, 7, 9, 0}, {8, 0, 3, 5}, - {1, 3, 7, 5}, {4, 0, 2, 10}, {12, 0, 1, 3}, {1, 7, 6, 2}, {3, 9, 0, 4}, {7, 2, 0, 7}, {0, 1, 7, 8}, {2, 1, 8, 5}, {0, 13, 1, 2}, {0, 8, 1, 7}, - {5, 0, 11, 0}, {5, 6, 2, 3}, {0, 3, 0, 13}, {2, 3, 4, 7}, {5, 6, 3, 2}, {4, 2, 10, 0}, {3, 3, 7, 3}, {7, 2, 5, 2}, {1, 1, 11, 3}, {12, 3, 0, 1}, - {5, 1, 1, 9}, {1, 15, 0, 0}, {9, 7, 0, 0}, {9, 1, 2, 4}, {0, 7, 3, 6}, {3, 0, 13, 0}, {3, 0, 11, 2}, {0, 6, 5, 5}, {8, 2, 2, 4}, {6, 10, 0, 0}, - {4, 8, 4, 0}, {0, 0, 3, 13}, {0, 4, 12, 0}, {7, 1, 6, 2}, {3, 5, 0, 8}, {8, 0, 6, 2}, {6, 2, 3, 5}, {2, 10, 0, 4}, {4, 11, 0, 1}, {6, 1, 5, 4}, - {5, 1, 3, 7}, {0, 11, 3, 2}, {4, 6, 0, 6}, {2, 6, 0, 8}, {3, 1, 7, 5}, {2, 14, 0, 0}, {2, 9, 2, 3}, {0, 3, 4, 9}, {11, 0, 1, 4}, {13, 0, 3, 0}, - {8, 3, 0, 5}, {0, 5, 3, 8}, {5, 11, 0, 0}, {0, 1, 4, 11}, {2, 1, 9, 4}, {3, 4, 4, 5}, {7, 1, 2, 6}, {12, 2, 2, 0}, {9, 4, 1, 2}, {6, 0, 2, 8}, - {4, 6, 2, 4}, {11, 2, 3, 0}, {3, 2, 2, 9}, {10, 3, 1, 2}, {1, 1, 2, 12}, {0, 5, 2, 9}, {0, 1, 11, 4}, {6, 2, 4, 4}, {2, 8, 2, 4}, {0, 9, 4, 3}, - {11, 0, 2, 3}, {0, 2, 11, 3}, {6, 0, 7, 3}, {0, 3, 6, 7}, {4, 5, 5, 2}, {1, 2, 6, 7}, {7, 5, 1, 3}, {9, 0, 2, 5}, {2, 6, 4, 4}, {4, 1, 9, 2}, - {4, 8, 2, 2}, {1, 12, 3, 0}, {0, 9, 6, 1}, {0, 10, 6, 0}, {3, 1, 5, 7}, {2, 13, 0, 1}, {2, 2, 1, 11}, {3, 6, 0, 7}, {5, 6, 5, 0}, {5, 5, 4, 2}, - {4, 0, 3, 9}, {3, 4, 1, 8}, {0, 11, 2, 3}, {2, 12, 1, 1}, {7, 1, 3, 5}, {7, 0, 9, 0}, {8, 0, 8, 0}, {1, 0, 2, 13}, {3, 3, 10, 0}, {2, 4, 4, 6}, - {2, 3, 8, 3}, {1, 10, 5, 0}, {7, 3, 0, 6}, {2, 9, 0, 5}, {1, 4, 6, 5}, {6, 6, 3, 1}, {5, 6, 0, 5}, {6, 3, 0, 7}, {3, 10, 2, 1}, {2, 5, 5, 4}, - {3, 8, 4, 1}, {1, 14, 0, 1}, {10, 3, 3, 0}, {3, 5, 7, 1}, {1, 1, 3, 11}, {2, 4, 0, 10}, {9, 3, 1, 3}, {5, 10, 1, 0}, {3, 0, 6, 7}, {3, 1, 9, 3}, - {11, 2, 1, 2}, {5, 3, 3, 5}, {0, 5, 1, 10}, {4, 1, 11, 0}, {10, 2, 0, 4}, {7, 6, 0, 3}, {2, 7, 0, 7}, {4, 2, 2, 8}, {6, 1, 7, 2}, {4, 9, 2, 1}, - {0, 0, 8, 8}, {3, 7, 2, 4}, {9, 6, 0, 1}, {0, 12, 4, 0}, {6, 7, 1, 2}, {0, 7, 2, 7}, {1, 0, 10, 5}, {0, 0, 14, 2}, {2, 7, 3, 4}, {5, 0, 0, 11}, - {7, 7, 1, 1}, {6, 2, 7, 1}, {4, 5, 3, 4}, {3, 5, 1, 7}, {5, 9, 1, 1}, {6, 2, 1, 7}, {3, 2, 0, 11}, {0, 11, 0, 5}, {3, 11, 2, 0}, {10, 1, 4, 1}, - {7, 0, 4, 5}, {11, 4, 0, 1}, {10, 3, 0, 3}, {0, 2, 4, 10}, {0, 15, 0, 1}, {0, 11, 5, 0}, {6, 7, 2, 1}, {1, 12, 2, 1}, {4, 1, 3, 8}, {1, 0, 13, 2}, - {1, 8, 5, 2}, {7, 0, 1, 8}, {3, 12, 1, 0}, {9, 2, 4, 1}, {1, 7, 4, 4}, {11, 4, 1, 0}, {4, 3, 8, 1}, {2, 8, 4, 2}, {1, 11, 3, 1}, {1, 1, 4, 10}, - {4, 10, 2, 0}, {8, 2, 5, 1}, {1, 0, 9, 6}, {5, 3, 2, 6}, {0, 9, 7, 0}, {10, 2, 2, 2}, {5, 8, 1, 2}, {8, 7, 0, 1}, {0, 3, 12, 1}, {1, 0, 1, 14}, - {4, 8, 0, 4}, {3, 8, 0, 5}, {4, 6, 5, 1}, {0, 9, 5, 2}, {10, 2, 3, 1}, {2, 3, 9, 2}, {1, 0, 12, 3}, {11, 3, 0, 2}, {4, 5, 2, 5}, {0, 2, 12, 2}, - {9, 1, 0, 6}, {9, 2, 0, 5}, {1, 2, 7, 6}, {4, 7, 4, 1}, {0, 12, 2, 2}, {0, 0, 0, 16}, {2, 8, 3, 3}, {3, 6, 2, 5}, {0, 6, 3, 7}, {7, 5, 4, 0}, - {3, 3, 3, 7}, {3, 3, 0, 10}, {5, 0, 6, 5}, {0, 0, 10, 6}, {8, 5, 3, 0}, {8, 1, 5, 2}, {6, 0, 9, 1}, {11, 1, 2, 2}, {2, 11, 2, 1}, {9, 5, 2, 0}, - {3, 0, 4, 9}, {2, 2, 12, 0}, {2, 6, 6, 2}, {2, 1, 13, 0}, {6, 0, 5, 5}, {2, 0, 14, 0}, {2, 11, 1, 2}, {4, 4, 7, 1}, {2, 0, 11, 3}, {3, 1, 1, 11}, - {2, 9, 4, 1}, {3, 7, 6, 0}, {14, 0, 2, 0}, {1, 10, 4, 1}, {8, 0, 7, 1}, {3, 6, 5, 2}, {0, 3, 11, 2}, {2, 5, 6, 3}, {11, 1, 3, 1}, {6, 5, 3, 2}, - {3, 8, 1, 4}, {0, 2, 7, 7}, {2, 10, 2, 2}, {1, 6, 2, 7}, {11, 0, 0, 5}, {12, 1, 1, 2}, {12, 1, 2, 1}, {0, 7, 1, 8}, {0, 3, 9, 4}, {0, 2, 1, 13}, - {7, 1, 4, 4}, {10, 1, 0, 5}, {4, 0, 8, 4}, {5, 2, 7, 2}, {0, 2, 0, 14}, {4, 3, 7, 2}, {2, 7, 1, 6}, {1, 2, 2, 11}, {6, 3, 3, 4}, {1, 14, 1, 0}, - {2, 4, 6, 4}, {5, 3, 6, 2}, {5, 3, 5, 3}, {8, 4, 1, 3}, {1, 3, 0, 12}, {3, 5, 2, 6}, {1, 8, 7, 0}, {0, 7, 4, 5}, {2, 1, 6, 7}, {4, 11, 1, 0}, - {7, 2, 4, 3}, {6, 1, 3, 6}, {4, 5, 4, 3}, {2, 11, 0, 3}, {1, 5, 7, 3}, {12, 0, 2, 2}, {5, 0, 4, 7}, {1, 13, 0, 2}, {7, 7, 2, 0}, {4, 1, 7, 4}, - {4, 5, 0, 7}, {5, 0, 5, 6}, {6, 5, 4, 1}, {2, 4, 2, 8}, {1, 10, 1, 4}, {6, 3, 1, 6}, {3, 3, 8, 2}, {0, 7, 7, 2}, {4, 4, 2, 6}, {1, 1, 8, 6}, - {1, 12, 0, 3}, {2, 1, 12, 1}, {1, 9, 2, 4}, {1, 11, 0, 4}, {2, 5, 2, 7}, {10, 0, 3, 3}, {4, 6, 3, 3}, {3, 7, 1, 5}, {1, 9, 0, 6}, {7, 1, 7, 1}, - {1, 6, 5, 4}, {9, 2, 3, 2}, {6, 2, 2, 6}, {2, 2, 2, 10}, {8, 3, 3, 2}, {0, 1, 8, 7}, {2, 0, 8, 6}, {0, 3, 1, 12}, {9, 4, 2, 1}, {9, 4, 3, 0}, - {6, 2, 6, 2}, {1, 8, 0, 7}, {5, 1, 10, 0}, {0, 5, 5, 6}, {8, 2, 4, 2}, {2, 3, 2, 9}, {6, 0, 3, 7}, {2, 2, 6, 6}, {2, 6, 2, 6}, {1, 13, 2, 0}, - {9, 3, 0, 4}, {7, 3, 5, 1}, {6, 5, 2, 3}, {5, 2, 6, 3}, {2, 0, 12, 2}, {5, 7, 1, 3}, {8, 1, 3, 4}, {3, 1, 10, 2}, {1, 0, 15, 0}, {0, 8, 0, 8}, - {5, 0, 7, 4}, {4, 4, 6, 2}, {0, 1, 0, 15}, {10, 0, 1, 5}, {7, 3, 4, 2}, {4, 9, 3, 0}, {2, 5, 7, 2}, {3, 4, 2, 7}, {8, 3, 2, 3}, {5, 1, 6, 4}, - {0, 10, 2, 4}, {6, 6, 1, 3}, {6, 0, 0, 10}, {4, 4, 3, 5}, {1, 3, 9, 3}, {7, 5, 3, 1}, {3, 0, 7, 6}, {1, 8, 6, 1}, {4, 3, 0, 9}, {3, 11, 0, 2}, - {6, 0, 6, 4}, {0, 1, 3, 12}, {0, 4, 2, 10}, {5, 5, 6, 0}, {4, 1, 4, 7}, {8, 1, 6, 1}, {5, 6, 4, 1}, {8, 4, 2, 2}, {4, 3, 1, 8}, {3, 0, 2, 11}, - {1, 11, 4, 0}, {0, 8, 3, 5}, {5, 1, 7, 3}, {7, 0, 8, 1}, {4, 3, 5, 4}, {4, 6, 4, 2}, {3, 2, 4, 7}, {1, 6, 3, 6}, {0, 7, 8, 1}, {3, 0, 1, 12}, - {9, 1, 4, 2}, {7, 4, 0, 5}, {1, 7, 0, 8}, {5, 4, 1, 6}, {9, 1, 5, 1}, {1, 1, 9, 5}, {4, 1, 1, 10}, {5, 3, 0, 8}, {2, 2, 5, 7}, {4, 0, 0, 12}, - {9, 0, 7, 0}, {3, 4, 0, 9}, {0, 2, 6, 8}, {8, 2, 0, 6}, {3, 2, 6, 5}, {4, 2, 6, 4}, {3, 6, 4, 3}, {2, 8, 6, 0}, {5, 0, 3, 8}, {0, 4, 0, 12}, - {0, 16, 0, 0}, {0, 9, 2, 5}, {4, 0, 11, 1}, {1, 6, 4, 5}, {0, 1, 6, 9}, {3, 4, 6, 3}, {3, 0, 10, 3}, {7, 0, 6, 3}, {1, 4, 9, 2}, {1, 5, 3, 7}, - {8, 5, 2, 1}, {0, 12, 0, 4}, {7, 2, 3, 4}, {0, 5, 6, 5}, {11, 1, 1, 3}, {6, 5, 0, 5}, {2, 1, 5, 8}, {1, 4, 11, 0}, {9, 1, 1, 5}, {0, 0, 13, 3}, - {5, 8, 2, 1}, {2, 12, 0, 2}, {3, 3, 6, 4}, {4, 1, 10, 1}, {4, 0, 5, 7}, {8, 1, 0, 7}, {5, 1, 9, 1}, {4, 3, 3, 6}, {0, 2, 2, 12}, {6, 3, 2, 5}, - {0, 0, 12, 4}, {1, 5, 1, 9}, {2, 6, 5, 3}, {3, 6, 3, 4}, {2, 12, 2, 0}, {1, 6, 8, 1}, {10, 1, 1, 4}, {1, 3, 4, 8}, {7, 4, 4, 1}, {1, 11, 1, 3}, - {1, 2, 10, 3}, {3, 9, 3, 1}, {8, 5, 1, 2}, {2, 10, 4, 0}, {4, 2, 0, 10}, {2, 7, 6, 1}, {8, 2, 3, 3}, {1, 5, 5, 5}, {3, 1, 0, 12}, {3, 10, 3, 0}, - {8, 0, 5, 3}, {0, 6, 8, 2}, {0, 3, 13, 0}, {0, 0, 16, 0}, {1, 9, 4, 2}, {4, 1, 8, 3}, {1, 6, 6, 3}, {0, 10, 5, 1}, {0, 1, 12, 3}, {4, 0, 6, 6}, - {3, 8, 3, 2}, {0, 5, 4, 7}, {1, 0, 14, 1}, {0, 4, 6, 6}, {3, 9, 1, 3}, {3, 5, 8, 0}, {3, 6, 6, 1}, {5, 4, 7, 0}, {3, 0, 12, 1}, {8, 6, 1, 1}, - {2, 9, 5, 0}, {6, 1, 1, 8}, {4, 1, 2, 9}, {3, 9, 4, 0}, {5, 2, 9, 0}, {0, 12, 3, 1}, {1, 4, 10, 1}, {4, 0, 7, 5}, {3, 1, 2, 10}, {5, 4, 2, 5}, - {5, 5, 5, 1}, {4, 2, 3, 7}, {1, 7, 5, 3}, {2, 8, 0, 6}, {8, 1, 2, 5}, {3, 8, 2, 3}, {6, 1, 2, 7}, {3, 9, 2, 2}, {9, 0, 0, 7}, {0, 8, 6, 2}, - {8, 4, 3, 1}, {0, 2, 8, 6}, {6, 5, 1, 4}, {2, 3, 5, 6}, {2, 10, 3, 1}, {0, 7, 0, 9}, {4, 2, 7, 3}, {2, 4, 8, 2}, {7, 1, 1, 7}, {2, 4, 7, 3}, - {2, 4, 10, 0}, {0, 1, 10, 5}, {4, 7, 1, 4}, {0, 10, 4, 2}, {9, 0, 1, 6}, {1, 9, 6, 0}, {3, 3, 4, 6}, {4, 5, 7, 0}, {5, 5, 2, 4}, {2, 8, 1, 5}, - {2, 3, 6, 5}, {0, 1, 1, 14}, {3, 2, 3, 8}, {10, 1, 2, 3}, {9, 1, 6, 0}, {3, 4, 3, 6}, {2, 2, 0, 12}, {0, 0, 9, 7}, {4, 0, 9, 3}, {7, 0, 5, 4}, - {4, 5, 6, 1}, {2, 5, 1, 8}, {2, 5, 9, 0}, {3, 5, 4, 4}, {1, 3, 11, 1}, {7, 1, 5, 3}, {3, 2, 7, 4}, {1, 4, 2, 9}, {1, 11, 2, 2}, {2, 2, 3, 9}, - {5, 0, 10, 1}, {3, 2, 11, 0}, {1, 10, 3, 2}, {8, 3, 4, 1}, {3, 6, 7, 0}, {0, 7, 5, 4}, {1, 3, 3, 9}, {2, 2, 10, 2}, {1, 9, 5, 1}, {0, 5, 0, 11}, - {3, 0, 3, 10}, {0, 4, 8, 4}, {2, 7, 7, 0}, {2, 0, 2, 12}, {1, 2, 11, 2}, {6, 3, 7, 0}, {0, 6, 2, 8}, {0, 10, 1, 5}, {0, 9, 0, 7}, {6, 4, 4, 2}, - {6, 0, 1, 9}, {1, 5, 10, 0}, {5, 4, 6, 1}, {5, 5, 3, 3}, {0, 0, 4, 12}, {0, 3, 2, 11}, {1, 4, 1, 10}, {3, 0, 9, 4}, {5, 5, 0, 6}, {1, 7, 8, 0}, - {2, 0, 3, 11}, {6, 4, 1, 5}, {10, 0, 6, 0}, {0, 6, 0, 10}, {0, 4, 11, 1}, {3, 1, 6, 6}, {2, 5, 8, 1}, {0, 2, 10, 4}, {3, 1, 11, 1}, {6, 6, 2, 2}, - {1, 1, 10, 4}, {2, 1, 2, 11}, {6, 1, 8, 1}, {0, 2, 13, 1}, {0, 7, 6, 3}, {6, 8, 2, 0}, {3, 0, 0, 13}, {4, 4, 4, 4}, {6, 2, 0, 8}, {7, 3, 1, 5}, - {0, 11, 4, 1}, {6, 7, 0, 3}, {2, 6, 3, 5}, {5, 2, 1, 8}, {7, 1, 8, 0}, {5, 5, 1, 5}, {1, 8, 3, 4}, {8, 2, 6, 0}, {6, 0, 10, 0}, {5, 6, 1, 4}, - {1, 4, 4, 7}, {2, 7, 4, 3}, {1, 4, 8, 3}, {5, 4, 3, 4}, {1, 10, 2, 3}, {2, 9, 1, 4}, {2, 2, 11, 1}, {2, 5, 0, 9}, {0, 0, 1, 15}, {0, 0, 11, 5}, - {0, 4, 7, 5}, {0, 1, 15, 0}, {2, 1, 0, 13}, {0, 3, 10, 3}, {8, 0, 2, 6}, {3, 3, 2, 8}, {3, 5, 5, 3}, {1, 7, 1, 7}, {1, 3, 2, 10}, {4, 0, 4, 8}, - {2, 0, 9, 5}, {1, 1, 1, 13}, {2, 2, 7, 5}, {2, 1, 10, 3}, {4, 2, 1, 9}, {4, 3, 6, 3}, {1, 3, 5, 7}, {2, 5, 3, 6}, {1, 0, 8, 7}, {5, 0, 2, 9}, - {2, 8, 5, 1}, {1, 6, 0, 9}, {0, 0, 5, 11}, {0, 4, 9, 3}, {2, 0, 7, 7}, {1, 7, 2, 6}, {2, 1, 1, 12}, {2, 4, 9, 1}, {0, 5, 7, 4}, {6, 0, 4, 6}, - {3, 2, 10, 1}, {0, 6, 1, 9}, {2, 6, 1, 7}, {0, 5, 8, 3}, {4, 1, 0, 11}, {1, 2, 4, 9}, {4, 1, 5, 6}, {6, 1, 0, 9}, {1, 4, 3, 8}, {4, 5, 1, 6}, - {1, 0, 5, 10}, {5, 3, 1, 7}, {0, 9, 1, 6}, {2, 0, 1, 13}, {2, 0, 6, 8}, {8, 1, 1, 6}, {1, 5, 9, 1}, {0, 6, 9, 1}, {0, 3, 5, 8}, {0, 2, 9, 5}, - {5, 2, 8, 1}, {1, 1, 14, 0}, {3, 2, 9, 2}, {5, 0, 8, 3}, {0, 5, 10, 1}, {5, 2, 3, 6}, {2, 6, 7, 1}, {2, 3, 0, 11}, {0, 1, 9, 6}, {1, 0, 4, 11}, - {3, 0, 5, 8}, {0, 0, 15, 1}, {2, 4, 5, 5}, {0, 3, 7, 6}, {2, 0, 0, 14}, {1, 1, 12, 2}, {2, 6, 8, 0}, {3, 1, 8, 4}, {0, 1, 5, 10}}; - -// All total orderings for 16 pixels [0,2] 2-bit selectors. -// BC1 selector order: 0, 1, 2 -// Note this is different from g_unique_total_orders4[], which reorders the selectors into linear order. -const uint8_t g_unique_total_orders3[NUM_UNIQUE_TOTAL_ORDERINGS3][3] = { - {6, 0, 10}, {3, 6, 7}, {3, 0, 13}, {13, 3, 0}, {12, 4, 0}, {9, 1, 6}, {2, 13, 1}, {4, 7, 5}, {7, 5, 4}, {9, 6, 1}, {7, 4, 5}, {8, 6, 2}, {16, 0, 0}, - {10, 6, 0}, {2, 7, 7}, {0, 0, 16}, {0, 3, 13}, {1, 15, 0}, {0, 2, 14}, {1, 4, 11}, {15, 1, 0}, {1, 12, 3}, {9, 2, 5}, {14, 1, 1}, {8, 2, 6}, {3, 3, 10}, - {4, 2, 10}, {14, 0, 2}, {0, 14, 2}, {1, 7, 8}, {6, 6, 4}, {11, 5, 0}, {6, 4, 6}, {11, 3, 2}, {4, 3, 9}, {7, 1, 8}, {10, 4, 2}, {12, 1, 3}, {11, 0, 5}, - {9, 3, 4}, {1, 0, 15}, {9, 0, 7}, {2, 6, 8}, {12, 2, 2}, {6, 2, 8}, {6, 8, 2}, {15, 0, 1}, {4, 8, 4}, {0, 4, 12}, {8, 5, 3}, {5, 9, 2}, {11, 2, 3}, - {12, 3, 1}, {6, 3, 7}, {1, 1, 14}, {2, 9, 5}, {1, 8, 7}, {4, 10, 2}, {7, 7, 2}, {13, 1, 2}, {0, 15, 1}, {3, 2, 11}, {7, 0, 9}, {4, 4, 8}, {3, 8, 5}, - {0, 5, 11}, {13, 2, 1}, {1, 10, 5}, {4, 11, 1}, {3, 10, 3}, {5, 10, 1}, {10, 2, 4}, {0, 6, 10}, {14, 2, 0}, {11, 4, 1}, {3, 12, 1}, {1, 13, 2}, {1, 5, 10}, - {5, 11, 0}, {12, 0, 4}, {8, 1, 7}, {6, 10, 0}, {3, 13, 0}, {7, 2, 7}, {0, 7, 9}, {5, 8, 3}, {0, 12, 4}, {11, 1, 4}, {13, 0, 3}, {0, 16, 0}, {5, 7, 4}, - {10, 3, 3}, {10, 0, 6}, {0, 13, 3}, {4, 6, 6}, {2, 8, 6}, {2, 5, 9}, {7, 8, 1}, {2, 1, 13}, {2, 0, 14}, {7, 3, 6}, {5, 1, 10}, {3, 11, 2}, {5, 4, 7}, - {8, 3, 5}, {10, 5, 1}, {6, 9, 1}, {1, 3, 12}, {4, 5, 7}, {2, 2, 12}, {4, 1, 11}, {0, 8, 8}, {4, 12, 0}, {6, 5, 5}, {8, 7, 1}, {5, 5, 6}, {3, 7, 6}, - {7, 9, 0}, {4, 9, 3}, {0, 10, 6}, {8, 0, 8}, {5, 3, 8}, {10, 1, 5}, {6, 1, 9}, {7, 6, 3}, {9, 5, 2}, {0, 1, 15}, {9, 7, 0}, {2, 14, 0}, {3, 4, 9}, - {8, 4, 4}, {9, 4, 3}, {0, 9, 7}, {1, 9, 6}, {3, 9, 4}, {5, 2, 9}, {2, 3, 11}, {5, 6, 5}, {1, 14, 1}, {6, 7, 3}, {2, 4, 10}, {2, 12, 2}, {8, 8, 0}, - {2, 10, 4}, {4, 0, 12}, {0, 11, 5}, {2, 11, 3}, {1, 11, 4}, {3, 5, 8}, {5, 0, 11}, {3, 1, 12}, {1, 2, 13}, {1, 6, 9}}; - -// For each total ordering, this table indicates which other total orderings are likely to improve quality using a least squares pass. Each array is sorted by -// usefulness. -const uint16_t g_best_total_orderings4[NUM_UNIQUE_TOTAL_ORDERINGS4][MAX_TOTAL_ORDERINGS4] = { -#if RGBCX_USE_SMALLER_TABLES - {202, 120, 13, 318, 15, 23, 403, 450, 5, 51, 260, 128, 77, 21, 33, 494, 515, 523, 4, 141, 269, 1, 2, 700, 137, 49, 48, 102, 7, 64, 753, 82}, - {13, 141, 23, 217, 115, 51, 77, 2, 64, 21, 0, 4, 5, 317, 137, 269, 202, 33, 318, 7, 291, 352, 9, 10, 3, 180, 32, 6, 365, 102, 341, 349}, - {29, 58, 262, 1, 52, 74, 6, 171, 5, 287, 151, 334, 27, 500, 75, 26, 331, 223, 53, 635, 220, 19, 50, 45, 46, 17, 14, 396, 163, 409, 324, 70}, - {40, 51, 33, 453, 14, 23, 62, 56, 12, 196, 730, 475, 153, 99, 403, 775, 117, 130, 585, 34, 4, 17, 162, 11, 139, 57, 102, 38, 108, 47, 123, 440}, - {33, 23, 51, 13, 102, 64, 202, 128, 12, 40, 15, 196, 153, 10, 1, 2, 77, 99, 141, 0, 515, 5, 117, 3, 120, 403, 700, 165, 22, 14, 269, 453}, - {13, 23, 51, 4, 77, 141, 202, 33, 115, 64, 32, 128, 0, 11, 177, 40, 15, 102, 2, 217, 7, 137, 269, 21, 90, 59, 515, 1, 180, 403, 22, 6}, - {26, 235, 19, 47, 648, 624, 78, 145, 27, 112, 122, 64, 444, 6, 630, 453, 25, 42, 65, 130, 711, 85, 390, 113, 416, 108, 665, 29, 730, 138, 644, 95}, - {64, 141, 352, 751, 217, 247, 237, 437, 177, 269, 86, 954, 947, 875, 32, 318, 95, 77, 304, 92, 597, 180, 232, 291, 128, 864, 349, 588, 372, 202, 312, 1}, - {642, 898, 180, 638, 901, 341, 82, 197, 10, 951, 15, 515, 165, 762, 700, 253, 811, 753, 752, 365, 143, 479, 244, 569, 8, 110, 351, 873, 55, 31, 499, 116}, - {221, 23, 51, 125, 438, 254, 13, 21, 39, 49, 308, 656, 0, 115, 530, 159, 158, 401, 30, 166, 912, 386, 165, 688, 518, 9, 105, 627, 424, 22, 421, 33}, - {143, 31, 1, 44, 197, 8, 180, 125, 116, 55, 13, 498, 23, 341, 638, 242, 93, 15, 2, 141, 0, 901, 752, 115, 36, 206, 165, 479, 338, 365, 515, 762}, - {12, 23, 51, 13, 14, 15, 37, 99, 515, 38, 700, 117, 2, 196, 134, 153, 753, 64, 54, 33, 128, 120, 21, 0, 328, 5, 139, 82, 453, 719, 457, 1}, - {13, 15, 23, 515, 961, 700, 457, 753, 51, 115, 4, 165, 197, 2, 38, 569, 1, 474, 0, 37, 99, 719, 5, 12, 629, 14, 11, 3, 33, 77, 64, 10}, - {15, 515, 700, 753, 1, 0, 2, 4, 3, 23, 134, 12, 961, 5, 10, 197, 11, 33, 82, 120, 457, 51, 165, 7, 6, 341, 217, 21, 77, 9, 40, 180}, - {13, 51, 23, 457, 719, 961, 730, 401, 165, 453, 0, 117, 386, 15, 134, 1, 758, 153, 12, 54, 515, 99, 11, 2, 700, 5, 753, 4, 308, 33, 6, 899}, - {134, 898, 82, 117, 13, 33, 77, 102, 23, 260, 341, 351, 120, 901, 197, 153, 961, 111, 196, 110, 180, 457, 854, 10, 450, 8, 165, 40, 4, 115, 0, 365}, - {60, 18, 126, 167, 35, 16, 191, 71, 24, 92, 121, 271, 68, 107, 212, 146, 118, 150, 199, 7, 21, 1, 9, 575, 727, 5, 566, 48, 0, 132, 108, 273}, - {62, 136, 129, 123, 128, 41, 162, 17, 249, 211, 214, 789, 618, 710, 38, 678, 248, 507, 57, 64, 152, 269, 119, 3, 177, 183, 597, 106, 4, 179, 216, 90}, - {403, 523, 51, 475, 494, 453, 817, 899, 202, 23, 450, 13, 421, 120, 102, 730, 33, 128, 4, 1, 805, 5, 7, 153, 757, 260, 318, 196, 77, 457, 326, 65}, - {4, 59, 3, 62, 12, 33, 56, 193, 27, 21, 102, 17, 40, 77, 76, 84, 32, 0, 6, 123, 119, 177, 128, 11, 18, 611, 605, 25, 13, 51, 73, 210}, - {43, 20, 319, 422, 414, 945, 0, 7, 819, 61, 5, 376, 325, 173, 804, 904, 470, 693, 97, 707, 14, 49, 22, 104, 147, 107, 95, 32, 426, 1, 330, 577}, - {13, 23, 51, 2, 0, 115, 4, 141, 217, 33, 10, 77, 1, 15, 64, 180, 3, 515, 7, 6, 22, 102, 11, 5, 40, 9, 165, 700, 202, 197, 317, 341}, - {28, 49, 0, 105, 1, 24, 65, 159, 35, 55, 95, 239, 16, 2, 109, 7, 9, 14, 170, 320, 347, 168, 424, 158, 10, 301, 124, 5, 67, 21, 64, 36}, - {15, 515, 700, 753, 0, 1, 13, 2, 117, 4, 12, 10, 5, 165, 457, 3, 9, 134, 11, 7, 6, 51, 77, 64, 961, 82, 33, 197, 14, 341, 120, 141}, - {7, 71, 14, 149, 97, 18, 60, 16, 150, 92, 398, 189, 140, 124, 24, 273, 35, 2, 69, 302, 154, 68, 0, 336, 517, 43, 66, 28, 118, 251, 230, 1}, - {4, 102, 33, 77, 40, 59, 11, 624, 210, 12, 128, 342, 5, 503, 91, 139, 64, 32, 25, 494, 202, 678, 416, 0, 403, 275, 21, 450, 196, 318, 523, 177}, - {25, 19, 42, 6, 122, 813, 256, 235, 85, 26, 436, 53, 297, 573, 680, 390, 445, 63, 27, 416, 80, 233, 65, 73, 389, 283, 45, 605, 194, 17, 250, 343}, - {402, 102, 202, 128, 33, 300, 403, 23, 12, 77, 40, 21, 342, 117, 483, 99, 25, 494, 6, 4, 63, 32, 84, 569, 139, 757, 475, 318, 19, 26, 196, 134}, - {158, 9, 0, 109, 39, 49, 65, 22, 35, 168, 55, 24, 68, 124, 159, 16, 185, 344, 333, 154, 254, 272, 175, 289, 1, 577, 95, 28, 105, 810, 30, 169}, - {197, 180, 115, 237, 498, 165, 2, 5, 287, 546, 400, 3, 61, 34, 509, 13, 297, 80, 341, 52, 45, 186, 58, 881, 23, 873, 468, 176, 64, 17, 311, 250}, - {120, 968, 373, 260, 704, 110, 450, 202, 137, 318, 77, 95, 269, 326, 217, 717, 661, 652, 851, 349, 93, 1, 518, 98, 827, 291, 21, 177, 82, 33, 848, 719}, - {44, 116, 144, 268, 434, 489, 367, 384, 98, 127, 918, 93, 948, 31, 206, 940, 855, 0, 203, 137, 9, 22, 617, 141, 332, 105, 393, 492, 959, 282, 299, 131}, - {13, 77, 23, 33, 51, 0, 64, 141, 102, 4, 2, 115, 1, 6, 202, 15, 10, 128, 269, 7, 177, 180, 3, 40, 22, 11, 515, 217, 117, 318, 700, 137}, - {15, 515, 700, 753, 4, 11, 141, 40, 165, 23, 64, 180, 13, 202, 32, 3, 51, 125, 5, 197, 21, 128, 0, 93, 77, 1, 120, 82, 269, 117, 110, 59}, - {176, 231, 585, 62, 34, 14, 412, 161, 56, 236, 527, 57, 17, 3, 51, 202, 4, 23, 369, 283, 128, 13, 472, 440, 84, 361, 136, 457, 381, 130, 719, 53}, - {9, 0, 180, 217, 237, 101, 141, 352, 88, 100, 230, 64, 175, 317, 115, 498, 68, 39, 30, 1, 702, 83, 213, 36, 365, 208, 752, 13, 252, 321, 952, 546}, - {28, 9, 22, 1, 49, 0, 109, 39, 83, 95, 86, 30, 13, 105, 128, 55, 141, 168, 158, 67, 31, 159, 208, 12, 96, 5, 185, 2, 160, 64, 137, 23}, - {72, 4, 38, 12, 51, 89, 477, 11, 57, 76, 401, 308, 23, 474, 99, 148, 413, 179, 59, 13, 431, 152, 54, 569, 17, 3, 205, 629, 197, 421, 405, 15}, - {457, 13, 23, 961, 15, 51, 515, 700, 165, 12, 753, 629, 11, 1, 719, 117, 0, 3, 2, 37, 569, 197, 40, 328, 33, 5, 153, 134, 99, 64, 38, 196}, - {254, 100, 310, 9, 30, 1, 39, 625, 166, 265, 190, 0, 272, 557, 131, 731, 31, 98, 578, 688, 404, 93, 101, 88, 49, 21, 127, 264, 44, 36, 252, 478}, - {51, 23, 12, 13, 15, 128, 99, 120, 10, 202, 515, 153, 64, 82, 700, 33, 165, 2, 5, 117, 403, 1, 141, 0, 3, 196, 37, 453, 753, 197, 260, 93}, - {38, 99, 542, 139, 453, 117, 196, 23, 457, 13, 328, 111, 37, 134, 961, 11, 12, 51, 40, 775, 587, 401, 474, 54, 153, 477, 41, 629, 33, 475, 14, 277}, - {6, 85, 25, 233, 343, 91, 26, 63, 138, 29, 19, 65, 283, 4, 81, 235, 42, 122, 605, 64, 648, 256, 174, 370, 74, 389, 718, 59, 45, 194, 445, 416}, - {49, 5, 97, 20, 197, 21, 18, 193, 0, 64, 408, 729, 173, 350, 43, 422, 165, 7, 14, 104, 61, 32, 509, 713, 523, 102, 120, 95, 125, 397, 35, 232}, - {144, 116, 268, 434, 384, 489, 367, 206, 93, 855, 940, 44, 98, 332, 617, 127, 959, 911, 137, 282, 203, 31, 22, 219, 141, 9, 131, 276, 417, 0, 1, 120}, - {17, 106, 64, 62, 32, 255, 136, 292, 476, 162, 129, 241, 123, 141, 41, 237, 720, 214, 209, 352, 519, 211, 186, 148, 752, 247, 507, 90, 21, 77, 197, 119}, - {2, 29, 52, 50, 5, 58, 14, 6, 27, 1, 366, 357, 45, 53, 17, 19, 171, 151, 26, 181, 133, 38, 218, 764, 287, 583, 61, 113, 3, 487, 600, 281}, - {130, 59, 196, 412, 381, 730, 711, 236, 77, 210, 202, 402, 453, 99, 401, 108, 361, 803, 291, 283, 153, 4, 57, 51, 128, 183, 14, 719, 503, 117, 23, 11}, - {13, 23, 51, 141, 77, 4, 33, 64, 115, 0, 217, 10, 180, 202, 2, 102, 11, 9, 15, 165, 40, 21, 128, 352, 22, 7, 197, 3, 317, 515, 269, 1}, - {23, 13, 202, 51, 120, 15, 21, 5, 141, 1, 128, 269, 137, 515, 64, 102, 125, 48, 98, 33, 260, 523, 318, 93, 700, 165, 450, 77, 2, 12, 403, 82}, - {1, 2, 14, 46, 29, 67, 38, 52, 5, 171, 58, 24, 103, 69, 96, 70, 83, 181, 54, 75, 163, 223, 16, 45, 112, 309, 155, 0, 186, 35, 18, 108}, - {15, 515, 700, 753, 13, 0, 1, 2, 153, 5, 23, 10, 117, 3, 9, 7, 134, 165, 12, 6, 341, 33, 4, 14, 77, 457, 115, 21, 719, 180, 217, 82}, - {197, 165, 509, 13, 391, 180, 308, 115, 23, 546, 5, 498, 2, 29, 3, 401, 901, 61, 34, 80, 14, 457, 250, 569, 237, 873, 38, 297, 45, 15, 468, 386}, - {19, 73, 27, 250, 200, 714, 444, 472, 26, 53, 34, 17, 813, 322, 283, 390, 128, 297, 78, 123, 432, 14, 436, 136, 106, 690, 57, 122, 389, 80, 503, 3}, - {3, 17, 21, 45, 62, 32, 38, 12, 155, 14, 2, 328, 5, 99, 401, 536, 828, 13, 227, 488, 106, 51, 719, 119, 540, 76, 165, 221, 115, 629, 209, 41}, - {115, 341, 873, 197, 365, 13, 901, 180, 569, 752, 317, 1, 10, 498, 143, 634, 261, 0, 509, 15, 943, 237, 44, 31, 116, 601, 165, 127, 282, 23, 141, 64}, - {453, 51, 23, 403, 33, 421, 475, 102, 15, 153, 196, 515, 13, 700, 117, 523, 12, 40, 753, 21, 4, 134, 0, 494, 670, 899, 22, 801, 730, 10, 11, 401}, - {23, 13, 51, 33, 12, 117, 153, 134, 453, 196, 15, 99, 515, 40, 14, 700, 128, 102, 11, 753, 77, 64, 403, 202, 0, 401, 475, 37, 65, 2, 3, 38}, - {2, 7, 5, 14, 70, 1, 29, 61, 52, 45, 6, 112, 66, 16, 21, 32, 592, 46, 38, 135, 87, 58, 186, 315, 290, 128, 113, 0, 64, 48, 227, 23}, - {33, 23, 102, 51, 128, 13, 64, 202, 141, 1, 77, 10, 153, 40, 196, 117, 2, 3, 0, 5, 15, 269, 403, 12, 137, 134, 318, 165, 120, 6, 453, 99}, - {16, 92, 7, 20, 43, 35, 126, 71, 60, 14, 107, 18, 68, 97, 0, 121, 279, 149, 24, 246, 191, 48, 118, 575, 55, 140, 362, 783, 230, 150, 375, 566}, - {13, 23, 4, 33, 77, 64, 51, 102, 141, 128, 32, 10, 0, 202, 40, 115, 59, 22, 90, 11, 177, 21, 291, 6, 7, 318, 180, 117, 137, 2, 95, 165}, - {507, 162, 129, 41, 4, 211, 62, 38, 123, 59, 57, 248, 183, 130, 99, 11, 3, 361, 202, 17, 402, 556, 266, 305, 803, 210, 128, 184, 152, 136, 313, 117}, - {643, 123, 193, 650, 802, 18, 25, 389, 718, 256, 65, 289, 84, 91, 619, 511, 415, 90, 235, 63, 57, 510, 324, 216, 862, 102, 6, 183, 108, 397, 217, 736}, - {13, 23, 15, 1, 515, 51, 0, 2, 700, 5, 753, 165, 141, 115, 12, 3, 4, 180, 21, 197, 457, 7, 6, 10, 120, 9, 33, 202, 77, 32, 8, 11}, - {23, 51, 13, 453, 64, 403, 12, 21, 5, 202, 128, 475, 165, 141, 523, 95, 125, 115, 3, 1, 4, 730, 120, 32, 2, 494, 180, 719, 457, 197, 450, 401}, - {204, 74, 135, 66, 6, 174, 192, 7, 138, 172, 85, 353, 348, 580, 280, 97, 95, 500, 29, 64, 426, 32, 87, 889, 65, 81, 25, 2, 52, 43, 568, 673}, - {35, 0, 68, 69, 24, 9, 1, 16, 65, 103, 149, 133, 18, 114, 28, 50, 83, 2, 189, 7, 46, 14, 101, 336, 175, 124, 251, 55, 71, 218, 38, 238}, - {16, 101, 0, 118, 9, 18, 24, 68, 35, 154, 71, 124, 60, 212, 191, 520, 55, 806, 694, 167, 28, 39, 364, 375, 1, 346, 252, 65, 604, 302, 22, 21}, - {0, 9, 16, 35, 1, 24, 68, 18, 65, 21, 103, 67, 13, 149, 28, 189, 71, 23, 101, 238, 114, 7, 335, 133, 486, 141, 22, 212, 48, 50, 30, 118}, - {13, 202, 23, 77, 33, 51, 128, 5, 21, 141, 115, 32, 102, 64, 4, 0, 318, 269, 10, 15, 291, 2, 494, 177, 11, 217, 3, 515, 22, 137, 6, 700}, - {16, 92, 60, 35, 7, 18, 24, 68, 150, 149, 14, 71, 0, 375, 97, 126, 118, 107, 230, 191, 246, 273, 140, 55, 175, 653, 9, 575, 2, 28, 566, 517}, - {76, 90, 21, 179, 316, 148, 205, 32, 464, 288, 184, 257, 245, 1, 89, 2, 460, 57, 152, 45, 38, 358, 645, 5, 12, 449, 350, 48, 37, 17, 4, 14}, - {19, 27, 26, 813, 80, 297, 17, 495, 436, 53, 73, 200, 4, 378, 250, 59, 106, 25, 45, 128, 361, 42, 113, 469, 122, 390, 77, 40, 736, 6, 11, 136}, - {6, 26, 235, 138, 19, 145, 112, 70, 331, 262, 25, 42, 52, 624, 27, 453, 122, 47, 500, 78, 648, 85, 29, 2, 630, 632, 409, 113, 50, 226, 108, 75}, - {7, 16, 14, 24, 92, 35, 18, 2, 46, 9, 60, 140, 0, 87, 50, 5, 54, 13, 12, 38, 171, 23, 126, 21, 58, 64, 1, 70, 128, 71, 220, 163}, - {90, 205, 257, 184, 32, 179, 460, 5, 245, 45, 2, 288, 769, 524, 57, 21, 152, 229, 17, 1, 497, 4, 292, 59, 619, 452, 432, 76, 476, 11, 266, 14}, - {15, 515, 700, 753, 4, 5, 11, 141, 13, 1, 33, 3, 0, 128, 202, 23, 180, 21, 2, 64, 269, 32, 117, 134, 120, 40, 102, 318, 153, 17, 137, 352}, - {47, 130, 711, 108, 453, 412, 730, 196, 390, 283, 78, 27, 51, 183, 381, 236, 128, 200, 719, 14, 153, 472, 503, 34, 59, 250, 3, 4, 57, 803, 123, 432}, - {12, 277, 51, 474, 111, 153, 23, 99, 13, 37, 961, 94, 629, 542, 569, 431, 79, 139, 38, 134, 117, 453, 33, 188, 196, 40, 115, 15, 11, 157, 401, 515}, - {17, 495, 469, 106, 26, 378, 80, 27, 161, 483, 19, 742, 527, 436, 383, 862, 73, 136, 53, 814, 297, 6, 119, 84, 62, 56, 25, 3, 209, 611, 4, 128}, - {81, 681, 636, 91, 0, 750, 370, 104, 718, 138, 18, 693, 173, 784, 29, 397, 348, 74, 192, 673, 174, 65, 6, 207, 64, 280, 306, 52, 671, 32, 355, 319}, - {15, 515, 700, 753, 33, 77, 4, 102, 115, 117, 40, 13, 1, 153, 134, 11, 5, 217, 23, 196, 2, 21, 3, 317, 32, 365, 0, 341, 291, 59, 12, 51}, - {0, 9, 28, 35, 68, 1, 65, 67, 101, 39, 69, 175, 16, 238, 13, 22, 96, 124, 18, 24, 251, 30, 55, 12, 23, 2, 50, 141, 114, 5, 154, 103}, - {23, 33, 77, 13, 117, 40, 11, 102, 64, 4, 51, 403, 153, 453, 10, 0, 196, 134, 128, 65, 12, 291, 86, 99, 95, 59, 15, 141, 202, 180, 137, 719}, - {214, 90, 289, 6, 874, 64, 25, 65, 235, 42, 751, 249, 256, 312, 194, 85, 746, 875, 174, 32, 525, 288, 519, 835, 247, 348, 233, 544, 217, 524, 437, 352}, - {1, 22, 2, 0, 36, 67, 28, 5, 49, 95, 12, 50, 168, 83, 105, 55, 7, 9, 14, 194, 103, 23, 114, 21, 584, 46, 10, 13, 38, 69, 208, 159}, - {269, 141, 13, 202, 33, 180, 318, 77, 291, 137, 102, 352, 128, 23, 349, 51, 31, 217, 372, 317, 125, 197, 44, 21, 11, 5, 901, 1, 18, 0, 4, 494}, - {435, 144, 274, 88, 203, 418, 30, 1, 190, 410, 96, 778, 100, 530, 521, 326, 466, 795, 686, 166, 960, 321, 382, 264, 367, 822, 131, 31, 692, 9, 213, 93}, - {76, 72, 90, 21, 37, 179, 12, 205, 32, 428, 148, 38, 308, 405, 4, 413, 57, 184, 749, 245, 316, 221, 54, 645, 288, 1, 152, 155, 464, 257, 2, 14}, - {77, 33, 64, 102, 13, 141, 23, 2, 40, 1, 51, 10, 0, 115, 6, 180, 202, 128, 4, 3, 177, 269, 15, 7, 22, 165, 291, 14, 217, 318, 137, 11}, - {397, 81, 4, 32, 65, 788, 693, 804, 681, 11, 249, 21, 91, 64, 690, 494, 3, 0, 422, 56, 348, 725, 194, 123, 23, 59, 523, 319, 61, 510, 95, 90}, - {60, 126, 16, 7, 92, 121, 314, 246, 35, 107, 150, 132, 14, 146, 24, 18, 199, 298, 232, 71, 359, 140, 672, 97, 392, 649, 5, 423, 95, 21, 22, 388}, - {15, 515, 141, 217, 115, 700, 13, 23, 120, 317, 753, 180, 33, 260, 110, 137, 341, 51, 1, 365, 4, 77, 64, 202, 0, 40, 36, 352, 197, 269, 10, 21}, - {111, 134, 117, 474, 23, 13, 961, 12, 569, 431, 37, 15, 51, 115, 515, 700, 277, 99, 753, 38, 197, 405, 457, 4, 72, 94, 629, 45, 11, 89, 54, 148}, - {23, 13, 51, 5, 1, 15, 2, 21, 12, 202, 141, 0, 515, 165, 120, 32, 4, 64, 700, 3, 115, 197, 269, 125, 753, 7, 9, 128, 6, 180, 453, 403}, - {13, 141, 4, 23, 5, 2, 115, 217, 202, 51, 180, 137, 269, 352, 77, 1, 317, 3, 21, 318, 0, 15, 9, 64, 10, 197, 11, 341, 33, 515, 752, 7}, - {165, 125, 197, 13, 391, 21, 23, 558, 48, 380, 97, 120, 298, 33, 14, 426, 66, 115, 32, 386, 900, 180, 6, 98, 357, 237, 326, 509, 51, 278, 221, 457}, - {120, 82, 15, 260, 515, 1, 351, 77, 450, 700, 13, 21, 141, 23, 753, 202, 217, 93, 110, 33, 51, 854, 5, 128, 326, 102, 137, 180, 817, 48, 269, 352}, - {23, 13, 15, 51, 515, 700, 961, 753, 0, 457, 1, 2, 4, 115, 10, 453, 569, 5, 33, 165, 11, 719, 14, 40, 64, 197, 3, 21, 474, 629, 38, 401}, - {264, 166, 39, 30, 9, 100, 435, 254, 93, 921, 190, 363, 1, 625, 411, 382, 897, 656, 203, 478, 404, 812, 438, 110, 473, 88, 18, 691, 156, 141, 274, 272}, - {9, 0, 252, 100, 166, 39, 101, 265, 364, 68, 88, 329, 520, 18, 419, 676, 118, 167, 404, 604, 16, 1, 21, 30, 212, 158, 553, 49, 382, 274, 48, 13}, - {15, 515, 700, 753, 4, 11, 141, 5, 3, 13, 202, 1, 180, 21, 2, 165, 269, 23, 40, 64, 0, 318, 12, 32, 128, 51, 77, 117, 523, 197, 120, 457}, - {24, 1, 2, 69, 35, 16, 67, 18, 14, 50, 0, 46, 68, 9, 38, 7, 133, 71, 83, 149, 28, 108, 189, 218, 65, 114, 238, 29, 75, 54, 5, 96}, - {90, 289, 214, 64, 874, 13, 77, 712, 66, 751, 4, 23, 51, 192, 32, 0, 202, 194, 312, 177, 33, 65, 234, 104, 875, 288, 59, 5, 835, 416, 102, 95}, - {0, 9, 49, 127, 98, 31, 301, 28, 371, 159, 1, 395, 512, 737, 158, 761, 916, 623, 16, 44, 242, 39, 170, 18, 293, 105, 24, 272, 101, 22, 23, 385}, - {17, 62, 136, 214, 123, 129, 32, 292, 119, 209, 710, 106, 141, 162, 128, 64, 45, 4, 77, 249, 11, 618, 211, 3, 207, 130, 519, 183, 38, 177, 21, 269}, - {5, 107, 581, 356, 279, 32, 441, 362, 493, 660, 13, 298, 0, 534, 49, 147, 21, 22, 132, 121, 97, 423, 7, 590, 259, 683, 14, 786, 126, 508, 60, 246}, - {51, 13, 15, 730, 453, 23, 515, 719, 386, 457, 12, 700, 403, 475, 899, 1, 6, 523, 753, 421, 99, 401, 165, 33, 2, 19, 361, 5, 0, 670, 120, 27}, - {49, 28, 9, 159, 272, 22, 254, 131, 158, 327, 95, 105, 0, 39, 35, 168, 347, 286, 374, 55, 65, 627, 424, 912, 68, 578, 1, 24, 239, 175, 688, 169}, - {15, 515, 700, 33, 753, 4, 77, 141, 341, 317, 1, 10, 13, 180, 102, 22, 40, 117, 115, 365, 5, 901, 23, 197, 134, 11, 217, 351, 64, 82, 21, 137}, - {134, 15, 13, 515, 23, 700, 12, 753, 51, 474, 37, 961, 197, 10, 457, 569, 4, 0, 99, 2, 115, 38, 165, 153, 94, 3, 139, 11, 1, 82, 33, 5}, - {7, 2, 20, 58, 5, 14, 128, 66, 6, 29, 32, 43, 21, 52, 16, 38, 631, 61, 74, 97, 46, 135, 113, 25, 202, 192, 13, 0, 884, 45, 112, 87}, - {77, 13, 33, 202, 23, 128, 102, 4, 141, 342, 117, 0, 269, 318, 134, 22, 11, 21, 32, 153, 403, 291, 49, 64, 137, 51, 40, 15, 494, 5, 196, 98}, - {2, 1, 14, 6, 46, 38, 29, 65, 5, 36, 67, 0, 103, 7, 22, 86, 133, 50, 108, 208, 52, 83, 24, 323, 283, 69, 28, 18, 10, 25, 23, 75}, - {15, 515, 700, 753, 1, 5, 4, 2, 3, 13, 0, 11, 180, 341, 12, 33, 10, 197, 134, 365, 77, 23, 21, 901, 6, 117, 165, 7, 37, 32, 17, 102}, - {203, 268, 206, 93, 417, 940, 31, 8, 120, 137, 44, 499, 959, 473, 202, 692, 728, 559, 0, 260, 10, 326, 141, 564, 817, 127, 341, 1, 450, 22, 110, 23}, - {15, 82, 515, 120, 700, 0, 10, 753, 33, 8, 64, 165, 110, 31, 260, 93, 13, 197, 23, 22, 40, 4, 351, 44, 77, 9, 11, 153, 102, 51, 1, 196}, - {60, 0, 16, 7, 14, 43, 20, 71, 28, 10, 2, 22, 154, 18, 13, 24, 92, 1, 51, 576, 35, 615, 805, 925, 68, 126, 124, 149, 97, 64, 23, 55}, - {19, 6, 26, 80, 5, 84, 27, 17, 25, 2, 504, 129, 45, 240, 56, 123, 4, 119, 618, 1, 76, 106, 64, 51, 14, 3, 128, 65, 32, 710, 0, 42}, - {15, 515, 700, 753, 13, 4, 77, 23, 33, 51, 0, 5, 8, 10, 11, 31, 44, 1, 82, 22, 202, 64, 110, 102, 93, 21, 291, 40, 141, 180, 9, 49}, - {195, 98, 271, 223, 132, 167, 146, 407, 1, 360, 121, 834, 393, 591, 212, 199, 293, 259, 522, 107, 354, 147, 156, 191, 807, 590, 48, 18, 125, 16, 765, 541}, - {128, 202, 77, 210, 402, 318, 33, 102, 6, 40, 403, 29, 342, 269, 196, 757, 99, 139, 2, 111, 42, 4, 494, 117, 275, 300, 13, 12, 678, 0, 177, 122}, - {13, 33, 23, 40, 51, 102, 4, 117, 77, 64, 134, 0, 128, 153, 202, 196, 453, 11, 15, 12, 1, 22, 403, 141, 59, 14, 10, 475, 515, 65, 700, 95}, - {7, 16, 14, 24, 18, 2, 28, 0, 92, 71, 1, 22, 6, 35, 60, 20, 168, 10, 154, 118, 5, 302, 124, 69, 97, 109, 703, 158, 420, 12, 149, 66}, - {15, 1, 515, 23, 0, 13, 700, 2, 51, 753, 180, 5, 120, 165, 197, 21, 115, 4, 33, 9, 141, 7, 12, 6, 3, 457, 386, 202, 260, 523, 8, 31}, - {60, 107, 121, 132, 146, 126, 199, 279, 150, 92, 16, 649, 441, 35, 955, 7, 21, 0, 423, 5, 18, 195, 598, 298, 493, 356, 32, 653, 22, 362, 953, 10}, - {31, 44, 98, 276, 284, 299, 116, 935, 9, 201, 0, 131, 39, 127, 144, 662, 1, 137, 371, 492, 567, 489, 93, 254, 49, 268, 22, 28, 30, 293, 434, 737}, - {13, 15, 23, 515, 700, 0, 1, 51, 753, 4, 2, 10, 77, 202, 5, 115, 3, 165, 197, 457, 9, 12, 11, 961, 33, 120, 22, 141, 180, 7, 6, 40}, - {123, 162, 184, 257, 17, 183, 229, 130, 129, 3, 84, 136, 99, 152, 556, 383, 57, 497, 12, 205, 4, 62, 56, 452, 80, 266, 128, 14, 40, 119, 27, 106}, - {196, 33, 117, 40, 153, 23, 134, 13, 51, 102, 453, 0, 15, 475, 12, 14, 515, 2, 22, 700, 4, 21, 753, 64, 401, 670, 730, 1, 9, 11, 10, 99}, - {224, 219, 187, 131, 258, 385, 442, 871, 836, 31, 98, 908, 44, 574, 127, 944, 137, 839, 116, 36, 613, 1, 254, 39, 926, 160, 829, 96, 93, 371, 860, 827}, - {121, 195, 156, 132, 146, 360, 590, 407, 786, 522, 883, 591, 259, 929, 626, 941, 150, 687, 5, 55, 296, 379, 467, 178, 586, 465, 279, 21, 1, 13, 60, 354}, - {2, 1, 14, 29, 6, 5, 46, 52, 38, 19, 114, 75, 26, 65, 108, 96, 25, 50, 36, 70, 103, 309, 17, 236, 218, 74, 12, 86, 0, 3, 10, 112}, - {15, 515, 82, 700, 120, 753, 10, 0, 8, 197, 260, 165, 351, 64, 13, 110, 117, 93, 31, 1, 9, 33, 22, 23, 457, 44, 450, 77, 102, 898, 40, 49}, - {7, 66, 97, 2, 172, 74, 226, 52, 29, 135, 192, 232, 43, 324, 92, 5, 38, 20, 222, 14, 6, 568, 87, 107, 353, 620, 580, 16, 138, 174, 448, 32}, - {62, 129, 123, 162, 136, 249, 618, 183, 507, 57, 4, 152, 17, 59, 11, 184, 117, 77, 3, 128, 211, 41, 130, 205, 12, 40, 33, 106, 64, 229, 38, 313}, - {1, 13, 15, 2, 4, 515, 23, 0, 3, 115, 700, 5, 51, 77, 341, 141, 753, 180, 33, 217, 197, 202, 901, 6, 21, 165, 11, 365, 318, 317, 10, 102}, - {6, 26, 235, 19, 145, 47, 112, 78, 64, 27, 453, 95, 29, 444, 25, 624, 85, 108, 648, 70, 32, 130, 74, 42, 711, 630, 632, 138, 65, 122, 113, 730}, - {23, 51, 12, 15, 13, 99, 515, 153, 117, 10, 700, 37, 120, 82, 165, 2, 753, 64, 128, 0, 403, 3, 5, 1, 134, 197, 453, 31, 202, 457, 110, 21}, - {16, 24, 18, 71, 64, 35, 92, 7, 246, 146, 9, 108, 60, 118, 199, 5, 140, 2, 267, 0, 230, 830, 32, 133, 1, 68, 50, 330, 247, 563, 36, 12}, - {15, 515, 700, 753, 0, 1, 13, 2, 23, 3, 4, 217, 51, 5, 115, 8, 9, 180, 341, 10, 7, 6, 317, 77, 33, 372, 901, 197, 365, 11, 120, 165}, - {234, 639, 178, 202, 77, 142, 5, 455, 450, 49, 416, 0, 147, 427, 198, 21, 315, 329, 13, 318, 325, 557, 120, 344, 113, 259, 22, 128, 61, 105, 23, 494}, - {1, 31, 36, 44, 141, 180, 55, 2, 64, 22, 98, 116, 13, 352, 0, 115, 10, 127, 5, 164, 253, 498, 237, 165, 341, 197, 4, 86, 15, 170, 125, 23}, - {15, 120, 13, 141, 23, 260, 217, 515, 1, 77, 51, 110, 180, 700, 317, 82, 269, 137, 115, 202, 21, 753, 64, 5, 351, 291, 0, 450, 352, 93, 36, 326}, - {26, 6, 112, 396, 19, 145, 25, 122, 648, 287, 42, 74, 624, 222, 416, 45, 138, 66, 644, 151, 113, 651, 29, 573, 64, 280, 445, 27, 525, 85, 70, 58}, - {156, 360, 5, 146, 121, 21, 271, 522, 354, 132, 49, 13, 18, 195, 16, 340, 60, 591, 446, 586, 727, 0, 107, 407, 167, 48, 1, 463, 199, 566, 32, 23}, - {5, 61, 49, 147, 178, 612, 660, 120, 21, 182, 23, 427, 259, 683, 33, 4, 77, 70, 13, 3, 376, 98, 64, 0, 481, 344, 48, 595, 291, 263, 141, 51}, - {89, 79, 468, 179, 358, 205, 94, 405, 115, 498, 72, 180, 365, 431, 37, 111, 341, 734, 188, 317, 482, 217, 11, 4, 245, 152, 413, 216, 12, 474, 490, 752}, - {24, 16, 35, 68, 18, 71, 7, 92, 0, 108, 9, 14, 118, 101, 336, 175, 375, 302, 28, 124, 154, 55, 149, 60, 398, 1, 65, 2, 140, 273, 345, 230}, - {51, 730, 421, 801, 453, 386, 23, 523, 13, 475, 719, 401, 670, 365, 899, 403, 115, 457, 758, 165, 33, 494, 450, 6, 423, 805, 629, 56, 569, 514, 958, 388}, - {113, 45, 6, 311, 29, 2, 151, 614, 145, 491, 112, 80, 5, 27, 61, 74, 315, 66, 209, 631, 19, 25, 58, 17, 73, 26, 1, 243, 70, 64, 611, 287}, - {4, 339, 188, 471, 11, 59, 79, 12, 377, 94, 99, 33, 77, 102, 51, 111, 37, 152, 13, 961, 474, 542, 40, 342, 3, 23, 128, 403, 202, 177, 184, 57}, - {15, 4, 515, 11, 700, 33, 82, 40, 0, 120, 753, 10, 8, 110, 13, 93, 23, 165, 77, 260, 64, 31, 22, 51, 44, 102, 351, 1, 125, 9, 197, 21}, - {16, 24, 18, 0, 35, 68, 28, 71, 124, 118, 60, 7, 9, 55, 14, 92, 109, 101, 419, 175, 22, 252, 154, 375, 149, 302, 158, 346, 2, 49, 1, 126}, - {17, 45, 227, 21, 106, 3, 2, 243, 209, 5, 48, 32, 221, 62, 207, 50, 29, 186, 290, 270, 263, 52, 14, 496, 400, 119, 46, 255, 54, 430, 38, 721}, - {340, 354, 586, 658, 156, 195, 698, 668, 1, 296, 9, 18, 883, 363, 447, 379, 303, 98, 411, 13, 31, 163, 51, 5, 371, 48, 919, 846, 121, 21, 360, 70}, - {277, 153, 111, 12, 23, 51, 474, 99, 38, 37, 139, 117, 41, 457, 79, 453, 542, 13, 11, 33, 134, 157, 629, 188, 961, 14, 196, 401, 102, 569, 15, 94}, - {0, 18, 16, 159, 49, 24, 9, 105, 35, 68, 7, 28, 22, 1, 60, 344, 55, 101, 109, 2, 14, 158, 13, 23, 71, 118, 455, 286, 272, 424, 5, 327}, - {0, 105, 9, 49, 16, 18, 158, 28, 518, 24, 101, 320, 1, 68, 170, 301, 272, 127, 7, 286, 35, 890, 109, 39, 159, 98, 21, 344, 31, 55, 371, 23}, - {141, 1, 180, 15, 13, 2, 365, 217, 515, 352, 317, 115, 341, 0, 4, 5, 269, 700, 23, 21, 3, 752, 197, 77, 753, 51, 31, 901, 10, 202, 8, 64}, - {4, 23, 51, 33, 19, 17, 102, 153, 485, 880, 40, 403, 196, 26, 300, 453, 27, 117, 78, 0, 12, 200, 47, 5, 11, 14, 342, 99, 53, 77, 475, 2}, - {62, 184, 56, 440, 130, 229, 183, 3, 556, 152, 99, 162, 12, 266, 17, 548, 136, 57, 305, 161, 123, 14, 452, 4, 383, 403, 257, 34, 40, 84, 33, 139}, - {13, 23, 77, 141, 64, 202, 33, 51, 269, 115, 0, 102, 21, 4, 217, 128, 5, 32, 318, 137, 291, 9, 15, 2, 180, 10, 3, 317, 177, 515, 7, 6}, - {1, 22, 36, 105, 170, 0, 86, 2, 31, 28, 239, 64, 55, 5, 10, 98, 9, 44, 127, 95, 654, 67, 301, 143, 13, 12, 49, 23, 320, 141, 83, 21}, - {15, 515, 700, 753, 0, 1, 13, 2, 23, 901, 5, 8, 51, 82, 9, 180, 457, 4, 7, 12, 3, 6, 10, 120, 341, 141, 22, 898, 197, 351, 115, 260}, - {1, 39, 274, 98, 100, 265, 190, 30, 438, 310, 166, 223, 88, 96, 909, 31, 264, 625, 530, 9, 382, 812, 21, 252, 593, 0, 254, 539, 44, 131, 23, 778}, - {18, 212, 167, 118, 363, 1, 447, 411, 146, 60, 271, 16, 781, 121, 647, 9, 621, 562, 21, 478, 664, 68, 815, 5, 354, 98, 48, 101, 24, 446, 777, 463}, - {24, 28, 22, 0, 7, 1, 2, 16, 14, 65, 35, 49, 158, 95, 109, 159, 55, 105, 10, 18, 124, 9, 67, 5, 239, 149, 12, 289, 108, 68, 21, 424}, - {105, 22, 131, 272, 286, 98, 55, 239, 1, 31, 320, 9, 127, 327, 36, 185, 28, 374, 86, 219, 0, 64, 187, 44, 578, 164, 224, 913, 535, 115, 601, 13}, - {22, 31, 28, 301, 127, 98, 44, 0, 105, 1, 512, 395, 9, 293, 109, 299, 95, 338, 239, 125, 242, 116, 36, 320, 55, 841, 900, 685, 599, 23, 13, 763}, - {2, 1, 58, 29, 5, 14, 52, 46, 186, 334, 45, 155, 151, 50, 400, 75, 38, 69, 502, 61, 48, 227, 223, 7, 163, 17, 262, 67, 549, 21, 70, 113}, - {7, 107, 135, 232, 97, 14, 2, 92, 66, 16, 172, 192, 278, 387, 298, 356, 38, 35, 448, 52, 46, 43, 60, 29, 20, 126, 324, 526, 357, 359, 64, 5}, - {20, 43, 104, 426, 173, 7, 560, 414, 707, 784, 319, 81, 0, 861, 422, 819, 38, 74, 715, 52, 376, 97, 879, 32, 330, 22, 49, 64, 66, 95, 192, 526}, - {104, 74, 636, 66, 204, 0, 355, 81, 222, 25, 29, 319, 145, 784, 20, 65, 90, 4, 174, 194, 7, 64, 6, 746, 138, 173, 750, 715, 91, 43, 192, 32}, - {0, 9, 101, 35, 68, 39, 65, 28, 252, 124, 67, 154, 364, 336, 100, 166, 30, 1, 289, 55, 149, 346, 16, 114, 158, 88, 439, 24, 429, 22, 570, 194}, - {57, 14, 4, 231, 236, 585, 176, 59, 369, 23, 361, 13, 719, 51, 300, 342, 12, 457, 56, 3, 62, 38, 202, 401, 34, 46, 2, 322, 11, 215, 210, 507}, - {1, 2, 15, 3, 141, 0, 515, 5, 33, 700, 13, 64, 77, 180, 6, 128, 753, 10, 4, 269, 102, 202, 11, 7, 134, 197, 352, 120, 117, 318, 12, 291}, - {5, 1, 21, 202, 13, 32, 48, 23, 0, 61, 259, 22, 494, 120, 70, 49, 51, 18, 137, 128, 465, 12, 178, 115, 2, 453, 403, 141, 58, 3, 90, 450}, - {141, 205, 4, 72, 59, 79, 245, 11, 352, 94, 152, 76, 247, 216, 21, 188, 452, 217, 497, 12, 89, 37, 111, 339, 588, 77, 64, 875, 864, 115, 358, 464}, - {15, 515, 700, 753, 0, 1, 2, 13, 5, 4, 23, 3, 8, 341, 365, 51, 115, 10, 120, 457, 6, 141, 77, 197, 31, 7, 165, 9, 202, 450, 961, 260}, - {5, 2, 50, 14, 58, 38, 171, 46, 29, 1, 45, 186, 17, 52, 155, 218, 48, 281, 61, 487, 54, 36, 67, 21, 328, 334, 151, 227, 760, 114, 400, 133}, - {457, 120, 70, 125, 318, 64, 23, 48, 795, 291, 202, 761, 751, 415, 77, 846, 269, 758, 21, 237, 96, 260, 391, 165, 87, 1, 128, 5, 221, 13, 137, 763}, - {13, 23, 51, 33, 4, 40, 117, 102, 453, 64, 153, 196, 0, 77, 15, 11, 12, 475, 1, 65, 134, 10, 515, 22, 21, 14, 700, 59, 403, 141, 2, 753}, - {229, 152, 57, 266, 452, 381, 432, 12, 313, 184, 99, 471, 17, 4, 62, 339, 157, 3, 129, 59, 128, 11, 369, 37, 77, 38, 40, 123, 5, 497, 188, 257}, - {49, 28, 109, 22, 159, 9, 272, 95, 105, 131, 55, 35, 254, 168, 39, 327, 169, 0, 1, 286, 175, 374, 347, 158, 420, 67, 36, 194, 312, 424, 627, 346}, - {5, 2, 61, 29, 45, 58, 80, 311, 1, 17, 209, 227, 52, 243, 106, 869, 454, 151, 592, 496, 48, 334, 14, 155, 6, 186, 46, 171, 75, 21, 255, 667}, - {244, 44, 110, 141, 260, 30, 269, 352, 839, 131, 574, 228, 373, 276, 1, 406, 219, 717, 217, 137, 253, 224, 120, 93, 36, 31, 567, 116, 661, 187, 341, 88}, - {12, 99, 79, 139, 11, 453, 196, 51, 277, 474, 111, 23, 542, 37, 94, 188, 33, 13, 401, 775, 40, 961, 313, 102, 4, 339, 153, 485, 629, 134, 300, 431}, - {16, 35, 9, 0, 68, 24, 149, 69, 67, 18, 1, 114, 65, 230, 71, 7, 103, 133, 50, 167, 212, 118, 101, 191, 140, 64, 399, 28, 124, 283, 55, 565}, - {88, 30, 274, 435, 131, 613, 190, 100, 93, 829, 166, 1, 187, 795, 530, 127, 382, 957, 960, 160, 31, 137, 466, 264, 39, 800, 406, 254, 28, 473, 521, 219}, - {167, 16, 18, 118, 212, 24, 60, 71, 101, 68, 191, 9, 375, 411, 363, 35, 0, 1, 589, 199, 302, 21, 447, 55, 146, 126, 92, 271, 647, 121, 562, 48}, - {64, 141, 86, 177, 77, 128, 147, 597, 304, 95, 269, 102, 275, 4, 352, 49, 120, 5, 372, 194, 465, 13, 588, 237, 947, 216, 202, 180, 612, 751, 107, 534}, - {18, 65, 90, 403, 523, 289, 240, 214, 194, 102, 701, 475, 202, 217, 283, 862, 389, 51, 33, 0, 494, 421, 453, 817, 84, 64, 847, 899, 352, 13, 23, 437}, - {13, 51, 23, 202, 5, 12, 21, 128, 15, 115, 0, 1, 141, 120, 64, 32, 4, 2, 515, 403, 165, 457, 3, 10, 700, 99, 453, 318, 719, 450, 308, 401}, - {98, 223, 393, 31, 1, 271, 834, 791, 167, 44, 202, 64, 93, 697, 5, 116, 77, 125, 450, 446, 212, 18, 541, 293, 51, 120, 195, 132, 284, 13, 807, 765}, - {15, 515, 700, 753, 4, 11, 23, 13, 40, 51, 82, 165, 0, 110, 93, 33, 141, 64, 120, 5, 10, 77, 3, 102, 180, 32, 202, 125, 8, 197, 31, 21}, - {15, 515, 700, 753, 0, 1, 13, 2, 901, 23, 5, 341, 3, 51, 82, 8, 4, 180, 961, 9, 115, 10, 12, 6, 898, 7, 351, 141, 134, 22, 31, 120}, - {234, 416, 77, 5, 315, 639, 325, 202, 147, 198, 113, 49, 450, 61, 455, 142, 0, 21, 22, 342, 329, 494, 178, 58, 102, 427, 318, 230, 13, 120, 43, 470}, - {60, 146, 16, 18, 156, 126, 121, 271, 199, 360, 132, 24, 167, 0, 640, 10, 71, 522, 21, 92, 5, 340, 107, 354, 118, 150, 22, 195, 446, 35, 28, 212}, - {4, 361, 11, 14, 56, 368, 377, 161, 27, 12, 300, 77, 59, 200, 17, 554, 202, 33, 40, 494, 495, 21, 210, 80, 757, 25, 128, 23, 19, 38, 444, 53}, - {141, 82, 217, 351, 15, 352, 120, 1, 180, 260, 515, 64, 854, 36, 700, 317, 752, 372, 13, 269, 77, 753, 922, 21, 349, 23, 202, 110, 93, 137, 51, 373}, - {15, 515, 700, 753, 77, 13, 0, 1, 23, 33, 102, 2, 51, 4, 3, 5, 291, 217, 10, 9, 450, 120, 341, 7, 317, 6, 11, 117, 115, 8, 260, 180}, - {15, 515, 120, 13, 700, 23, 77, 141, 1, 260, 0, 753, 180, 51, 137, 202, 115, 365, 110, 291, 217, 5, 128, 9, 21, 341, 197, 269, 2, 450, 317, 165}, - {174, 6, 348, 85, 138, 74, 280, 204, 66, 233, 192, 355, 289, 65, 81, 580, 636, 353, 25, 91, 104, 343, 673, 214, 64, 95, 42, 712, 792, 32, 194, 90}, - {152, 497, 452, 59, 4, 216, 11, 79, 94, 77, 128, 188, 269, 339, 588, 33, 76, 529, 318, 32, 141, 471, 12, 202, 111, 21, 5, 51, 37, 90, 72, 177}, - {417, 499, 10, 141, 253, 244, 110, 559, 8, 564, 180, 260, 728, 120, 352, 638, 642, 341, 951, 206, 143, 752, 901, 93, 137, 661, 922, 373, 44, 31, 811, 197}, - {13, 77, 23, 33, 4, 51, 0, 102, 128, 59, 141, 40, 64, 115, 177, 10, 137, 22, 202, 2, 7, 11, 90, 1, 117, 180, 269, 14, 49, 6, 134, 3}, - {1, 2, 22, 0, 36, 5, 67, 50, 14, 28, 12, 86, 38, 46, 83, 168, 194, 65, 103, 114, 49, 7, 10, 95, 21, 69, 23, 24, 128, 51, 55, 13}, - {17, 106, 119, 207, 255, 306, 742, 378, 84, 62, 136, 45, 3, 5, 240, 80, 61, 56, 209, 383, 311, 790, 655, 32, 2, 440, 76, 151, 58, 29, 179, 263}, - {3, 128, 1, 141, 2, 202, 33, 5, 64, 15, 0, 515, 102, 13, 269, 10, 700, 180, 134, 51, 120, 6, 77, 318, 23, 137, 17, 117, 753, 197, 82, 153}, - {514, 38, 377, 328, 11, 57, 41, 248, 880, 266, 556, 4, 152, 361, 471, 757, 485, 403, 305, 102, 3, 211, 313, 99, 457, 130, 12, 14, 157, 40, 23, 54}, - {68, 0, 167, 101, 9, 118, 264, 520, 16, 18, 21, 478, 562, 1, 124, 212, 100, 936, 664, 777, 191, 88, 806, 154, 48, 24, 759, 604, 35, 252, 265, 65}, - {230, 689, 699, 213, 466, 352, 217, 831, 30, 443, 418, 144, 854, 201, 840, 855, 1, 251, 203, 317, 530, 957, 96, 93, 822, 539, 36, 752, 351, 137, 83, 800}, - {33, 77, 102, 117, 15, 82, 13, 134, 23, 64, 0, 515, 120, 153, 51, 4, 40, 128, 700, 260, 202, 141, 196, 22, 753, 11, 351, 10, 1, 326, 95, 269}, - {11, 40, 33, 51, 117, 13, 542, 328, 14, 134, 38, 153, 23, 12, 485, 231, 102, 54, 775, 37, 3, 377, 111, 139, 211, 4, 457, 403, 369, 475, 99, 719}, - {33, 64, 77, 128, 141, 2, 1, 202, 102, 13, 23, 117, 0, 15, 3, 153, 51, 134, 10, 40, 6, 5, 515, 269, 137, 180, 318, 165, 700, 7, 196, 753}, - {15, 515, 700, 753, 4, 1, 5, 11, 13, 21, 33, 180, 93, 141, 64, 2, 23, 77, 82, 3, 0, 102, 32, 40, 352, 341, 10, 197, 98, 110, 117, 901}, - {1, 2, 14, 67, 50, 46, 38, 24, 103, 83, 0, 5, 36, 28, 29, 133, 114, 96, 65, 52, 18, 75, 54, 108, 22, 7, 238, 58, 160, 9, 361, 69}, - {258, 201, 276, 137, 160, 860, 116, 261, 295, 843, 567, 144, 131, 44, 187, 268, 943, 219, 284, 31, 202, 935, 141, 98, 662, 203, 127, 96, 36, 93, 224, 1}, - {7, 2, 14, 16, 46, 87, 75, 52, 92, 278, 29, 38, 140, 70, 1, 5, 35, 294, 24, 262, 135, 69, 171, 172, 58, 409, 112, 60, 50, 66, 97, 12}, - {13, 23, 0, 2, 51, 1, 33, 4, 115, 10, 15, 141, 77, 3, 5, 180, 217, 515, 9, 7, 64, 11, 700, 6, 102, 40, 197, 22, 317, 753, 165, 202}, - {74, 145, 6, 66, 25, 204, 42, 29, 222, 337, 138, 26, 7, 525, 192, 174, 746, 287, 544, 135, 415, 2, 609, 632, 112, 64, 87, 0, 85, 45, 712, 396}, - {77, 33, 102, 15, 217, 13, 23, 141, 202, 515, 51, 700, 291, 4, 269, 753, 317, 180, 21, 64, 318, 115, 128, 0, 275, 2, 352, 196, 3, 5, 137, 11}, - {187, 219, 258, 871, 44, 442, 160, 574, 137, 224, 908, 116, 839, 131, 36, 926, 276, 201, 93, 228, 202, 860, 31, 613, 144, 531, 406, 1, 902, 30, 190, 318}, - {1, 372, 141, 5, 21, 77, 225, 744, 96, 30, 23, 349, 13, 291, 269, 284, 69, 442, 459, 144, 303, 839, 217, 622, 160, 330, 260, 48, 120, 410, 189, 352}, - {66, 222, 2, 74, 29, 87, 135, 6, 7, 145, 52, 25, 294, 337, 226, 172, 138, 331, 42, 70, 97, 112, 26, 1, 632, 192, 43, 5, 415, 609, 461, 353}, - {45, 17, 106, 209, 5, 2, 21, 29, 48, 207, 3, 186, 243, 155, 255, 263, 454, 119, 400, 496, 270, 14, 290, 62, 425, 1, 171, 32, 659, 52, 38, 56}, - {93, 88, 141, 120, 30, 213, 260, 373, 100, 717, 459, 82, 110, 1, 166, 450, 180, 321, 217, 372, 36, 269, 131, 225, 22, 352, 326, 466, 473, 187, 244, 410}, - {266, 57, 152, 381, 313, 471, 12, 229, 99, 369, 339, 62, 157, 3, 4, 37, 77, 38, 188, 17, 11, 162, 40, 184, 129, 59, 475, 775, 128, 452, 403, 453}, - {217, 352, 317, 141, 752, 15, 180, 515, 372, 365, 700, 341, 753, 349, 77, 21, 291, 1, 115, 244, 64, 120, 13, 98, 269, 82, 5, 498, 864, 351, 23, 144}, - {14, 514, 369, 102, 403, 377, 51, 719, 880, 153, 23, 13, 457, 11, 485, 4, 401, 12, 328, 453, 33, 40, 117, 57, 629, 38, 730, 236, 134, 670, 361, 961}, - {107, 7, 172, 14, 92, 135, 2, 359, 60, 314, 46, 16, 126, 278, 232, 150, 279, 32, 38, 392, 298, 5, 35, 97, 24, 192, 259, 288, 330, 52, 356, 312}, - {0, 4, 25, 13, 59, 90, 65, 23, 26, 19, 18, 12, 5, 216, 91, 51, 389, 33, 77, 11, 22, 85, 27, 81, 21, 177, 746, 45, 42, 194, 37, 123}, - {5, 49, 315, 202, 416, 77, 455, 639, 450, 21, 197, 137, 350, 13, 408, 0, 329, 318, 494, 344, 61, 402, 64, 509, 347, 120, 113, 48, 95, 713, 308, 401}, - {130, 47, 381, 390, 59, 90, 200, 214, 289, 6, 65, 472, 29, 64, 874, 648, 50, 751, 624, 26, 52, 32, 4, 194, 875, 714, 85, 249, 247, 33, 881, 19}, - {51, 23, 453, 13, 719, 12, 457, 165, 37, 730, 99, 4, 386, 197, 401, 17, 11, 2, 3, 15, 5, 961, 475, 6, 515, 64, 54, 700, 32, 115, 0, 403}, - {15, 515, 1, 13, 700, 2, 23, 0, 753, 5, 3, 180, 51, 4, 165, 12, 141, 21, 197, 457, 7, 115, 6, 9, 352, 10, 120, 202, 8, 341, 11, 77}, - {0, 9, 1, 67, 35, 28, 68, 16, 24, 65, 18, 69, 50, 114, 103, 12, 22, 13, 5, 101, 2, 96, 23, 83, 149, 21, 39, 55, 7, 175, 433, 124}, - {28, 105, 22, 0, 1, 320, 170, 9, 49, 301, 109, 95, 127, 31, 98, 55, 65, 35, 2, 24, 168, 159, 36, 713, 16, 740, 13, 338, 21, 44, 512, 23}, - {13, 77, 4, 51, 23, 33, 102, 202, 128, 59, 40, 0, 64, 141, 117, 403, 115, 11, 15, 318, 153, 269, 22, 515, 475, 134, 10, 494, 177, 1, 90, 210}, - {13, 23, 0, 51, 77, 33, 2, 141, 4, 10, 1, 64, 115, 102, 3, 6, 22, 15, 217, 11, 180, 7, 40, 515, 165, 202, 177, 9, 269, 128, 700, 5}, - {456, 116, 492, 8, 949, 268, 867, 391, 203, 51, 499, 13, 719, 386, 31, 791, 457, 918, 125, 10, 23, 93, 479, 685, 417, 0, 22, 338, 506, 551, 870, 730}, - {17, 237, 45, 180, 106, 62, 32, 64, 115, 41, 136, 498, 255, 21, 197, 129, 241, 13, 3, 227, 23, 352, 165, 752, 350, 365, 449, 155, 4, 546, 476, 38}, - {1, 15, 180, 515, 0, 2, 341, 700, 901, 352, 4, 141, 13, 3, 752, 5, 753, 217, 317, 115, 365, 23, 197, 21, 51, 165, 31, 6, 269, 202, 77, 7}, - {205, 141, 216, 269, 497, 4, 588, 76, 59, 152, 128, 452, 79, 77, 875, 11, 72, 94, 188, 217, 352, 12, 247, 37, 90, 64, 32, 1, 474, 23, 947, 372}, - {64, 247, 217, 237, 317, 180, 752, 115, 349, 141, 498, 13, 437, 304, 23, 372, 352, 164, 579, 291, 33, 864, 177, 197, 0, 490, 72, 10, 482, 77, 269, 51}, - {2, 1, 0, 13, 15, 141, 3, 77, 5, 515, 64, 33, 23, 180, 6, 700, 4, 117, 217, 7, 10, 11, 102, 165, 753, 197, 115, 134, 40, 352, 12, 269}, - {11, 40, 38, 328, 33, 542, 12, 313, 41, 339, 23, 157, 377, 117, 369, 51, 471, 99, 775, 485, 13, 305, 457, 57, 14, 475, 37, 248, 4, 54, 188, 719}, - {33, 77, 102, 40, 13, 23, 0, 51, 4, 128, 64, 202, 117, 141, 22, 196, 153, 10, 134, 15, 59, 269, 1, 137, 65, 11, 403, 318, 453, 86, 515, 177}, - {472, 80, 34, 250, 495, 161, 17, 14, 469, 176, 128, 4, 389, 106, 283, 436, 216, 527, 3, 297, 483, 177, 53, 56, 231, 194, 119, 84, 719, 57, 255, 59}, - {317, 352, 180, 141, 217, 752, 115, 341, 365, 244, 1, 269, 202, 901, 253, 15, 21, 498, 372, 4, 137, 515, 13, 2, 700, 318, 5, 197, 23, 143, 753, 349}, - {9, 39, 101, 18, 265, 100, 333, 520, 252, 16, 0, 329, 593, 1, 553, 364, 68, 167, 310, 30, 121, 254, 118, 158, 363, 166, 60, 604, 272, 24, 286, 404}, - {15, 515, 1, 180, 700, 901, 0, 2, 753, 341, 752, 4, 3, 13, 115, 365, 317, 5, 23, 197, 141, 217, 165, 352, 6, 22, 36, 9, 137, 51, 7, 10}, - {131, 39, 9, 829, 166, 613, 578, 827, 1, 30, 716, 254, 100, 98, 31, 224, 0, 406, 228, 310, 616, 219, 44, 846, 127, 190, 938, 96, 265, 371, 856, 438}, - {17, 64, 62, 106, 141, 751, 136, 292, 32, 129, 352, 41, 38, 476, 86, 128, 214, 237, 5, 177, 123, 209, 217, 45, 269, 954, 162, 710, 180, 3, 90, 4}, - {25, 42, 235, 65, 650, 736, 605, 6, 630, 85, 123, 343, 233, 256, 26, 122, 63, 389, 141, 249, 416, 444, 368, 194, 19, 108, 138, 174, 90, 0, 544, 511}, - {184, 229, 152, 57, 266, 432, 497, 452, 17, 381, 619, 257, 313, 12, 4, 205, 59, 3, 99, 471, 157, 128, 5, 129, 339, 369, 77, 11, 32, 45, 202, 2}, - {137, 202, 160, 860, 141, 30, 93, 567, 36, 276, 295, 261, 131, 39, 9, 964, 201, 843, 1, 98, 800, 318, 116, 22, 943, 187, 10, 219, 206, 44, 269, 535}, - {0, 493, 125, 64, 49, 9, 279, 10, 35, 18, 93, 55, 293, 31, 14, 13, 194, 165, 325, 48, 22, 132, 21, 107, 98, 389, 44, 581, 342, 259, 174, 137}, - {15, 515, 700, 753, 4, 33, 13, 77, 23, 5, 51, 32, 102, 40, 93, 11, 349, 141, 21, 8, 82, 202, 64, 31, 110, 10, 117, 0, 1, 44, 3, 318}, - {110, 253, 854, 811, 352, 141, 244, 951, 180, 642, 661, 384, 498, 143, 752, 317, - 911, 10, 269, 206, 559, 351, 261, 120, 902, 533, 922, 959, 365, 160, 332, 217}, - {2, 29, 70, 1, 75, 52, 6, 220, 26, 112, 145, 331, 74, 163, 19, 69, 38, 324, 46, 58, 14, 5, 25, 21, 278, 223, 50, 307, 66, 7, 67, 409}, - {13, 23, 77, 33, 51, 4, 64, 141, 115, 102, 0, 2, 128, 177, 40, 11, 202, 10, 6, 180, 7, 15, 269, 1, 32, 217, 59, 22, 291, 3, 137, 515}, - {340, 897, 691, 478, 658, 264, 914, 382, 100, 812, 363, 1, 724, 156, 166, 698, 88, 521, 39, 404, 682, 447, 296, 96, 303, 411, 30, 909, 9, 274, 656, 772}, - {9, 18, 310, 101, 265, 159, 326, 120, 105, 158, 33, 363, 77, 195, 51, 55, 13, 39, 354, 132, 23, 7, 28, 639, 16, 137, 98, 1, 252, 272, 709, 49}, - {57, 313, 471, 12, 99, 369, 157, 339, 266, 152, 38, 37, 475, 453, 328, 775, 11, 40, 59, 188, 77, 514, 401, 403, 342, 4, 139, 33, 377, 51, 229, 14}, - {16, 7, 24, 14, 35, 140, 60, 92, 18, 69, 71, 2, 189, 1, 46, 230, 108, 388, 150, 38, 21, 172, 278, 67, 246, 267, 50, 309, 236, 135, 451, 0}, - {206, 417, 93, 940, 959, 473, 499, 203, 8, 137, 559, 728, 31, 202, 44, 120, 450, 141, 10, 260, 116, 564, 22, 326, 269, 318, 268, 244, 0, 1, 253, 638}, - {15, 515, 700, 753, 1, 0, 13, 2, 23, 4, 3, 51, 5, 217, 7, 77, 341, 115, 8, 9, 10, 33, 6, 180, 317, 349, 291, 120, 11, 165, 457, 901}, - {1, 2, 5, 14, 48, 21, 290, 32, 50, 45, 38, 46, 263, 207, 155, 72, 76, 29, 17, 408, 425, 171, 89, 52, 7, 0, 292, 449, 3, 227, 513, 428}, - {121, 132, 354, 167, 271, 223, 146, 98, 18, 463, 1, 668, 446, 195, 407, 60, 212, 447, 781, 48, 360, 363, 411, 522, 156, 393, 807, 9, 21, 16, 293, 13}, - {131, 578, 105, 371, 219, 224, 716, 616, 187, 49, 9, 254, 737, 159, 385, 98, 258, 127, 272, 761, 0, 916, 623, 910, 28, 286, 39, 31, 22, 518, 924, 242}, - {302, 467, 97, 6, 273, 1, 24, 484, 124, 51, 36, 18, 2, 398, 453, 421, 523, 69, 7, 23, 13, 403, 386, 150, 66, 0, 298, 65, 426, 165, 22, 158}, - {30, 190, 530, 88, 1, 100, 778, 539, 625, 274, 382, 410, 96, 731, 960, 39, 795, 321, 9, 131, 264, 144, 840, 748, 44, 166, 669, 957, 36, 31, 435, 228}, - {141, 1, 2, 128, 64, 33, 15, 202, 3, 0, 180, 5, 13, 77, 515, 134, 269, 102, 197, 700, 10, 137, 318, 6, 120, 165, 753, 352, 4, 82, 23, 117}, - {44, 201, 567, 116, 131, 224, 295, 662, 489, 268, 219, 31, 434, 144, 187, 276, 110, 384, 93, 261, 699, 137, 36, 442, 120, 1, 613, 30, 228, 64, 141, 244}, - {12, 15, 51, 23, 515, 37, 99, 13, 700, 0, 10, 117, 753, 38, 165, 82, 134, 120, 11, 453, 197, 64, 115, 569, 1, 629, 401, 22, 457, 474, 110, 153}, - {7, 135, 2, 92, 172, 14, 66, 140, 38, 52, 97, 46, 29, 74, 16, 324, 278, 226, 6, 87, 1, 571, 262, 5, 357, 232, 35, 380, 69, 314, 24, 330}, - {125, 386, 23, 963, 949, 60, 51, 391, 165, 221, 13, 197, 118, 21, 719, 193, 541, 421, 517, 150, 393, 7, 401, 453, 308, 5, 791, 551, 326, 558, 48, 173}, - {6, 85, 42, 25, 138, 222, 174, 235, 280, 256, 525, 289, 26, 214, 64, 746, 90, 32, 544, 65, 204, 19, 66, 337, 355, 95, 348, 415, 74, 29, 5, 312}, - {1, 14, 5, 50, 2, 67, 24, 0, 46, 69, 48, 21, 58, 103, 16, 12, 18, 38, 54, 96, 83, 7, 502, 45, 36, 181, 35, 9, 430, 28, 10, 155}, - {811, 351, 642, 180, 951, 752, 110, 638, 253, 10, 82, 352, 197, 341, 365, 564, 499, 854, 873, 55, 9, 417, 282, 901, 244, 22, 559, 143, 206, 141, 28, 898}, - {23, 13, 51, 15, 12, 453, 403, 165, 4, 515, 115, 719, 475, 457, 700, 523, 2, 21, 0, 99, 202, 197, 14, 5, 386, 753, 128, 401, 37, 308, 33, 117}, - {120, 13, 23, 77, 141, 1, 15, 93, 217, 82, 260, 51, 137, 202, 110, 515, 21, 180, 165, 5, 128, 102, 64, 351, 291, 700, 269, 352, 326, 203, 177, 0}, - {1, 5, 0, 22, 12, 2, 36, 21, 10, 23, 86, 13, 28, 51, 9, 128, 48, 14, 32, 50, 7, 3, 96, 137, 54, 4, 202, 49, 37, 65, 208, 323}, - {219, 98, 23, 127, 301, 51, 258, 308, 170, 910, 13, 165, 22, 105, 293, 616, 125, 242, 276, 401, 201, 395, 964, 115, 55, 284, 31, 374, 327, 206, 512, 900}, - {64, 180, 80, 165, 5, 237, 2, 250, 34, 58, 297, 61, 197, 17, 22, 29, 186, 498, 231, 445, 247, 3, 752, 311, 95, 32, 483, 153, 27, 45, 115, 469}, - {13, 77, 23, 33, 0, 2, 1, 64, 141, 51, 102, 10, 15, 3, 115, 40, 180, 6, 515, 128, 7, 22, 269, 202, 4, 217, 700, 5, 177, 117, 14, 165}, - {15, 120, 51, 515, 13, 450, 23, 700, 202, 153, 196, 753, 260, 64, 128, 141, 730, 4, 326, 386, 21, 523, 33, 318, 5, 457, 95, 32, 403, 1, 77, 269}, - {2, 1, 5, 29, 32, 45, 207, 263, 14, 425, 58, 72, 76, 21, 7, 408, 48, 46, 52, 186, 17, 292, 38, 6, 61, 89, 476, 50, 155, 720, 119, 3}, - {15, 515, 700, 753, 4, 13, 11, 5, 1, 23, 33, 21, 3, 141, 32, 2, 40, 180, 117, 64, 269, 202, 102, 197, 0, 165, 120, 51, 341, 352, 153, 12}, - {76, 5, 214, 129, 2, 123, 45, 710, 17, 249, 618, 460, 179, 32, 1, 257, 205, 519, 90, 207, 245, 184, 162, 61, 769, 209, 292, 106, 6, 29, 14, 128}, - {1, 15, 23, 13, 120, 141, 51, 515, 202, 21, 700, 165, 0, 180, 137, 2, 5, 77, 128, 93, 753, 260, 269, 197, 326, 33, 110, 352, 82, 102, 318, 48}, - {7, 2, 135, 14, 29, 87, 66, 52, 97, 172, 70, 112, 5, 58, 46, 337, 92, 16, 20, 43, 1, 38, 232, 155, 74, 294, 6, 461, 409, 151, 262, 32}, - {574, 187, 384, 926, 860, 110, 258, 434, 269, 531, 141, 244, 160, 261, 253, 116, - 699, 959, 940, 717, 533, 36, 219, 31, 902, 661, 871, 295, 201, 352, 10, 260}, - {156, 354, 296, 1, 182, 586, 64, 379, 340, 937, 850, 698, 31, 48, 98, 44, 120, 18, 163, 23, 30, 658, 195, 125, 77, 284, 223, 291, 774, 481, 96, 39}, - {250, 80, 34, 472, 17, 495, 176, 469, 33, 194, 64, 483, 4, 297, 141, 14, 161, 27, 53, 667, 56, 833, 73, 527, 585, 231, 106, 51, 84, 814, 2, 59}, - {97, 7, 81, 140, 66, 92, 172, 192, 24, 298, 43, 6, 74, 69, 314, 426, 462, 14, 501, 16, 21, 508, 60, 189, 267, 232, 230, 104, 48, 20, 135, 330}, - {31, 44, 116, 144, 268, 393, 492, 434, 367, 489, 127, 98, 918, 0, 384, 9, 22, 206, 948, 105, 93, 203, 1, 456, 332, 940, 299, 28, 137, 49, 293, 125}, - {15, 128, 33, 3, 13, 51, 141, 1, 202, 64, 23, 2, 515, 120, 102, 0, 5, 82, 10, 700, 165, 197, 269, 153, 403, 110, 753, 137, 196, 318, 117, 12}, - {31, 98, 127, 9, 0, 105, 22, 28, 44, 512, 293, 395, 299, 1, 242, 49, 685, 763, 320, 599, 125, 116, 109, 276, 284, 95, 870, 159, 23, 456, 36, 900}, - {7, 24, 124, 1, 6, 97, 2, 69, 14, 18, 23, 92, 21, 67, 66, 16, 5, 484, 43, 20, 118, 65, 36, 22, 28, 0, 51, 140, 13, 71, 29, 150}, - {1, 64, 442, 303, 284, 349, 202, 141, 622, 67, 154, 447, 260, 44, 652, 429, 9, 335, 237, 919, 197, 98, 167, 33, 682, 269, 547, 77, 863, 411, 340, 201}, - {1, 15, 2, 141, 515, 0, 700, 13, 3, 180, 10, 753, 5, 64, 77, 33, 4, 6, 7, 197, 102, 269, 165, 23, 134, 11, 352, 341, 291, 349, 22, 120}, - {99, 139, 12, 453, 196, 277, 775, 40, 475, 33, 23, 401, 215, 51, 11, 14, 77, 111, 313, 130, 38, 211, 37, 266, 129, 15, 339, 153, 719, 3, 369, 515}, - {33, 77, 102, 4, 23, 128, 13, 141, 202, 64, 51, 0, 40, 59, 269, 115, 117, 137, 153, 1, 318, 11, 10, 177, 15, 134, 22, 90, 196, 2, 403, 32}, - {7, 2, 14, 58, 70, 112, 16, 5, 87, 38, 46, 52, 6, 128, 135, 1, 32, 21, 155, 29, 66, 64, 0, 97, 92, 186, 172, 294, 13, 23, 20, 37}, - {15, 13, 515, 1, 700, 2, 23, 0, 753, 5, 3, 4, 51, 10, 341, 115, 365, 180, 11, 33, 317, 77, 6, 7, 217, 12, 197, 165, 117, 9, 64, 102}, - {2, 1, 14, 29, 75, 69, 67, 6, 52, 46, 38, 24, 103, 220, 83, 25, 70, 87, 262, 74, 96, 267, 50, 366, 26, 16, 226, 394, 357, 66, 108, 19}, - {9, 105, 18, 39, 1, 0, 16, 557, 101, 272, 252, 890, 326, 49, 265, 21, 137, 100, 23, 938, 13, 310, 159, 5, 31, 24, 254, 51, 30, 128, 202, 132}, - {80, 209, 45, 61, 667, 17, 6, 106, 5, 2, 151, 29, 483, 255, 454, 833, 27, 311, 112, 19, 738, 378, 1, 58, 113, 26, 25, 469, 119, 887, 32, 64}, - {13, 23, 51, 15, 5, 1, 515, 0, 21, 2, 12, 141, 700, 165, 202, 115, 753, 32, 180, 4, 3, 197, 10, 120, 457, 9, 269, 128, 64, 341, 7, 33}, - {99, 12, 453, 277, 139, 157, 369, 474, 339, 51, 38, 23, 37, 196, 188, 401, 775, 111, 11, 313, 328, 475, 153, 266, 4, 471, 79, 40, 33, 629, 102, 14}, - {7, 92, 16, 232, 97, 140, 126, 14, 60, 107, 66, 35, 298, 387, 314, 104, 246, 462, 441, 150, 0, 38, 24, 2, 172, 357, 230, 330, 5, 633, 22, 289}, - {13, 77, 23, 202, 318, 141, 33, 4, 51, 269, 102, 177, 115, 403, 137, 2, 40, 494, 90, 11, 342, 128, 31, 117, 21, 32, 7, 12, 64, 134, 14, 10}, - {13, 2, 0, 23, 141, 1, 77, 3, 180, 33, 6, 64, 15, 10, 115, 51, 4, 5, 217, 197, 7, 165, 515, 102, 22, 11, 700, 269, 40, 352, 177, 14}, - {15, 515, 700, 753, 4, 11, 1, 93, 13, 5, 180, 110, 82, 21, 120, 23, 2, 33, 10, 141, 3, 165, 197, 102, 901, 0, 32, 341, 117, 40, 153, 12}, - {15, 515, 700, 753, 1, 13, 0, 2, 23, 4, 77, 51, 3, 5, 341, 291, 7, 33, 6, 115, 10, 9, 8, 217, 11, 177, 120, 180, 102, 165, 197, 365}, - {20, 43, 198, 325, 173, 904, 104, 234, 66, 147, 77, 319, 416, 422, 97, 426, 5, 0, 7, 450, 861, 202, 712, 725, 2, 32, 639, 376, 38, 324, 945, 315}, - {105, 0, 9, 28, 49, 301, 170, 1, 127, 159, 22, 16, 31, 98, 512, 623, 24, 109, 158, 395, 35, 68, 371, 65, 713, 55, 2, 242, 293, 21, 44, 18}, - {213, 88, 689, 466, 230, 30, 321, 435, 699, 352, 217, 201, 795, 831, 144, 854, 1, 443, 96, 539, 530, 840, 418, 251, 855, 190, 93, 100, 669, 31, 957, 662}, - {130, 453, 47, 196, 4, 57, 14, 59, 236, 711, 51, 153, 730, 77, 412, 381, 23, 202, 108, 128, 361, 13, 283, 117, 11, 719, 200, 46, 34, 78, 210, 2}, - {1, 2, 5, 14, 0, 50, 36, 22, 38, 46, 65, 67, 12, 86, 114, 28, 103, 29, 208, 7, 10, 128, 21, 83, 218, 23, 96, 54, 194, 6, 133, 51}, - {6, 26, 74, 19, 165, 453, 14, 730, 1, 125, 197, 50, 29, 51, 138, 357, 13, 2, 108, 391, 70, 719, 46, 457, 47, 500, 386, 262, 112, 23, 235, 52}, - {9, 10, 376, 20, 43, 0, 49, 18, 30, 120, 2, 33, 325, 104, 501, 470, 77, 788, 725, 102, 523, 39, 858, 5, 904, 414, 174, 55, 137, 37, 342, 13}, - {15, 515, 700, 753, 0, 1, 13, 23, 51, 77, 120, 202, 341, 82, 5, 4, 9, 260, 2, 137, 141, 128, 115, 351, 901, 8, 180, 10, 197, 21, 450, 33}, - {105, 131, 272, 578, 9, 49, 371, 219, 159, 616, 286, 320, 224, 187, 716, 98, 28, 22, 0, 623, 127, 258, 910, 737, 385, 31, 239, 347, 254, 109, 424, 95}, - {457, 51, 13, 23, 961, 12, 719, 99, 453, 15, 4, 515, 165, 401, 629, 3, 700, 11, 17, 14, 2, 37, 753, 41, 57, 569, 38, 45, 0, 33, 5, 32}, - {202, 120, 5, 33, 318, 77, 450, 102, 1, 260, 403, 128, 494, 21, 165, 13, 269, 12, 326, 23, 342, 523, 402, 2, 817, 64, 15, 141, 125, 82, 457, 475}, - {141, 269, 352, 217, 180, 64, 349, 137, 202, 160, 317, 15, 372, 515, 700, 752, 318, 753, 244, 13, 437, 291, 165, 864, 22, 237, 5, 82, 954, 21, 77, 418}, - {70, 29, 2, 145, 74, 112, 26, 6, 75, 52, 19, 66, 632, 1, 87, 220, 5, 135, 163, 287, 307, 25, 226, 7, 58, 396, 294, 278, 113, 409, 69, 151}, - {82, 351, 317, 15, 752, 180, 898, 352, 141, 901, 515, 341, 10, 700, 365, 1, 753, 498, 0, 217, 253, 115, 55, 854, 33, 5, 143, 32, 21, 160, 36, 197}, - {39, 9, 310, 254, 0, 30, 101, 49, 252, 272, 100, 265, 105, 455, 159, 557, 190, 333, 286, 688, 18, 166, 1, 158, 709, 16, 625, 627, 31, 131, 327, 329}, - {2, 58, 29, 5, 1, 151, 186, 52, 70, 45, 7, 549, 14, 75, 112, 400, 113, 155, 61, 46, 227, 163, 311, 315, 66, 6, 307, 27, 17, 220, 287, 74}, - {141, 217, 13, 21, 352, 23, 269, 77, 180, 115, 317, 64, 202, 15, 349, 137, 5, 51, 165, 291, 318, 752, 372, 4, 0, 102, 33, 365, 197, 32, 341, 125}, - {68, 35, 0, 9, 65, 101, 149, 124, 24, 154, 175, 16, 28, 7, 67, 1, 18, 189, 114, 398, 55, 14, 345, 39, 118, 133, 69, 2, 230, 429, 71, 283}, - {66, 7, 29, 2, 112, 52, 20, 43, 97, 151, 74, 192, 135, 5, 173, 525, 337, 45, 145, 58, 415, 25, 14, 32, 644, 70, 544, 226, 222, 21, 6, 580}, - {31, 125, 44, 22, 116, 299, 242, 55, 1, 170, 64, 36, 479, 870, 456, 685, 10, 599, 558, 0, 268, 506, 28, 740, 23, 903, 492, 164, 393, 206, 2, 86}, - {188, 11, 79, 12, 99, 377, 94, 33, 542, 339, 40, 474, 111, 37, 4, 51, 102, 453, 139, 775, 13, 475, 23, 961, 277, 471, 134, 57, 431, 266, 115, 117}, - {658, 698, 340, 98, 296, 303, 1, 31, 850, 363, 156, 919, 44, 774, 586, 385, 120, 77, 82, 10, 223, 30, 354, 291, 23, 914, 478, 87, 260, 163, 48, 13}, - {15, 515, 700, 753, 82, 4, 1, 13, 901, 33, 197, 11, 5, 10, 23, 165, 2, 0, 180, 3, 21, 77, 51, 120, 365, 115, 217, 40, 117, 102, 32, 401}, - {15, 515, 700, 753, 4, 11, 5, 13, 1, 141, 3, 180, 23, 202, 21, 2, 269, 64, 165, 33, 40, 32, 0, 318, 120, 128, 12, 197, 117, 352, 51, 17}, - {91, 6, 233, 85, 370, 718, 81, 65, 25, 256, 63, 343, 42, 74, 235, 123, 138, 511, 397, 249, 26, 194, 650, 355, 64, 87, 544, 18, 90, 643, 66, 214}, - {23, 13, 202, 51, 21, 120, 1, 5, 141, 128, 450, 64, 318, 403, 15, 137, 260, 33, 12, 48, 32, 31, 125, 494, 269, 102, 165, 515, 77, 2, 197, 14}, - {180, 317, 365, 341, 752, 217, 115, 352, 901, 482, 372, 498, 1, 141, 15, 253, 515, 244, 2, 700, 0, 21, 13, 82, 23, 4, 579, 351, 753, 291, 269, 77}, - {13, 115, 197, 341, 9, 352, 468, 237, 64, 498, 23, 165, 22, 509, 901, 546, 482, 180, 28, 569, 317, 51, 365, 873, 391, 95, 86, 217, 49, 837, 752, 706}, - {13, 23, 51, 1, 141, 5, 165, 202, 21, 120, 64, 125, 180, 15, 2, 33, 197, 115, 128, 32, 260, 269, 12, 82, 4, 515, 137, 7, 318, 93, 0, 700}, - {214, 289, 90, 174, 874, 6, 138, 280, 65, 81, 64, 85, 355, 751, 194, 233, 312, 348, 835, 91, 0, 32, 343, 636, 249, 29, 875, 288, 519, 104, 247, 74}, - {15, 515, 700, 753, 4, 5, 11, 13, 1, 33, 23, 21, 2, 3, 102, 32, 141, 77, 180, 117, 31, 64, 0, 40, 134, 196, 120, 352, 12, 44, 197, 6}, - {33, 15, 13, 515, 117, 23, 700, 217, 134, 753, 0, 51, 153, 77, 141, 2, 4, 64, 196, 1, 3, 180, 10, 115, 5, 102, 6, 11, 22, 202, 165, 7}, - {15, 515, 700, 753, 33, 4, 77, 102, 1, 40, 13, 117, 11, 115, 134, 5, 21, 153, 23, 217, 3, 32, 2, 317, 120, 196, 180, 141, 51, 12, 59, 260}, - {15, 515, 700, 753, 13, 0, 1, 23, 2, 217, 51, 3, 4, 5, 8, 317, 115, 9, 341, 10, 202, 180, 6, 365, 7, 82, 457, 22, 120, 901, 33, 291}, - {7, 2, 135, 20, 97, 14, 66, 52, 337, 673, 192, 29, 43, 355, 353, 5, 16, 294, 107, 376, 147, 226, 331, 560, 64, 470, 222, 104, 415, 32, 4, 324}, - {195, 132, 142, 167, 146, 77, 363, 271, 121, 354, 202, 120, 647, 178, 786, 212, 687, 0, 101, 878, 16, 522, 60, 5, 450, 411, 35, 55, 98, 639, 259, 318}, - {202, 77, 20, 0, 318, 66, 104, 128, 102, 269, 177, 43, 33, 7, 216, 291, 494, 5, 2, 342, 74, 173, 97, 112, 450, 22, 337, 10, 234, 52, 64, 678}, - {107, 362, 612, 356, 359, 97, 414, 43, 259, 20, 392, 7, 298, 147, 819, 683, 465, 173, 729, 660, 319, 14, 5, 779, 581, 595, 246, 35, 501, 92, 0, 230}, - {6, 165, 14, 453, 13, 51, 19, 23, 386, 457, 74, 391, 308, 2, 26, 401, 47, 758, 603, 108, 719, 366, 1, 29, 309, 730, 324, 197, 133, 70, 115, 867}, - {179, 72, 205, 180, 247, 245, 4, 490, 352, 59, 317, 152, 79, 498, 94, 217, 148, 76, 752, 864, 11, 216, 141, 405, 89, 452, 197, 111, 497, 188, 37, 21}, - {107, 7, 298, 314, 14, 359, 32, 392, 232, 279, 172, 97, 60, 581, 387, 126, 121, 0, 534, 493, 356, 92, 441, 95, 13, 21, 35, 147, 22, 5, 16, 362}, - {156, 271, 354, 586, 360, 132, 591, 195, 121, 18, 340, 1, 5, 13, 21, 48, 668, 446, 23, 463, 296, 658, 60, 55, 407, 698, 146, 70, 626, 51, 163, 24}, - {13, 23, 51, 4, 0, 12, 457, 15, 11, 453, 2, 515, 5, 1, 99, 10, 115, 165, 700, 475, 401, 403, 3, 961, 40, 14, 37, 753, 719, 32, 64, 569}, - {48, 125, 21, 165, 13, 221, 23, 763, 423, 508, 197, 5, 98, 92, 193, 16, 441, 386, 64, 314, 293, 457, 391, 140, 49, 60, 102, 693, 683, 51, 35, 867}, - {202, 77, 120, 450, 5, 318, 1, 494, 0, 195, 18, 132, 523, 403, 326, 604, 354, 260, 121, 576, 203, 167, 234, 817, 682, 49, 35, 615, 21, 20, 13, 102}, - {39, 9, 166, 30, 0, 101, 158, 68, 404, 190, 333, 274, 252, 310, 88, 100, 49, 28, 344, 35, 21, 22, 419, 131, 438, 1, 16, 65, 530, 694, 124, 10}, - {15, 515, 700, 753, 110, 4, 1, 11, 165, 180, 93, 13, 82, 5, 2, 197, 33, 120, 0, 3, 10, 23, 21, 115, 901, 217, 341, 77, 317, 51, 32, 117}, - {2, 29, 1, 14, 6, 52, 5, 46, 50, 26, 70, 19, 103, 58, 38, 67, 96, 262, 516, 309, 218, 133, 108, 27, 75, 17, 112, 114, 24, 487, 331, 83}, - {120, 77, 15, 13, 1, 141, 260, 23, 515, 217, 110, 51, 137, 700, 317, 202, 165, 291, 180, 21, 753, 128, 0, 177, 326, 93, 450, 82, 64, 269, 197, 5}, - {255, 59, 554, 297, 183, 56, 33, 444, 108, 358, 123, 196, 269, 122, 77, 153, 57, 177, 117, 730, 19, 467, 605, 130, 128, 50, 275, 4, 291, 475, 134, 133}, - {13, 23, 51, 12, 153, 14, 117, 120, 165, 134, 99, 401, 38, 453, 15, 128, 197, 719, 64, 515, 475, 403, 37, 33, 196, 700, 40, 125, 5, 0, 54, 2}, - {64, 33, 174, 348, 95, 108, 467, 554, 56, 0, 25, 306, 233, 6, 63, 511, 343, 120, 13, 85, 29, 561, 543, 707, 319, 180, 899, 355, 77, 49, 256, 18}, - {120, 260, 51, 23, 77, 15, 202, 1, 93, 82, 141, 450, 13, 326, 515, 137, 21, 5, 64, 33, 110, 700, 128, 165, 318, 203, 269, 102, 351, 753, 197, 125}, - {15, 515, 700, 753, 4, 13, 11, 1, 5, 21, 23, 2, 33, 64, 3, 180, 32, 141, 22, 102, 77, 0, 10, 93, 82, 352, 117, 40, 341, 31, 165, 6}, - {15, 515, 700, 753, 341, 13, 23, 141, 33, 1, 0, 217, 4, 77, 180, 10, 82, 351, 51, 137, 5, 64, 9, 317, 21, 11, 102, 40, 260, 202, 854, 115}, - {105, 272, 131, 22, 327, 286, 28, 239, 320, 9, 109, 578, 219, 49, 98, 224, 95, 159, 538, 371, 616, 127, 187, 64, 713, 55, 0, 170, 168, 258, 716, 623}, - {16, 18, 68, 35, 24, 60, 71, 118, 92, 126, 0, 9, 101, 191, 7, 55, 154, 175, 212, 14, 167, 150, 302, 28, 375, 1, 107, 124, 346, 273, 21, 108}, - {20, 147, 43, 470, 376, 142, 904, 178, 427, 798, 0, 595, 198, 325, 858, 319, 61, 202, 173, 97, 5, 422, 14, 22, 107, 259, 32, 49, 887, 77, 414, 392}, - {13, 23, 51, 12, 33, 15, 99, 64, 128, 515, 453, 202, 117, 153, 37, 102, 700, 40, 134, 196, 120, 0, 2, 753, 141, 14, 38, 3, 82, 403, 77, 21}, - {383, 17, 62, 136, 84, 119, 56, 440, 3, 504, 240, 80, 378, 129, 123, 548, 106, 128, 4, 11, 14, 555, 162, 32, 184, 361, 59, 64, 205, 5, 469, 57}, - {70, 1, 48, 652, 5, 638, 846, 888, 21, 349, 269, 260, 340, 562, 767, 761, 163, 883, 774, 141, 125, 518, 591, 0, 23, 9, 87, 13, 371, 303, 622, 31}, - {66, 135, 6, 97, 74, 278, 69, 7, 14, 324, 267, 172, 2, 140, 462, 1, 357, 38, 808, 550, 92, 841, 189, 29, 16, 25, 298, 87, 75, 204, 24, 335}, - {51, 23, 33, 13, 102, 40, 12, 128, 64, 77, 10, 202, 0, 196, 117, 4, 14, 99, 134, 453, 65, 153, 11, 475, 139, 403, 22, 141, 86, 2, 21, 15}, - {88, 100, 264, 166, 274, 435, 772, 1, 382, 921, 96, 478, 30, 438, 639, 909, 897, 521, 190, 466, 960, 410, 9, 144, 530, 418, 31, 329, 265, 691, 778, 93}, - {62, 440, 136, 56, 84, 3, 504, 548, 555, 383, 4, 17, 129, 128, 507, 361, 123, 59, 119, 162, 14, 57, 152, 328, 161, 11, 202, 495, 184, 27, 80, 215}, - {911, 617, 332, 959, 206, 141, 253, 244, 282, 384, 110, 120, 10, 260, 352, 143, - 951, 811, 269, 373, 160, 417, 93, 531, 728, 203, 434, 940, 137, 55, 36, 717}, - {120, 15, 260, 141, 77, 1, 515, 82, 700, 351, 33, 23, 450, 13, 110, 326, 64, 217, 269, 753, 203, 137, 102, 5, 165, 21, 51, 291, 93, 177, 373, 128}, - {15, 515, 700, 753, 0, 1, 2, 23, 13, 51, 5, 9, 82, 901, 180, 8, 3, 4, 120, 6, 7, 141, 93, 12, 197, 341, 10, 33, 115, 730, 64, 125}, - {7, 104, 97, 107, 356, 232, 66, 560, 298, 289, 14, 707, 38, 568, 359, 64, 20, 0, 65, 324, 22, 214, 92, 32, 192, 5, 387, 43, 712, 90, 172, 95}, - {6, 1, 2, 66, 67, 14, 74, 24, 108, 29, 69, 83, 458, 7, 25, 38, 135, 103, 36, 150, 451, 114, 52, 594, 75, 65, 380, 18, 267, 602, 19, 278}, - {13, 23, 51, 12, 115, 21, 202, 5, 457, 15, 4, 1, 64, 719, 0, 403, 2, 3, 453, 165, 99, 141, 401, 128, 32, 515, 10, 37, 523, 197, 120, 700}, - {57, 59, 4, 11, 412, 381, 77, 53, 421, 291, 250, 368, 99, 14, 27, 369, 803, 283, 23, 108, 403, 19, 339, 210, 0, 401, 12, 444, 236, 40, 361, 736}, - {15, 515, 700, 1, 0, 753, 2, 13, 23, 5, 51, 180, 3, 115, 6, 7, 457, 4, 9, 8, 12, 82, 197, 165, 141, 901, 120, 719, 33, 64, 21, 22}, - {64, 95, 180, 247, 929, 146, 90, 126, 197, 32, 237, 60, 288, 165, 316, 92, 5, 13, 77, 7, 217, 955, 522, 22, 16, 314, 132, 4, 317, 10, 312, 86}, - {15, 1, 120, 13, 23, 515, 0, 51, 700, 180, 141, 2, 5, 202, 21, 260, 753, 165, 137, 33, 77, 110, 197, 128, 326, 7, 450, 4, 102, 9, 269, 12}, - {14, 2, 16, 46, 1, 7, 24, 69, 75, 35, 38, 50, 29, 220, 52, 140, 267, 67, 18, 54, 70, 309, 5, 60, 92, 189, 171, 87, 71, 163, 58, 0}, - {31, 98, 127, 44, 9, 299, 0, 276, 293, 284, 116, 49, 935, 599, 105, 22, 456, 201, 28, 1, 39, 125, 242, 137, 371, 144, 131, 492, 159, 272, 51, 395}, - {6, 27, 151, 53, 573, 445, 297, 113, 26, 73, 436, 19, 491, 250, 396, 315, 45, 112, 145, 58, 614, 881, 25, 34, 611, 200, 17, 80, 70, 5, 138, 631}, - {32, 693, 81, 788, 90, 804, 403, 56, 494, 21, 84, 397, 202, 65, 18, 77, 64, 681, 214, 725, 523, 784, 526, 33, 102, 825, 240, 0, 115, 241, 817, 91}, - {24, 7, 14, 2, 18, 16, 65, 0, 108, 149, 28, 69, 1, 71, 154, 36, 124, 35, 67, 140, 189, 429, 92, 68, 66, 22, 55, 118, 302, 150, 9, 6}, - {0, 68, 9, 35, 65, 101, 189, 212, 114, 67, 124, 69, 1, 154, 149, 39, 230, 64, 252, 16, 88, 702, 103, 100, 18, 336, 28, 329, 520, 83, 30, 755}, - {5, 2, 186, 29, 61, 45, 17, 1, 52, 48, 58, 171, 155, 227, 80, 209, 311, 21, 14, 46, 50, 106, 243, 513, 334, 502, 496, 38, 3, 6, 32, 592}, - {15, 515, 700, 753, 13, 1, 2, 0, 3, 4, 5, 23, 341, 11, 10, 33, 6, 51, 165, 117, 153, 7, 180, 12, 365, 901, 77, 569, 197, 115, 64, 9}, - {13, 15, 23, 515, 0, 51, 1, 700, 4, 2, 753, 10, 3, 5, 12, 77, 33, 961, 165, 457, 197, 11, 115, 9, 22, 102, 40, 403, 202, 21, 14, 59}, - {15, 515, 700, 753, 13, 0, 1, 23, 2, 33, 102, 5, 4, 10, 9, 3, 51, 115, 77, 7, 6, 341, 12, 11, 217, 40, 457, 196, 180, 165, 8, 523}, - {166, 39, 30, 274, 190, 100, 333, 438, 530, 310, 88, 252, 0, 9, 539, 265, 1, 656, 404, 101, 625, 131, 778, 254, 31, 455, 676, 329, 724, 158, 21, 23}, - {734, 148, 94, 308, 431, 115, 37, 89, 111, 413, 79, 468, 197, 629, 341, 474, 569, 12, 13, 873, 179, 401, 11, 4, 180, 23, 205, 72, 59, 365, 134, 51}, - {539, 228, 224, 219, 816, 190, 30, 258, 871, 840, 669, 93, 406, 530, 957, 187, 160, 531, 748, 137, 131, 88, 863, 36, 728, 839, 44, 213, 352, 116, 202, 466}, - {393, 791, 125, 801, 730, 551, 386, 23, 31, 175, 93, 98, 51, 13, 144, 788, 126, 203, 21, 345, 116, 22, 949, 110, 575, 165, 326, 44, 0, 4, 60, 221}, - {13, 23, 77, 141, 0, 4, 51, 2, 33, 115, 64, 1, 10, 3, 6, 15, 11, 102, 7, 217, 180, 40, 515, 22, 128, 177, 202, 9, 700, 269, 165, 5}, - {2, 29, 7, 70, 52, 14, 1, 58, 112, 46, 75, 5, 171, 163, 87, 220, 307, 151, 186, 334, 38, 66, 155, 16, 69, 135, 278, 45, 262, 97, 6, 21}, - {88, 321, 213, 100, 230, 435, 689, 466, 1, 382, 30, 352, 217, 699, 410, 96, 795, 36, 921, 752, 190, 141, 144, 180, 44, 831, 317, 83, 443, 31, 840, 251}, - {363, 411, 101, 520, 354, 9, 195, 668, 132, 156, 447, 1, 905, 364, 18, 23, 765, 664, 146, 5, 360, 13, 121, 96, 98, 31, 252, 39, 100, 759, 264, 551}, - {13, 23, 51, 730, 12, 719, 453, 457, 401, 475, 5, 21, 403, 2, 0, 1, 15, 4, 3, 899, 99, 32, 165, 11, 515, 308, 197, 115, 6, 961, 700, 523}, - {72, 76, 89, 12, 37, 4, 308, 179, 38, 528, 90, 431, 54, 205, 148, 184, 401, 57, 152, 474, 23, 59, 51, 245, 428, 11, 32, 99, 405, 316, 257, 21}, - {376, 20, 43, 147, 470, 173, 97, 595, 107, 319, 414, 142, 819, 5, 729, 178, 858, 7, 427, 32, 426, 104, 14, 0, 392, 362, 259, 61, 230, 77, 560, 246}, - {202, 141, 269, 494, 318, 137, 51, 128, 403, 4, 217, 96, 77, 5, 64, 177, 291, 180, 15, 352, 102, 10, 33, 349, 2, 317, 0, 341, 120, 515, 21, 453}, - {77, 202, 33, 128, 102, 318, 494, 269, 13, 0, 117, 23, 342, 291, 403, 15, 134, 51, 153, 141, 177, 515, 82, 137, 196, 700, 203, 64, 22, 351, 753, 4}, - {253, 110, 951, 352, 499, 811, 10, 854, 180, 638, 244, 559, 642, 752, 564, 8, 141, 143, 417, 341, 901, 260, 206, 197, 922, 661, 93, 15, 498, 373, 165, 911}, - {141, 13, 23, 180, 4, 217, 5, 1, 269, 317, 21, 0, 2, 202, 115, 51, 352, 77, 3, 197, 64, 341, 318, 15, 291, 9, 137, 93, 32, 165, 515, 33}, - {9, 0, 18, 252, 16, 101, 68, 39, 24, 118, 35, 109, 158, 329, 28, 167, 60, 364, 333, 265, 49, 100, 22, 419, 553, 55, 1, 677, 71, 7, 212, 159}, - {28, 109, 9, 39, 0, 158, 49, 22, 168, 35, 55, 175, 1, 65, 67, 185, 194, 159, 289, 95, 272, 114, 30, 105, 86, 584, 36, 169, 254, 2, 83, 24}, - {15, 515, 13, 700, 1, 753, 2, 23, 0, 3, 4, 5, 33, 341, 11, 51, 6, 10, 197, 115, 901, 180, 77, 40, 102, 12, 365, 165, 141, 217, 7, 317}, - {173, 693, 104, 422, 5, 18, 61, 32, 102, 0, 20, 13, 784, 560, 33, 66, 397, 526, 49, 207, 29, 25, 510, 707, 65, 6, 11, 344, 21, 263, 81, 77}, - {23, 13, 386, 51, 308, 801, 719, 221, 401, 949, 21, 730, 165, 421, 102, 115, 125, 33, 341, 670, 468, 117, 770, 1, 120, 6, 197, 14, 403, 97, 67, 958}, - {0, 49, 105, 16, 28, 24, 159, 9, 158, 320, 1, 68, 35, 239, 170, 18, 109, 7, 55, 65, 2, 95, 301, 124, 347, 14, 21, 154, 22, 127, 286, 31}, - {2, 5, 1, 207, 45, 29, 32, 58, 76, 61, 6, 263, 292, 655, 72, 14, 17, 476, 7, 119, 52, 306, 70, 64, 21, 90, 186, 214, 106, 38, 3, 790}, - {21, 6, 125, 49, 13, 64, 715, 66, 115, 95, 197, 33, 22, 32, 204, 165, 56, 278, 0, 408, 241, 120, 4, 808, 681, 350, 263, 85, 81, 571, 135, 509}, - {612, 427, 325, 107, 202, 5, 376, 49, 64, 392, 403, 470, 21, 147, 31, 788, 494, 14, 362, 465, 858, 98, 20, 804, 518, 43, 845, 318, 125, 97, 725, 534}, - {32, 21, 76, 72, 2, 1, 14, 5, 241, 449, 89, 38, 350, 221, 155, 48, 50, 292, 37, 46, 45, 90, 270, 54, 17, 179, 214, 12, 148, 430, 476, 413}, - {24, 0, 28, 16, 7, 124, 35, 154, 14, 149, 65, 18, 9, 68, 55, 108, 175, 71, 2, 1, 22, 109, 92, 67, 484, 336, 118, 69, 302, 398, 570, 420}, - {1, 5, 14, 2, 48, 50, 38, 67, 46, 21, 0, 54, 45, 270, 281, 12, 24, 32, 155, 96, 513, 103, 290, 83, 61, 58, 36, 17, 37, 72, 69, 181}, - {13, 961, 569, 197, 37, 15, 23, 474, 515, 94, 148, 111, 12, 165, 629, 341, 700, 79, 901, 401, 51, 405, 753, 10, 134, 4, 115, 734, 873, 11, 89, 117}, - {33, 23, 102, 51, 13, 40, 77, 128, 64, 202, 141, 15, 4, 12, 0, 1, 2, 117, 22, 11, 10, 403, 153, 515, 99, 318, 137, 269, 139, 196, 700, 134}, - {0, 1, 24, 67, 9, 16, 18, 35, 28, 69, 103, 50, 5, 2, 65, 12, 83, 68, 7, 96, 14, 22, 21, 149, 75, 114, 13, 133, 23, 71, 218, 54}, - {384, 617, 940, 332, 855, 911, 206, 959, 434, 282, 141, 10, 93, 253, 244, 110, 144, 268, 120, 36, 352, 137, 417, 203, 116, 31, 44, 269, 160, 201, 143, 951}, - {30, 93, 473, 137, 31, 704, 450, 652, 190, 203, 800, 254, 166, 274, 326, 144, 269, 160, 127, 303, 120, 625, 88, 848, 110, 435, 77, 521, 349, 131, 340, 744}, - {53, 27, 73, 26, 19, 250, 297, 200, 25, 630, 17, 6, 611, 122, 34, 42, 714, 235, 472, 65, 436, 14, 80, 684, 690, 106, 45, 113, 680, 108, 64, 4}, - {15, 515, 1, 2, 700, 0, 753, 3, 5, 141, 180, 4, 13, 77, 33, 10, 217, 6, 7, 134, 11, 352, 197, 64, 165, 341, 317, 23, 12, 115, 102, 40}, - {254, 530, 39, 613, 688, 221, 30, 31, 438, 190, 228, 960, 1, 44, 141, 21, 180, 406, 23, 166, 9, 202, 13, 96, 137, 48, 131, 829, 317, 269, 393, 51}, - {9, 39, 28, 35, 30, 166, 158, 36, 0, 175, 101, 346, 364, 67, 49, 68, 168, 420, 88, 1, 194, 131, 100, 352, 55, 83, 190, 64, 137, 570, 86, 65}, - {62, 56, 3, 548, 555, 507, 440, 161, 34, 4, 215, 136, 162, 514, 361, 527, 17, 14, 211, 130, 328, 11, 383, 123, 84, 183, 38, 57, 184, 152, 205, 494}, - {92, 126, 107, 7, 356, 493, 97, 279, 359, 298, 16, 246, 35, 60, 14, 441, 362, 121, 43, 423, 5, 132, 392, 20, 508, 230, 199, 146, 232, 173, 150, 414}, - {15, 82, 141, 515, 291, 922, 349, 700, 217, 260, 372, 120, 351, 93, 77, 753, 318, 352, 373, 854, 1, 326, 269, 21, 13, 102, 144, 202, 64, 23, 203, 137}, - {141, 217, 352, 115, 180, 13, 269, 317, 752, 77, 23, 21, 341, 197, 5, 372, 244, 291, 9, 64, 51, 102, 4, 1, 365, 2, 165, 33, 3, 48, 237, 351}, - {78, 47, 390, 19, 130, 453, 108, 27, 711, 813, 730, 444, 412, 283, 196, 690, 123, 14, 128, 26, 250, 389, 650, 236, 200, 65, 51, 4, 34, 183, 297, 73}, - {34, 250, 297, 80, 472, 64, 495, 17, 311, 3, 148, 45, 667, 61, 176, 53, 243, 27, 90, 161, 469, 141, 483, 151, 62, 128, 29, 4, 58, 56, 5, 231}, - {51, 23, 33, 13, 551, 77, 102, 326, 421, 21, 523, 120, 5, 899, 453, 692, 202, 153, 308, 615, 115, 958, 450, 401, 791, 68, 221, 93, 475, 18, 403, 4}, - {98, 223, 393, 363, 411, 1, 478, 834, 664, 156, 284, 691, 447, 791, 914, 293, 354, 724, 697, 9, 807, 541, 759, 51, 18, 421, 48, 264, 948, 586, 195, 848}, - {7, 14, 107, 232, 16, 92, 2, 60, 46, 5, 359, 121, 24, 526, 220, 620, 135, 1, 172, 21, 126, 314, 132, 77, 18, 75, 32, 278, 12, 23, 52, 38}, - {32, 76, 2, 1, 21, 72, 241, 14, 5, 48, 292, 89, 476, 45, 720, 270, 179, 90, 17, 214, 148, 38, 50, 29, 129, 155, 350, 46, 290, 227, 123, 464}, - {15, 515, 700, 753, 13, 23, 33, 77, 51, 4, 102, 0, 32, 202, 1, 11, 128, 82, 117, 141, 40, 5, 110, 8, 3, 90, 137, 21, 10, 318, 403, 165}, - {66, 6, 69, 2, 1, 74, 14, 135, 278, 267, 380, 24, 29, 97, 67, 38, 103, 75, 7, 388, 324, 25, 52, 150, 87, 83, 189, 357, 335, 108, 204, 172}, - {152, 4, 339, 59, 79, 471, 188, 11, 77, 94, 128, 33, 529, 377, 12, 111, 102, 202, 452, 402, 216, 99, 13, 542, 51, 40, 474, 37, 64, 291, 23, 961}, - {15, 515, 700, 753, 1, 0, 196, 13, 33, 2, 77, 5, 23, 102, 3, 10, 9, 7, 217, 4, 6, 153, 117, 177, 14, 457, 115, 12, 40, 730, 11, 134}, - {17, 209, 45, 106, 207, 5, 255, 119, 62, 2, 61, 3, 263, 742, 306, 655, 425, 378, 32, 56, 29, 136, 84, 80, 311, 58, 186, 240, 243, 383, 14, 21}, - {120, 260, 450, 15, 1, 23, 817, 13, 515, 523, 326, 5, 700, 51, 82, 31, 202, 64, 21, 753, 318, 93, 32, 269, 98, 33, 351, 77, 102, 125, 457, 165}, - {116, 492, 268, 93, 23, 206, 203, 0, 551, 918, 13, 51, 8, 22, 417, 940, 120, 10, 499, 31, 949, 791, 125, 523, 165, 473, 341, 730, 421, 959, 401, 391}, - {15, 515, 700, 753, 165, 13, 0, 1, 197, 23, 4, 82, 120, 2, 180, 12, 260, 719, 8, 3, 386, 117, 5, 523, 901, 11, 341, 51, 10, 9, 141, 351}, - {14, 24, 69, 7, 2, 66, 108, 1, 67, 6, 36, 398, 18, 267, 150, 97, 29, 38, 83, 149, 65, 74, 28, 0, 189, 71, 388, 16, 273, 124, 46, 22}, - {330, 96, 523, 335, 367, 662, 141, 839, 1, 922, 372, 615, 244, 717, 269, 443, 418, 352, 403, 692, 217, 854, 752, 180, 36, 64, 498, 576, 349, 201, 98, 284}, - {184, 90, 257, 205, 245, 229, 57, 152, 769, 17, 524, 5, 32, 497, 45, 432, 619, 2, 452, 266, 4, 106, 1, 21, 179, 59, 76, 3, 460, 292, 381, 128}, - {7, 14, 16, 2, 46, 5, 70, 107, 87, 13, 58, 307, 92, 32, 38, 23, 202, 0, 172, 24, 18, 21, 60, 128, 77, 35, 20, 10, 9, 4, 171, 112}, - {7, 66, 140, 16, 14, 92, 97, 69, 267, 172, 189, 24, 380, 2, 35, 60, 298, 451, 230, 135, 314, 74, 150, 71, 38, 357, 6, 330, 67, 423, 21, 443}, - {121, 167, 354, 132, 18, 446, 147, 101, 212, 146, 407, 16, 55, 35, 647, 191, 20, 271, 199, 68, 60, 259, 463, 107, 9, 126, 363, 7, 195, 43, 14, 411}, - {76, 90, 179, 32, 205, 21, 184, 460, 257, 288, 45, 245, 316, 5, 57, 152, 241, 2, 358, 1, 229, 72, 524, 148, 48, 769, 17, 4, 12, 38, 14, 720}, - {147, 259, 178, 878, 427, 465, 581, 198, 786, 798, 142, 534, 325, 929, 20, 362, 35, 132, 107, 376, 43, 5, 279, 77, 49, 146, 70, 202, 590, 771, 33, 14}, - {473, 93, 450, 778, 141, 30, 855, 466, 144, 203, 330, 530, 88, 523, 459, 372, 201, 617, 839, 704, 254, 321, 934, 326, 39, 36, 82, 717, 332, 213, 559, 403}, - {523, 475, 51, 899, 730, 453, 23, 719, 403, 33, 457, 13, 421, 386, 4, 120, 117, 196, 102, 153, 15, 801, 450, 817, 515, 260, 202, 11, 700, 99, 165, 125}, - {15, 1, 13, 515, 0, 2, 700, 5, 23, 753, 4, 3, 341, 317, 10, 115, 180, 11, 33, 64, 217, 77, 117, 165, 197, 7, 6, 365, 9, 141, 102, 134}, - {19, 4, 119, 40, 33, 202, 27, 84, 102, 56, 77, 73, 504, 485, 26, 494, 757, 63, 862, 59, 23, 300, 25, 12, 128, 11, 5, 13, 342, 880, 469, 6}, - {32, 20, 2, 13, 5, 21, 23, 6, 12, 38, 43, 29, 64, 7, 95, 51, 61, 207, 48, 147, 90, 178, 17, 182, 49, 0, 115, 202, 52, 362, 37, 22}, - {339, 188, 11, 79, 4, 94, 377, 12, 99, 111, 542, 102, 37, 33, 474, 51, 471, 40, 453, 152, 77, 13, 59, 403, 342, 23, 117, 57, 475, 134, 128, 38}, - {34, 128, 283, 176, 495, 231, 318, 432, 503, 275, 529, 527, 161, 53, 3, 202, 56, 291, 585, 469, 73, 17, 14, 412, 57, 27, 80, 245, 250, 381, 402, 51}, - {15, 515, 13, 700, 1, 217, 141, 120, 23, 180, 753, 115, 365, 51, 317, 341, 77, 260, 0, 291, 110, 137, 202, 5, 21, 269, 64, 36, 349, 2, 4, 10}, - {13, 15, 961, 515, 700, 753, 4, 12, 2, 457, 3, 11, 197, 51, 37, 569, 115, 23, 5, 0, 99, 10, 1, 134, 6, 111, 165, 33, 72, 40, 38, 79}, - {15, 515, 700, 753, 13, 1, 0, 2, 23, 33, 5, 3, 10, 4, 9, 115, 7, 102, 6, 51, 12, 217, 77, 11, 40, 457, 569, 341, 117, 317, 14, 719}, - {5, 76, 2, 32, 292, 214, 45, 1, 129, 519, 123, 179, 90, 710, 17, 29, 460, 72, 14, 207, 21, 249, 58, 205, 464, 263, 618, 48, 6, 245, 3, 257}, - {72, 76, 32, 4, 21, 12, 38, 23, 99, 54, 89, 3, 14, 17, 51, 57, 11, 90, 13, 488, 179, 2, 59, 148, 45, 37, 5, 115, 401, 1, 10, 421}, - {98, 223, 393, 1, 834, 264, 284, 791, 724, 293, 478, 772, 697, 909, 363, 682, 905, 447, 541, 821, 411, 51, 421, 9, 807, 48, 765, 31, 730, 96, 386, 410}, - {341, 13, 509, 8, 23, 638, 165, 901, 762, 10, 569, 242, 391, 197, 873, 642, 506, 499, 629, 961, 15, 180, 116, 456, 206, 546, 417, 1, 338, 457, 515, 867}, - {1, 2, 5, 50, 14, 38, 46, 114, 0, 36, 29, 22, 218, 65, 86, 96, 137, 21, 133, 285, 12, 10, 323, 181, 17, 58, 51, 23, 67, 7, 28, 6}, - {481, 878, 202, 13, 5, 23, 182, 32, 269, 21, 1, 318, 77, 142, 557, 494, 141, 33, 640, 137, 70, 291, 2, 51, 260, 415, 929, 403, 120, 58, 4, 259}, - {15, 515, 700, 753, 1, 4, 13, 0, 2, 5, 341, 3, 11, 180, 134, 12, 10, 317, 197, 365, 33, 21, 23, 165, 117, 6, 77, 7, 217, 37, 32, 498}, - {25, 119, 19, 6, 26, 42, 27, 17, 4, 790, 45, 814, 2, 469, 483, 84, 122, 1, 0, 33, 32, 128, 76, 80, 611, 113, 73, 56, 5, 240, 202, 77}, - {14, 2, 7, 1, 24, 0, 65, 6, 16, 69, 67, 22, 124, 28, 108, 5, 18, 36, 86, 10, 38, 46, 66, 398, 289, 168, 12, 83, 21, 23, 610, 13}, - {51, 23, 128, 13, 15, 202, 12, 120, 33, 64, 141, 82, 10, 515, 0, 403, 700, 3, 1, 99, 117, 269, 153, 165, 753, 5, 318, 197, 102, 260, 2, 137}, - {16, 35, 24, 0, 9, 18, 7, 1, 68, 69, 50, 71, 103, 65, 67, 189, 133, 23, 28, 13, 60, 537, 149, 335, 75, 21, 64, 5, 114, 2, 12, 14}, - {754, 803, 133, 576, 880, 543, 2, 1, 657, 50, 14, 38, 46, 5, 29, 67, 218, 36, 58, 171, 52, 96, 24, 103, 775, 0, 114, 83, 181, 54, 65, 45}, - {21, 32, 5, 3, 2, 17, 14, 72, 76, 1, 12, 23, 38, 51, 4, 54, 10, 0, 89, 13, 99, 137, 45, 36, 421, 115, 543, 11, 22, 128, 221, 48}, - {434, 384, 268, 144, 855, 940, 617, 206, 332, 116, 93, 911, 959, 282, 203, 137, 141, 489, 44, 120, 10, 110, 244, 36, 98, 31, 269, 253, 367, 417, 160, 9}, - {15, 2, 1, 0, 13, 515, 5, 700, 3, 23, 180, 217, 141, 10, 753, 4, 117, 6, 77, 33, 64, 7, 11, 197, 352, 317, 341, 134, 165, 115, 12, 9}, - {2, 113, 6, 25, 1, 0, 29, 4, 7, 833, 5, 45, 32, 61, 128, 19, 77, 151, 74, 145, 64, 42, 14, 210, 655, 106, 59, 177, 27, 17, 21, 738}, - {116, 268, 918, 203, 551, 31, 8, 692, 206, 791, 403, 499, 417, 93, 940, 421, 0, 23, 22, 120, 13, 523, 44, 51, 299, 473, 959, 1, 10, 475, 202, 125}, - {107, 126, 132, 612, 362, 279, 20, 146, 259, 493, 199, 121, 590, 43, 660, 147, 35, 376, 939, 60, 941, 534, 683, 5, 0, 953, 16, 7, 49, 649, 595, 470}, - {15, 515, 700, 753, 13, 1, 0, 23, 2, 33, 77, 4, 3, 51, 5, 102, 115, 10, 9, 341, 6, 7, 11, 342, 217, 12, 120, 180, 40, 317, 141, 8}, - {53, 27, 17, 161, 469, 378, 73, 527, 19, 136, 383, 250, 495, 56, 862, 26, 62, 84, 80, 106, 200, 4, 34, 14, 440, 297, 3, 128, 585, 5, 129, 123}, - {17, 45, 209, 106, 5, 207, 243, 454, 119, 255, 2, 263, 186, 290, 29, 3, 21, 62, 425, 61, 84, 32, 58, 56, 48, 408, 655, 136, 306, 14, 742, 227}, - {4, 152, 59, 452, 128, 79, 216, 11, 339, 471, 529, 188, 94, 77, 202, 12, 291, 33, 318, 377, 99, 51, 23, 5, 402, 349, 32, 474, 102, 13, 205, 111}, - {15, 515, 700, 753, 1, 0, 2, 13, 3, 5, 23, 4, 180, 51, 115, 9, 6, 12, 7, 8, 197, 33, 10, 961, 901, 77, 141, 752, 110, 22, 120, 341}, - {951, 752, 638, 811, 351, 642, 180, 253, 10, 341, 197, 901, 110, 873, 8, 244, 15, 352, 165, 898, 143, 515, 564, 762, 499, 55, 365, 700, 82, 753, 141, 854}, - {6, 262, 197, 350, 74, 26, 115, 509, 841, 583, 165, 38, 21, 13, 47, 50, 235, 19, 33, 324, 453, 4, 308, 196, 138, 99, 64, 903, 675, 1, 223, 130}, - {125, 165, 391, 23, 386, 221, 21, 13, 558, 457, 51, 867, 197, 115, 401, 758, 77, 97, 308, 791, 7, 180, 48, 120, 963, 451, 743, 89, 603, 134, 403, 450}, - {1, 14, 2, 5, 16, 46, 7, 38, 58, 24, 50, 0, 69, 48, 35, 67, 54, 18, 12, 75, 21, 45, 513, 155, 430, 37, 270, 9, 61, 163, 223, 32}, - {23, 13, 51, 0, 12, 15, 4, 1, 115, 2, 515, 453, 10, 457, 5, 3, 202, 21, 165, 700, 403, 11, 37, 64, 77, 401, 9, 197, 753, 59, 475, 99}, - {129, 84, 17, 56, 27, 495, 19, 548, 80, 123, 162, 378, 3, 504, 161, 469, 618, 73, 40, 53, 4, 26, 205, 184, 106, 183, 62, 6, 257, 128, 862, 12}, - {28, 9, 22, 49, 109, 1, 67, 0, 39, 55, 168, 158, 83, 36, 35, 86, 420, 194, 185, 159, 95, 105, 69, 208, 272, 103, 50, 114, 2, 254, 169, 30}, - {242, 391, 8, 456, 116, 13, 23, 492, 341, 165, 867, 51, 499, 457, 479, 638, 338, 509, 719, 10, 1, 642, 417, 762, 401, 93, 206, 268, 901, 569, 22, 197}, - {211, 162, 248, 130, 57, 4, 41, 556, 507, 266, 183, 152, 305, 361, 11, 129, 62, 229, 38, 471, 514, 313, 157, 300, 377, 3, 440, 128, 123, 328, 339, 59}, - {7, 92, 97, 16, 298, 140, 60, 126, 14, 35, 279, 314, 232, 246, 43, 230, 508, 173, 71, 107, 423, 24, 150, 779, 20, 189, 66, 18, 607, 21, 0, 653}, - {15, 515, 700, 753, 1, 0, 2, 13, 23, 5, 3, 180, 51, 901, 6, 4, 7, 12, 9, 115, 8, 457, 165, 82, 120, 197, 10, 64, 141, 341, 22, 117}, - {0, 18, 403, 25, 523, 74, 6, 24, 42, 91, 22, 102, 13, 51, 49, 193, 475, 681, 95, 85, 730, 64, 899, 397, 273, 750, 247, 673, 32, 805, 757, 288}, - {56, 0, 18, 65, 33, 554, 84, 343, 64, 6, 90, 561, 22, 19, 899, 108, 27, 63, 289, 475, 240, 467, 370, 32, 233, 214, 24, 123, 95, 287, 28, 194}, - {31, 98, 127, 9, 0, 44, 293, 105, 395, 299, 49, 242, 28, 22, 599, 116, 1, 284, 276, 125, 456, 685, 763, 159, 272, 623, 23, 935, 393, 144, 201, 137}, - {1, 5, 2, 14, 38, 46, 50, 48, 21, 7, 58, 45, 270, 61, 155, 171, 0, 290, 69, 32, 29, 54, 67, 16, 24, 666, 663, 17, 37, 75, 502, 52}, - {23, 51, 13, 453, 457, 12, 719, 4, 15, 99, 401, 2, 961, 3, 11, 730, 475, 515, 0, 1, 165, 115, 629, 700, 14, 17, 403, 40, 5, 33, 37, 64}, - {968, 967, 966, 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, - 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937}, - {2, 1, 14, 29, 67, 103, 6, 46, 52, 75, 24, 133, 38, 218, 83, 309, 36, 108, 70, 114, 96, 5, 238, 74, 25, 26, 220, 236, 65, 50, 69, 87}, - {7, 71, 16, 92, 24, 60, 14, 97, 150, 140, 35, 189, 149, 298, 18, 230, 43, 508, 2, 423, 69, 0, 38, 314, 66, 279, 399, 517, 251, 20, 232, 273}, - {23, 1, 120, 51, 13, 202, 77, 141, 260, 21, 15, 5, 128, 82, 2, 450, 269, 165, 102, 318, 48, 32, 137, 515, 125, 64, 12, 115, 351, 180, 33, 7}, - {77, 13, 33, 23, 64, 51, 4, 102, 141, 128, 40, 1, 2, 202, 0, 6, 177, 115, 137, 15, 59, 10, 11, 7, 269, 22, 515, 180, 318, 3, 700, 95}, - {101, 9, 18, 363, 264, 520, 411, 604, 676, 682, 905, 271, 16, 821, 167, 0, 621, 364, 39, 100, 121, 118, 166, 781, 647, 252, 1, 848, 447, 265, 404, 60}, - {144, 203, 326, 382, 166, 418, 93, 88, 96, 822, 1, 141, 859, 77, 744, 438, 110, 269, 921, 367, 521, 274, 100, 39, 494, 120, 403, 473, 217, 576, 13, 291}, - {13, 21, 180, 125, 5, 23, 191, 32, 18, 16, 146, 199, 115, 24, 165, 118, 0, 225, 22, 1, 60, 197, 64, 901, 375, 241, 48, 12, 408, 71, 522, 818}, - {15, 515, 700, 753, 13, 0, 23, 8, 1, 51, 82, 102, 2, 33, 4, 9, 180, 165, 5, 77, 10, 110, 12, 197, 120, 260, 18, 326, 351, 403, 22, 457}, - {33, 77, 102, 64, 13, 23, 128, 51, 141, 202, 1, 40, 0, 2, 117, 10, 15, 4, 6, 318, 269, 134, 22, 515, 180, 115, 177, 153, 137, 196, 3, 700}, - {174, 544, 104, 525, 74, 0, 151, 25, 6, 624, 29, 66, 2, 636, 81, 45, 204, 177, 64, 416, 7, 644, 5, 138, 222, 319, 355, 77, 22, 122, 789, 216}, - {141, 304, 372, 352, 291, 947, 177, 269, 128, 954, 77, 349, 217, 202, 64, 318, 498, 437, 102, 864, 86, 13, 115, 180, 137, 5, 210, 197, 32, 950, 678, 7}, - {161, 200, 53, 17, 714, 27, 34, 73, 472, 62, 585, 56, 440, 383, 136, 78, 527, 19, 4, 3, 106, 361, 14, 250, 80, 514, 377, 84, 322, 390, 862, 548}, - {32, 76, 72, 21, 38, 14, 89, 54, 12, 37, 2, 241, 5, 428, 17, 1, 181, 221, 350, 45, 3, 4, 449, 90, 148, 179, 99, 292, 794, 770, 477, 46}, - {33, 23, 128, 64, 141, 13, 77, 51, 102, 202, 2, 15, 1, 3, 40, 10, 5, 153, 269, 515, 165, 0, 117, 196, 180, 318, 6, 700, 137, 134, 120, 22}, - {96, 137, 30, 0, 9, 39, 840, 202, 669, 406, 141, 530, 613, 1, 180, 88, 22, 160, 679, 576, 28, 403, 31, 219, 49, 228, 829, 100, 36, 15, 10, 856}, - {180, 141, 352, 1, 15, 752, 115, 0, 217, 365, 2, 515, 13, 901, 341, 317, 23, 4, 197, 700, 269, 5, 3, 31, 753, 244, 21, 165, 253, 202, 51, 44}, - {1, 2, 67, 0, 28, 50, 83, 65, 14, 46, 103, 114, 24, 38, 36, 9, 69, 5, 18, 7, 22, 133, 55, 218, 16, 124, 29, 54, 96, 160, 12, 480}, - {180, 115, 352, 317, 365, 217, 752, 901, 141, 15, 341, 1, 515, 253, 700, 0, 753, 873, 2, 197, 31, 137, 165, 244, 4, 120, 160, 44, 98, 5, 202, 3}, - {5, 32, 347, 49, 13, 21, 95, 713, 23, 1, 77, 33, 60, 64, 107, 4, 126, 928, 296, 850, 0, 241, 197, 102, 652, 195, 180, 534, 165, 153, 379, 10}, - {341, 180, 365, 901, 317, 115, 15, 752, 515, 700, 217, 873, 753, 82, 0, 110, 197, 141, 951, 165, 1, 564, 13, 351, 253, 12, 10, 3, 2, 4, 308, 244}, - {17, 45, 21, 3, 106, 5, 155, 38, 227, 32, 2, 209, 62, 54, 12, 243, 14, 181, 552, 587, 46, 540, 207, 794, 37, 48, 430, 119, 255, 221, 770, 29}, - {16, 24, 35, 18, 7, 0, 50, 1, 9, 14, 75, 69, 2, 5, 12, 21, 60, 13, 67, 71, 23, 48, 10, 108, 223, 181, 189, 103, 46, 64, 92, 51}, - {127, 13, 98, 165, 308, 23, 286, 293, 258, 51, 219, 395, 197, 115, 301, 401, 31, 391, 22, 105, 457, 170, 239, 276, 55, 338, 629, 116, 180, 479, 509, 569}, - {539, 213, 748, 840, 957, 669, 30, 466, 88, 217, 144, 251, 863, 190, 137, 93, - 230, 228, 679, 352, 317, 203, 617, 321, 258, 530, 160, 219, 96, 831, 816, 689}, - {5, 48, 1, 21, 2, 14, 0, 36, 12, 38, 32, 54, 430, 181, 50, 270, 72, 99, 281, 45, 17, 10, 46, 22, 37, 218, 67, 3, 290, 76, 23, 51}, - {13, 23, 0, 4, 33, 51, 2, 115, 141, 1, 77, 217, 180, 10, 9, 317, 3, 102, 11, 5, 15, 197, 7, 202, 22, 165, 40, 64, 515, 6, 341, 31}, - {13, 15, 117, 515, 23, 12, 37, 134, 165, 700, 38, 54, 457, 753, 51, 64, 153, 197, 14, 10, 33, 82, 961, 0, 99, 89, 115, 719, 141, 3, 4, 1}, - {5, 21, 2, 3, 1, 32, 14, 12, 48, 17, 0, 10, 51, 23, 38, 22, 4, 72, 13, 54, 36, 45, 137, 76, 99, 114, 86, 37, 11, 64, 540, 430}, - {202, 128, 77, 318, 291, 33, 269, 102, 275, 141, 494, 342, 40, 678, 0, 177, 20, 210, 402, 7, 4, 5, 137, 6, 13, 450, 403, 32, 49, 120, 23, 22}, - {1, 2, 24, 14, 67, 46, 69, 50, 38, 103, 16, 18, 75, 35, 83, 29, 52, 96, 5, 108, 0, 7, 54, 71, 149, 394, 236, 309, 70, 133, 220, 58}, - {15, 515, 1, 700, 0, 2, 753, 13, 23, 5, 180, 3, 51, 4, 165, 457, 12, 197, 115, 6, 7, 21, 9, 141, 8, 901, 33, 82, 120, 77, 10, 110}, - {0, 28, 65, 14, 67, 2, 124, 24, 1, 9, 7, 69, 55, 154, 36, 16, 46, 114, 175, 35, 83, 22, 429, 18, 109, 149, 68, 189, 108, 336, 251, 133}, - {56, 162, 403, 3, 129, 775, 99, 161, 17, 40, 527, 33, 880, 4, 14, 128, 475, 12, 548, 23, 102, 202, 361, 117, 34, 184, 383, 200, 183, 196, 64, 53}, - {151, 2, 29, 58, 112, 45, 186, 113, 5, 70, 52, 1, 311, 6, 315, 66, 61, 7, 74, 27, 631, 17, 80, 87, 287, 243, 209, 227, 14, 491, 19, 869}, - {6, 1, 74, 2, 75, 29, 25, 66, 26, 70, 52, 138, 67, 324, 357, 42, 19, 220, 14, 85, 87, 108, 38, 451, 309, 103, 24, 69, 380, 135, 114, 65}, - {15, 515, 700, 13, 23, 0, 1, 120, 753, 51, 180, 2, 260, 202, 5, 141, 77, 102, 9, 450, 115, 21, 197, 165, 7, 137, 110, 33, 12, 269, 901, 4}, - {5, 45, 17, 2, 14, 46, 48, 38, 181, 50, 155, 3, 186, 54, 61, 29, 21, 227, 281, 80, 540, 106, 12, 400, 52, 1, 58, 32, 328, 171, 209, 487}, - {16, 18, 265, 121, 158, 35, 60, 9, 39, 7, 329, 105, 252, 68, 24, 1, 132, 167, 159, 22, 0, 49, 286, 101, 21, 146, 23, 327, 120, 709, 5, 14}, - {108, 467, 283, 56, 389, 650, 123, 412, 33, 177, 899, 475, 216, 453, 269, 349, 619, 65, 51, 730, 403, 670, 23, 196, 523, 128, 84, 13, 401, 789, 503, 543}, - {514, 3, 11, 377, 328, 4, 361, 507, 57, 403, 14, 880, 130, 485, 176, 215, 236, 38, 152, 102, 211, 56, 62, 757, 54, 585, 300, 556, 34, 555, 40, 229}, - {3, 555, 62, 266, 130, 99, 507, 139, 514, 12, 152, 229, 215, 305, 57, 40, 440, 33, 403, 471, 38, 56, 475, 14, 361, 313, 775, 328, 196, 548, 123, 23}, - {120, 202, 318, 15, 77, 13, 1, 450, 33, 269, 515, 260, 5, 128, 494, 51, 23, 700, 102, 141, 40, 753, 326, 403, 817, 137, 523, 21, 177, 922, 342, 7}, - {15, 1, 515, 23, 0, 13, 700, 2, 51, 753, 180, 5, 165, 21, 197, 12, 3, 120, 115, 4, 141, 6, 9, 7, 457, 33, 386, 202, 82, 8, 31, 341}, - {15, 180, 515, 82, 351, 700, 10, 317, 753, 115, 217, 365, 141, 898, 33, 901, 13, 23, 110, 854, 752, 77, 1, 197, 4, 341, 143, 36, 64, 352, 102, 9}, - {104, 289, 66, 707, 214, 90, 712, 64, 97, 173, 20, 0, 414, 194, 874, 43, 32, 7, 568, 560, 65, 38, 426, 312, 715, 192, 376, 74, 835, 5, 324, 147}, - {84, 56, 0, 554, 63, 65, 453, 249, 123, 643, 18, 26, 847, 475, 511, 403, 416, 561, 524, 289, 370, 73, 9, 19, 45, 42, 719, 194, 27, 467, 33, 730}, - {21, 346, 13, 350, 308, 826, 197, 101, 352, 68, 570, 0, 165, 23, 9, 841, 115, 100, 509, 694, 221, 230, 35, 217, 569, 88, 124, 749, 1, 777, 212, 154}, - {16, 92, 7, 24, 60, 18, 35, 140, 126, 14, 50, 71, 46, 330, 2, 75, 246, 5, 121, 267, 571, 1, 230, 309, 220, 0, 9, 64, 146, 236, 54, 108}, - {82, 15, 515, 898, 365, 700, 180, 33, 341, 753, 77, 901, 10, 115, 55, 351, 21, 5, 1, 4, 13, 102, 36, 217, 2, 165, 752, 120, 197, 117, 11, 317}, - {16, 24, 35, 18, 69, 71, 140, 1, 103, 7, 189, 68, 0, 50, 9, 108, 2, 133, 60, 267, 230, 46, 149, 67, 167, 118, 92, 14, 75, 21, 191, 38}, - {60, 71, 16, 18, 7, 20, 43, 118, 35, 68, 375, 28, 608, 0, 175, 566, 154, 92, 14, 149, 628, 33, 22, 13, 2, 10, 279, 23, 107, 356, 55, 117}, - {187, 258, 871, 295, 201, 434, 219, 224, 489, 384, 268, 110, 261, 839, 44, 699, - 93, 116, 36, 131, 141, 228, 144, 160, 940, 567, 244, 406, 137, 574, 98, 253}, - {66, 7, 97, 172, 192, 712, 232, 324, 204, 74, 43, 448, 387, 426, 568, 20, 526, 107, 104, 135, 356, 729, 173, 0, 22, 5, 32, 95, 2, 64, 500, 560}, - {15, 515, 700, 753, 1, 4, 0, 341, 13, 3, 134, 2, 5, 33, 11, 77, 12, 10, 23, 197, 365, 901, 7, 40, 217, 32, 21, 6, 51, 180, 961, 37}, - {0, 28, 24, 9, 35, 65, 16, 124, 68, 55, 109, 154, 7, 39, 22, 149, 158, 14, 175, 1, 49, 252, 18, 71, 2, 168, 289, 419, 108, 420, 67, 101}, - {7, 16, 14, 92, 2, 46, 140, 24, 220, 35, 38, 60, 75, 1, 50, 18, 87, 54, 5, 126, 29, 52, 278, 262, 314, 107, 71, 21, 172, 135, 330, 394}, - {7, 92, 16, 14, 172, 126, 2, 60, 140, 35, 135, 314, 278, 46, 24, 38, 232, 107, 330, 66, 5, 18, 150, 246, 230, 97, 52, 1, 121, 563, 279, 21}, - {6, 26, 235, 53, 297, 436, 27, 19, 25, 73, 113, 445, 90, 214, 65, 42, 64, 289, 250, 611, 624, 32, 45, 648, 614, 17, 85, 491, 34, 122, 200, 416}, - {352, 141, 1, 217, 854, 752, 351, 180, 244, 36, 110, 661, 82, 258, 816, 160, 295, 219, 567, 224, 230, 269, 922, 144, 260, 268, 93, 201, 137, 116, 489, 202}, - {16, 60, 35, 18, 126, 107, 68, 191, 92, 121, 7, 14, 598, 20, 493, 279, 167, 446, 118, 0, 28, 43, 463, 55, 24, 212, 375, 566, 9, 150, 575, 21}, - {15, 1, 515, 2, 4, 13, 0, 700, 3, 5, 23, 753, 341, 77, 51, 115, 33, 11, 180, 10, 197, 141, 6, 165, 7, 901, 102, 40, 9, 202, 217, 12}, - {23, 51, 13, 202, 21, 5, 1, 120, 15, 137, 128, 125, 32, 2, 12, 141, 33, 165, 64, 515, 403, 318, 700, 48, 180, 7, 6, 450, 115, 523, 475, 260}, - {131, 716, 224, 371, 219, 187, 737, 616, 385, 254, 9, 98, 105, 924, 31, 258, 836, 39, 127, 578, 49, 916, 44, 761, 272, 137, 944, 159, 0, 242, 442, 22}, - {15, 515, 700, 1, 753, 2, 5, 0, 4, 13, 3, 180, 11, 141, 197, 10, 341, 217, 33, 134, 165, 6, 77, 7, 317, 12, 352, 64, 365, 32, 102, 40}, - {66, 74, 7, 173, 174, 29, 192, 2, 222, 20, 226, 43, 353, 52, 712, 6, 0, 138, 500, 204, 97, 145, 64, 104, 426, 673, 355, 90, 25, 5, 65, 87}, - {5, 259, 786, 534, 590, 493, 279, 49, 13, 581, 465, 21, 929, 35, 941, 132, 147, 32, 23, 612, 362, 626, 107, 121, 178, 0, 146, 61, 48, 939, 10, 18}, - {2, 14, 16, 7, 278, 69, 135, 140, 46, 24, 267, 35, 92, 38, 1, 189, 29, 52, 309, 60, 66, 75, 71, 172, 74, 357, 18, 87, 67, 6, 230, 5}, - {165, 13, 308, 197, 391, 23, 401, 15, 51, 457, 180, 509, 115, 569, 3, 629, 961, 719, 34, 758, 317, 734, 14, 29, 46, 2, 17, 901, 38, 453, 5, 217}, - {1, 22, 2, 14, 0, 28, 7, 168, 67, 49, 65, 24, 36, 95, 5, 105, 55, 35, 12, 46, 69, 16, 114, 159, 194, 50, 10, 9, 158, 83, 164, 109}, - {34, 453, 3, 196, 130, 14, 322, 11, 47, 51, 377, 236, 361, 4, 730, 153, 514, 711, 57, 440, 62, 17, 161, 108, 176, 59, 485, 56, 162, 412, 202, 117}, - {18, 16, 21, 23, 48, 13, 24, 35, 121, 5, 156, 60, 51, 1, 7, 132, 141, 221, 163, 115, 0, 271, 447, 340, 363, 202, 125, 71, 2, 781, 22, 698}, - {165, 13, 457, 23, 197, 961, 629, 569, 341, 41, 12, 38, 401, 901, 54, 51, 115, 17, 15, 509, 421, 37, 62, 45, 719, 57, 32, 328, 117, 758, 157, 99}, - {2, 1, 77, 141, 33, 64, 3, 102, 0, 23, 13, 5, 128, 10, 6, 15, 180, 202, 269, 40, 51, 515, 7, 165, 137, 117, 318, 4, 700, 153, 197, 352}, - {68, 212, 0, 124, 101, 9, 154, 16, 562, 191, 21, 149, 65, 24, 35, 1, 118, 167, 818, 350, 520, 100, 722, 841, 264, 71, 13, 302, 478, 23, 375, 346}, - {98, 23, 48, 598, 13, 293, 541, 21, 125, 121, 51, 807, 0, 31, 35, 259, 126, 7, 386, 1, 223, 783, 10, 107, 199, 20, 221, 144, 342, 963, 49, 64}, - {21, 13, 5, 586, 1, 23, 167, 48, 33, 781, 647, 49, 165, 18, 51, 271, 77, 32, 761, 118, 0, 82, 391, 22, 146, 141, 459, 31, 197, 156, 115, 4}, - {2, 1, 5, 61, 29, 7, 58, 45, 14, 6, 425, 32, 70, 52, 290, 738, 207, 21, 72, 112, 66, 76, 655, 17, 186, 46, 64, 263, 38, 0, 128, 87}, - {39, 265, 9, 100, 1, 333, 363, 101, 18, 411, 447, 254, 166, 310, 31, 98, 264, 30, 639, 404, 156, 286, 16, 93, 593, 203, 272, 682, 0, 905, 44, 821}, - {6, 2, 1, 19, 29, 51, 26, 108, 25, 74, 5, 23, 14, 114, 13, 386, 133, 103, 42, 66, 453, 70, 309, 138, 719, 324, 65, 38, 64, 96, 52, 75}, - {20, 43, 356, 107, 49, 858, 595, 7, 414, 359, 0, 5, 392, 319, 97, 612, 422, 819, 14, 376, 173, 246, 22, 470, 147, 427, 230, 92, 197, 33, 683, 95}, - {0, 9, 68, 35, 65, 67, 114, 101, 28, 1, 124, 175, 336, 69, 154, 103, 83, 24, 189, 133, 39, 16, 50, 7, 2, 149, 55, 251, 18, 345, 230, 36}, - {23, 13, 51, 15, 0, 1, 515, 115, 165, 2, 5, 12, 700, 202, 4, 21, 141, 457, 753, 197, 10, 3, 180, 120, 32, 9, 318, 11, 453, 64, 6, 269}, - {121, 195, 60, 16, 126, 107, 98, 271, 146, 407, 132, 35, 1, 167, 199, 223, 493, 191, 279, 20, 18, 5, 43, 7, 21, 92, 48, 393, 0, 362, 212, 467}, - {31, 44, 299, 116, 393, 144, 492, 456, 268, 22, 105, 0, 367, 918, 384, 434, 127, 489, 98, 9, 963, 125, 242, 948, 1, 28, 206, 49, 36, 51, 93, 293}, - {23, 13, 457, 51, 165, 401, 719, 758, 197, 453, 961, 629, 308, 14, 15, 12, 730, 3, 386, 569, 391, 29, 739, 515, 34, 828, 832, 901, 115, 514, 670, 341}, - {105, 36, 131, 22, 180, 115, 341, 127, 169, 1, 9, 31, 64, 98, 44, 365, 317, 141, 272, 143, 160, 55, 219, 86, 197, 776, 239, 187, 0, 535, 13, 752}, - {1, 6, 2, 14, 66, 25, 29, 5, 108, 67, 65, 114, 19, 38, 26, 52, 74, 7, 24, 18, 69, 86, 36, 388, 64, 51, 17, 83, 23, 46, 42, 75}, - {51, 386, 23, 453, 719, 13, 730, 6, 457, 670, 758, 19, 401, 165, 2, 475, 47, 26, 899, 14, 108, 17, 1, 5, 197, 29, 894, 754, 236, 74, 27, 285}, - {252, 18, 9, 101, 121, 16, 132, 0, 419, 167, 364, 60, 604, 35, 265, 363, 146, 271, 39, 158, 68, 109, 28, 329, 848, 24, 647, 907, 682, 159, 212, 55}, - {283, 503, 128, 432, 26, 193, 63, 269, 789, 529, 102, 122, 389, 275, 678, 6, 25, 318, 445, 4, 342, 27, 573, 605, 177, 862, 643, 291, 216, 57, 235, 59}, - {2, 1, 29, 75, 69, 52, 14, 6, 46, 74, 87, 7, 220, 226, 278, 38, 135, 66, 267, 70, 16, 262, 25, 24, 380, 324, 357, 140, 67, 394, 97, 222}, - {97, 298, 69, 7, 66, 140, 189, 24, 16, 267, 172, 423, 60, 150, 14, 314, 92, 71, 81, 501, 43, 35, 74, 6, 517, 232, 149, 607, 83, 330, 18, 2}, - {475, 421, 403, 899, 51, 805, 523, 958, 453, 817, 23, 615, 401, 801, 120, 326, 202, 670, 494, 730, 450, 386, 115, 629, 260, 576, 77, 365, 569, 0, 165, 13}, - {7, 20, 14, 128, 77, 97, 112, 202, 2, 177, 16, 415, 269, 318, 275, 66, 107, 43, 141, 414, 135, 38, 307, 10, 58, 0, 6, 291, 32, 5, 4, 40}, - {24, 14, 7, 0, 2, 1, 22, 28, 16, 65, 168, 124, 35, 67, 108, 109, 18, 49, 10, 149, 69, 158, 5, 95, 289, 12, 55, 6, 36, 71, 46, 21}, - {26, 80, 27, 73, 122, 25, 19, 17, 6, 42, 684, 209, 445, 573, 667, 106, 45, 690, 4, 611, 255, 680, 297, 495, 65, 59, 128, 119, 483, 113, 64, 53}, - {107, 259, 362, 376, 465, 20, 470, 147, 595, 534, 612, 683, 660, 43, 5, 49, 581, 0, 858, 35, 427, 246, 97, 786, 178, 356, 14, 21, 142, 878, 7, 279}, - {131, 30, 228, 190, 856, 406, 224, 88, 219, 530, 863, 613, 778, 274, 944, 816, 187, 39, 100, 160, 258, 31, 44, 93, 1, 321, 539, 36, 871, 137, 435, 531}, - {113, 6, 311, 25, 45, 491, 80, 611, 27, 26, 209, 667, 17, 73, 122, 42, 684, 396, 19, 85, 106, 5, 614, 4, 2, 255, 151, 29, 1, 64, 648, 61}, - {15, 515, 700, 753, 0, 1, 23, 51, 120, 2, 13, 82, 5, 260, 9, 4, 341, 77, 180, 115, 141, 10, 7, 12, 450, 8, 202, 901, 197, 351, 165, 93}, - {219, 127, 98, 258, 395, 421, 924, 293, 242, 201, 697, 105, 276, 51, 308, 23, 453, 272, 401, 944, 512, 137, 13, 31, 284, 567, 386, 365, 116, 131, 964, 125}, - {15, 180, 352, 141, 515, 752, 217, 82, 1, 317, 854, 700, 351, 753, 115, 341, 110, 13, 260, 120, 21, 36, 33, 898, 23, 10, 5, 365, 4, 160, 901, 137}, - {129, 123, 17, 257, 162, 184, 205, 249, 183, 769, 5, 80, 3, 4, 229, 130, 119, 45, 90, 99, 618, 106, 57, 497, 12, 128, 2, 84, 59, 152, 27, 40}, - {33, 102, 23, 77, 64, 128, 51, 13, 0, 202, 10, 141, 40, 15, 1, 22, 117, 137, 2, 86, 4, 403, 269, 153, 515, 196, 65, 11, 700, 115, 99, 5}, - {7, 14, 2, 16, 172, 107, 46, 92, 5, 135, 35, 202, 294, 87, 38, 232, 29, 97, 20, 21, 24, 1, 60, 220, 66, 43, 12, 0, 126, 52, 54, 70}, - {403, 576, 615, 523, 475, 326, 805, 817, 494, 421, 51, 202, 120, 450, 137, 453, 23, 859, 260, 401, 402, 77, 33, 670, 0, 958, 15, 197, 386, 515, 165, 480}, - {141, 352, 217, 137, 0, 180, 202, 349, 9, 269, 23, 51, 115, 291, 77, 372, 13, 317, 120, 752, 365, 351, 93, 22, 2, 341, 64, 10, 82, 854, 28, 18}, - {1, 23, 13, 51, 202, 141, 5, 165, 21, 15, 120, 180, 64, 2, 197, 125, 33, 102, 12, 7, 137, 515, 48, 128, 269, 318, 93, 700, 0, 403, 9, 4}, - {25, 151, 6, 145, 122, 29, 174, 45, 113, 74, 4, 665, 42, 138, 2, 614, 416, 287, 19, 348, 746, 0, 66, 26, 1, 7, 64, 243, 311, 396, 81, 624}, - {30, 190, 254, 166, 100, 382, 731, 829, 88, 131, 264, 795, 9, 93, 625, 274, 438, 1, 578, 613, 716, 31, 44, 39, 530, 36, 616, 921, 265, 203, 160, 77}, - {132, 5, 21, 13, 1, 23, 32, 195, 379, 687, 156, 121, 626, 296, 48, 70, 850, 146, 51, 82, 883, 771, 35, 49, 652, 407, 60, 4, 260, 0, 845, 33}, - {9, 254, 0, 49, 272, 131, 39, 159, 688, 101, 105, 578, 518, 158, 286, 28, 327, 333, 68, 224, 252, 219, 344, 16, 22, 1, 716, 31, 30, 228, 24, 890}, - {16, 7, 35, 60, 18, 20, 14, 68, 9, 0, 28, 118, 43, 92, 126, 55, 107, 2, 101, 154, 24, 71, 5, 202, 121, 109, 22, 252, 21, 97, 1, 621}, - {15, 515, 700, 753, 13, 1, 341, 2, 0, 4, 3, 5, 11, 23, 10, 33, 117, 12, 901, 197, 6, 134, 77, 8, 165, 317, 21, 365, 217, 7, 17, 40}, - {78, 19, 444, 47, 26, 390, 27, 453, 130, 813, 108, 730, 711, 65, 412, 122, 51, 680, 113, 235, 690, 196, 630, 283, 128, 236, 14, 64, 73, 53, 200, 445}, - {2, 7, 29, 5, 61, 6, 45, 1, 66, 113, 112, 14, 52, 315, 738, 128, 32, 151, 74, 16, 20, 64, 70, 21, 592, 0, 25, 4, 425, 43, 491, 222}, - {145, 112, 74, 66, 6, 29, 26, 70, 19, 396, 25, 87, 2, 287, 135, 151, 138, 222, 5, 226, 42, 122, 7, 307, 1, 644, 45, 58, 113, 651, 635, 632}, - {92, 16, 7, 60, 126, 24, 140, 35, 14, 232, 18, 121, 246, 71, 46, 267, 172, 150, 107, 314, 132, 146, 230, 2, 278, 108, 330, 199, 236, 5, 38, 572}, - {13, 115, 197, 538, 569, 341, 98, 55, 165, 127, 365, 762, 219, 286, 844, 23, 170, 206, 734, 638, 535, 901, 169, 253, 629, 0, 873, 509, 180, 10, 332, 258}, - {58, 151, 74, 53, 287, 27, 29, 396, 6, 70, 2, 73, 5, 52, 112, 26, 651, 1, 297, 113, 17, 75, 19, 45, 334, 445, 145, 34, 315, 549, 436, 331}, - {214, 289, 90, 874, 104, 751, 64, 65, 312, 835, 204, 249, 750, 194, 74, 81, 875, 32, 519, 288, 348, 0, 174, 247, 636, 715, 138, 192, 784, 6, 524, 280}, - {9, 39, 28, 35, 30, 0, 166, 49, 1, 175, 439, 158, 64, 346, 36, 101, 67, 364, 86, 88, 274, 100, 168, 55, 23, 10, 420, 22, 190, 141, 505, 180}, - {341, 901, 15, 515, 700, 753, 1, 365, 10, 0, 569, 180, 2, 197, 115, 31, 165, 3, 5, 4, 44, 22, 317, 13, 9, 951, 23, 253, 116, 143, 762, 93}, - {120, 202, 77, 450, 260, 15, 128, 318, 102, 515, 494, 13, 817, 700, 269, 5, 403, 51, 1, 33, 23, 753, 82, 326, 141, 342, 291, 137, 21, 523, 351, 32}, - {13, 115, 241, 64, 180, 32, 125, 197, 165, 4, 118, 22, 21, 23, 16, 247, 237, 28, 225, 191, 95, 141, 167, 5, 0, 341, 288, 35, 459, 18, 177, 24}, - {16, 24, 35, 14, 1, 2, 7, 69, 18, 46, 60, 50, 267, 140, 71, 189, 108, 38, 75, 92, 0, 5, 9, 230, 67, 21, 309, 335, 54, 236, 394, 220}, - {15, 515, 700, 753, 898, 180, 901, 341, 197, 638, 10, 165, 33, 1, 115, 4, 77, 365, 317, 13, 102, 217, 117, 0, 5, 2, 253, 3, 82, 569, 21, 752}, - {193, 523, 18, 84, 56, 730, 233, 65, 4, 817, 90, 33, 643, 403, 91, 511, 453, 240, 59, 11, 214, 51, 719, 196, 153, 475, 32, 123, 64, 847, 102, 561}, - {112, 29, 151, 2, 74, 6, 66, 7, 222, 145, 287, 45, 5, 624, 52, 25, 113, 416, 58, 122, 19, 70, 186, 204, 4, 87, 644, 549, 337, 884, 32, 0}, - {13, 0, 23, 2, 1, 15, 33, 3, 77, 515, 141, 5, 4, 217, 10, 51, 64, 180, 700, 115, 6, 117, 11, 7, 753, 40, 102, 165, 197, 22, 317, 153}, - {28, 0, 1, 67, 65, 9, 2, 114, 83, 69, 103, 50, 36, 22, 55, 24, 46, 14, 124, 109, 35, 7, 16, 38, 133, 160, 389, 323, 18, 12, 154, 5}, - {121, 132, 18, 167, 271, 146, 101, 363, 621, 9, 411, 647, 16, 354, 520, 60, 212, 932, 1, 806, 55, 0, 195, 446, 68, 35, 31, 364, 777, 252, 407, 118}, - {26, 6, 85, 396, 122, 624, 25, 19, 42, 445, 64, 648, 573, 416, 174, 680, 665, 214, 45, 348, 90, 65, 194, 145, 113, 881, 138, 289, 112, 436, 297, 544}, - {16, 146, 18, 92, 24, 199, 60, 71, 121, 126, 35, 108, 156, 953, 271, 674, 132, 7, 32, 640, 360, 246, 649, 118, 21, 95, 5, 517, 14, 9, 1, 314}, - {51, 13, 23, 453, 475, 730, 719, 15, 457, 403, 64, 115, 33, 95, 4, 523, 3, 12, 21, 6, 899, 102, 5, 128, 401, 202, 11, 141, 308, 515, 22, 125}, - {151, 396, 6, 53, 27, 113, 58, 26, 73, 112, 74, 287, 45, 29, 297, 19, 145, 70, 138, 445, 315, 436, 34, 2, 17, 573, 5, 61, 549, 491, 1, 80}, - {223, 1, 888, 774, 260, 98, 269, 385, 349, 202, 96, 141, 421, 622, 730, 863, 318, 697, 87, 453, 393, 418, 922, 834, 751, 5, 163, 335, 120, 291, 352, 30}, - {16, 60, 92, 35, 126, 121, 7, 150, 246, 18, 107, 1, 598, 24, 167, 195, 14, 97, 71, 279, 98, 441, 191, 199, 517, 146, 356, 223, 298, 271, 230, 0}, - {22, 1, 105, 28, 239, 170, 0, 55, 95, 31, 36, 301, 2, 320, 98, 127, 9, 49, 44, 64, 35, 67, 10, 86, 5, 12, 109, 23, 168, 13, 21, 312}, - {2, 6, 5, 207, 292, 76, 1, 119, 45, 32, 17, 29, 61, 306, 790, 58, 240, 106, 14, 64, 214, 151, 476, 710, 7, 72, 84, 128, 4, 179, 70, 25}, - {51, 23, 221, 254, 115, 13, 438, 530, 125, 48, 21, 39, 541, 960, 386, 49, 1, 613, 15, 840, 228, 308, 627, 131, 688, 401, 5, 326, 421, 158, 165, 83}, - {1, 5, 2, 0, 12, 22, 21, 36, 10, 14, 48, 86, 23, 13, 32, 54, 3, 4, 28, 65, 51, 50, 137, 37, 208, 114, 9, 38, 17, 7, 281, 202}, - {363, 23, 447, 182, 296, 340, 1, 93, 698, 478, 379, 156, 284, 144, 18, 269, 21, 98, 141, 70, 668, 411, 664, 658, 110, 914, 67, 937, 180, 691, 335, 291}, - {17, 32, 45, 498, 41, 115, 180, 197, 106, 62, 54, 38, 546, 165, 13, 155, 468, 509, 341, 243, 241, 217, 542, 15, 57, 536, 428, 51, 117, 721, 292, 129}, - {32, 95, 64, 246, 22, 92, 180, 13, 5, 652, 125, 241, 638, 237, 7, 49, 4, 126, 21, 115, 197, 296, 888, 316, 0, 165, 774, 23, 16, 392, 1, 534}, - {15, 515, 700, 753, 33, 341, 13, 217, 4, 141, 77, 23, 180, 317, 1, 10, 102, 351, 82, 115, 40, 5, 854, 21, 137, 11, 352, 901, 365, 117, 197, 0}, - {15, 120, 1, 82, 93, 217, 515, 260, 77, 141, 13, 110, 700, 351, 352, 23, 180, 753, 21, 854, 202, 317, 64, 349, 269, 51, 165, 137, 5, 128, 291, 36}, - {13, 23, 51, 141, 77, 0, 33, 4, 115, 64, 2, 10, 102, 202, 217, 128, 1, 177, 269, 11, 7, 22, 6, 21, 32, 9, 180, 40, 15, 3, 165, 318}, - {478, 264, 1, 520, 98, 724, 9, 682, 223, 664, 21, 759, 13, 772, 604, 100, 23, 363, 411, 48, 821, 5, 0, 905, 909, 447, 31, 265, 88, 101, 166, 39}, - {20, 29, 7, 2, 77, 416, 6, 128, 33, 5, 0, 113, 104, 32, 43, 13, 491, 66, 23, 21, 102, 51, 74, 210, 202, 525, 64, 318, 10, 81, 174, 14}, - {2, 1, 5, 14, 7, 58, 61, 29, 45, 290, 46, 38, 52, 21, 32, 270, 6, 592, 425, 0, 75, 155, 16, 48, 17, 50, 72, 70, 207, 24, 263, 663}, - {80, 6, 17, 209, 106, 26, 483, 113, 19, 469, 255, 25, 378, 27, 495, 833, 45, 64, 161, 2, 61, 667, 76, 742, 32, 90, 445, 5, 814, 65, 887, 119}, - {98, 223, 393, 1, 354, 834, 195, 791, 447, 697, 284, 293, 360, 541, 781, 156, 51, 807, 18, 664, 421, 411, 163, 668, 48, 31, 591, 765, 883, 386, 948, 23}, - {679, 141, 816, 36, 93, 406, 876, 144, 228, 137, 1, 180, 669, 21, 332, 251, 5, 269, 116, 187, 96, 351, 202, 752, 317, 64, 203, 831, 574, 466, 855, 345}, - {15, 515, 700, 13, 1, 753, 2, 0, 23, 341, 3, 5, 4, 10, 51, 11, 33, 165, 6, 7, 115, 197, 12, 64, 180, 153, 217, 77, 9, 569, 901, 317}, - {13, 23, 202, 51, 5, 21, 403, 15, 120, 64, 1, 450, 128, 141, 12, 523, 33, 165, 494, 125, 2, 515, 269, 7, 48, 102, 318, 95, 260, 180, 453, 197}, - {16, 18, 24, 60, 71, 92, 146, 246, 199, 35, 140, 7, 9, 118, 121, 108, 167, 230, 126, 132, 0, 640, 156, 14, 68, 133, 267, 360, 649, 271, 64, 55}, - {269, 141, 678, 177, 202, 77, 128, 318, 33, 947, 40, 120, 291, 349, 102, 137, 64, 352, 210, 864, 461, 498, 13, 342, 196, 23, 275, 450, 954, 0, 205, 111}, - {16, 24, 92, 18, 71, 60, 35, 7, 108, 191, 167, 246, 140, 14, 126, 21, 1, 68, 150, 118, 149, 388, 399, 9, 273, 0, 121, 796, 230, 48, 212, 517}, - {2, 14, 1, 29, 46, 75, 52, 70, 69, 171, 38, 7, 58, 163, 16, 5, 24, 220, 67, 112, 223, 54, 50, 409, 155, 35, 267, 186, 151, 334, 394, 140}, - {9, 252, 100, 265, 166, 39, 88, 404, 329, 0, 1, 520, 382, 812, 101, 593, 264, 274, 604, 676, 30, 118, 68, 553, 18, 664, 363, 23, 639, 865, 21, 411}, - {16, 18, 35, 24, 0, 60, 158, 7, 22, 68, 14, 49, 109, 159, 55, 9, 28, 71, 2, 10, 5, 105, 1, 118, 329, 13, 344, 23, 92, 20, 21, 126}, - {15, 13, 515, 700, 23, 0, 753, 1, 51, 2, 4, 10, 77, 5, 3, 197, 115, 165, 961, 202, 9, 457, 180, 12, 141, 22, 33, 120, 6, 11, 318, 31}, - {160, 93, 251, 137, 317, 1, 180, 36, 120, 217, 345, 752, 617, 352, 332, 10, 96, 531, 498, 318, 365, 202, 141, 269, 816, 341, 901, 679, 143, 35, 83, 968}, - {6, 25, 42, 128, 19, 59, 122, 4, 85, 26, 611, 27, 269, 233, 45, 0, 343, 91, 318, 80, 11, 177, 283, 73, 33, 614, 2, 77, 64, 138, 445, 216}, - {95, 64, 74, 7, 32, 81, 51, 204, 0, 20, 237, 65, 56, 38, 91, 23, 207, 180, 347, 343, 29, 6, 511, 52, 49, 10, 25, 18, 554, 370, 14, 312}, - {202, 120, 326, 260, 450, 817, 494, 318, 137, 403, 128, 77, 523, 553, 859, 5, 704, 1, 15, 23, 13, 576, 7, 16, 615, 51, 682, 291, 515, 0, 21, 234}, - {20, 43, 107, 356, 362, 126, 595, 92, 359, 7, 422, 319, 493, 16, 858, 5, 392, 246, 414, 683, 60, 0, 35, 945, 441, 21, 259, 819, 49, 97, 279, 173}, - {25, 42, 6, 77, 33, 102, 0, 122, 4, 690, 29, 483, 210, 27, 21, 19, 2, 300, 18, 648, 680, 119, 117, 59, 1, 10, 342, 12, 26, 153, 91, 684}, - {31, 44, 299, 116, 125, 242, 456, 599, 22, 393, 0, 144, 492, 28, 268, 1, 9, 963, 301, 105, 367, 36, 127, 170, 384, 434, 206, 98, 918, 10, 13, 93}, - {410, 521, 686, 367, 662, 88, 335, 321, 201, 96, 98, 772, 144, 1, 934, 921, 443, 435, 284, 274, 264, 551, 120, 897, 44, 100, 33, 225, 744, 418, 909, 960}, - {142, 178, 878, 234, 132, 786, 195, 202, 77, 416, 147, 929, 146, 522, 167, 259, 687, 639, 450, 271, 626, 481, 590, 5, 198, 212, 771, 49, 0, 465, 315, 427}, - {254, 39, 131, 9, 272, 0, 578, 716, 310, 224, 30, 49, 105, 827, 518, 829, 166, 333, 616, 228, 613, 846, 101, 219, 1, 31, 890, 98, 159, 938, 252, 100}, - {230, 699, 854, 473, 450, 351, 831, 137, 855, 217, 352, 704, 800, 202, 251, 498, - 160, 144, 206, 203, 317, 201, 253, 752, 418, 141, 1, 332, 82, 180, 443, 36}, - {403, 202, 475, 453, 494, 23, 51, 77, 318, 402, 13, 33, 128, 102, 137, 141, 120, 342, 269, 0, 450, 4, 899, 576, 40, 421, 275, 117, 217, 177, 196, 64}, - {23, 44, 98, 182, 291, 144, 116, 39, 110, 141, 96, 82, 905, 70, 367, 264, 125, 93, 77, 411, 120, 1, 658, 202, 100, 415, 107, 363, 197, 30, 447, 105}, - {15, 515, 1, 13, 700, 23, 77, 120, 0, 753, 51, 180, 202, 141, 260, 5, 21, 115, 2, 137, 128, 9, 450, 197, 365, 269, 12, 326, 110, 102, 318, 7}, - {0, 32, 18, 95, 207, 577, 193, 29, 61, 104, 64, 784, 715, 102, 693, 887, 81, 91, 583, 671, 403, 5, 52, 474, 397, 180, 138, 49, 37, 344, 38, 263}, - {0, 101, 9, 68, 252, 16, 100, 39, 166, 364, 124, 24, 154, 265, 212, 88, 18, 35, 329, 419, 28, 118, 71, 30, 65, 158, 191, 55, 1, 694, 21, 676}, - {16, 24, 191, 18, 35, 71, 167, 118, 149, 68, 212, 9, 0, 1, 21, 108, 101, 92, 60, 375, 302, 7, 589, 755, 124, 674, 350, 48, 562, 246, 13, 363}, - {2, 14, 69, 24, 1, 67, 46, 16, 38, 103, 29, 267, 7, 35, 189, 135, 278, 71, 108, 18, 83, 309, 52, 6, 149, 388, 75, 236, 60, 0, 150, 66}, - {13, 1, 23, 0, 4, 2, 51, 15, 180, 33, 3, 115, 5, 515, 141, 10, 77, 700, 11, 9, 197, 341, 202, 165, 217, 102, 22, 7, 753, 317, 365, 6}, - {447, 1, 698, 411, 31, 363, 98, 5, 919, 4, 156, 125, 759, 691, 13, 64, 459, 354, 44, 21, 48, 293, 30, 914, 478, 225, 82, 120, 2, 922, 848, 839}, - {854, 82, 351, 217, 141, 180, 352, 15, 515, 752, 1, 700, 317, 898, 753, 244, 10, 21, 922, 115, 77, 36, 4, 260, 64, 110, 372, 13, 5, 365, 120, 11}, - {0, 1, 4, 13, 5, 2, 82, 33, 3, 120, 10, 23, 9, 11, 77, 260, 21, 102, 8, 31, 40, 6, 351, 51, 64, 450, 22, 117, 93, 110, 7, 457}, - {51, 13, 403, 23, 12, 475, 1, 2, 21, 5, 453, 523, 115, 202, 817, 7, 0, 99, 3, 6, 450, 120, 494, 64, 22, 95, 49, 899, 10, 37, 32, 141}, - {180, 752, 352, 141, 498, 864, 317, 217, 9, 0, 115, 237, 230, 39, 30, 197, 83, 1, 930, 64, 35, 365, 372, 13, 579, 88, 702, 36, 101, 901, 482, 21}, - {16, 24, 0, 7, 22, 18, 28, 35, 14, 158, 71, 2, 109, 60, 1, 168, 49, 154, 124, 68, 10, 55, 92, 118, 159, 9, 5, 747, 95, 105, 65, 6}, - {15, 515, 700, 753, 0, 23, 1, 13, 341, 51, 120, 77, 141, 4, 137, 33, 260, 82, 202, 9, 180, 5, 351, 2, 291, 10, 11, 901, 21, 115, 40, 128}, - {24, 68, 35, 149, 18, 16, 0, 7, 9, 14, 189, 108, 69, 65, 67, 1, 71, 2, 118, 28, 140, 101, 114, 336, 230, 124, 175, 133, 46, 55, 251, 154}, - {13, 308, 197, 115, 125, 9, 165, 237, 391, 23, 509, 569, 546, 28, 49, 629, 22, 338, 317, 254, 749, 180, 468, 159, 903, 386, 217, 352, 558, 39, 36, 734}, - {64, 90, 32, 217, 77, 4, 141, 216, 172, 312, 128, 13, 86, 33, 597, 147, 352, 95, 5, 115, 875, 22, 59, 11, 102, 14, 182, 437, 97, 177, 874, 707}, - {1, 22, 36, 0, 105, 28, 2, 67, 95, 49, 55, 5, 239, 12, 86, 9, 83, 170, 312, 64, 31, 21, 23, 10, 164, 50, 114, 159, 208, 13, 7, 320}, - {9, 18, 16, 0, 159, 105, 101, 252, 49, 310, 24, 68, 35, 39, 265, 272, 7, 1, 60, 28, 455, 890, 329, 557, 118, 286, 55, 137, 327, 167, 5, 13}, - {129, 123, 214, 249, 618, 17, 5, 257, 205, 184, 460, 76, 2, 162, 769, 245, 90, 106, 128, 45, 119, 1, 183, 4, 3, 12, 179, 64, 6, 229, 99, 209}, - {51, 453, 719, 457, 23, 13, 730, 899, 475, 386, 4, 15, 11, 12, 670, 196, 515, 523, 961, 401, 153, 3, 700, 99, 753, 117, 403, 32, 120, 165, 57, 0}, - {173, 66, 192, 204, 20, 74, 104, 636, 7, 43, 289, 426, 825, 712, 560, 214, 81, 750, 65, 97, 707, 0, 90, 414, 64, 348, 32, 500, 22, 861, 95, 6}, - {13, 23, 1, 51, 5, 21, 141, 120, 202, 15, 165, 2, 515, 180, 12, 125, 0, 64, 82, 700, 197, 269, 32, 48, 260, 128, 115, 93, 9, 137, 33, 753}, - {200, 34, 322, 78, 472, 390, 27, 714, 19, 14, 136, 161, 453, 176, 236, 444, 59, 3, 62, 128, 108, 57, 283, 862, 73, 53, 47, 17, 412, 813, 4, 56}, - {33, 347, 66, 204, 426, 498, 56, 172, 97, 95, 5, 681, 546, 22, 10, 0, 135, 180, 4, 241, 19, 174, 6, 353, 263, 21, 7, 370, 42, 197, 27, 808}, - {131, 224, 219, 187, 385, 371, 258, 442, 254, 737, 31, 98, 836, 127, 924, 944, 44, 871, 908, 716, 39, 827, 201, 574, 116, 137, 36, 1, 276, 242, 578, 616}, - {1, 15, 2, 180, 4, 141, 13, 515, 0, 5, 3, 115, 700, 901, 341, 23, 217, 352, 753, 51, 197, 77, 317, 33, 365, 752, 165, 21, 6, 7, 269, 93}, - {370, 91, 718, 74, 81, 510, 397, 66, 636, 240, 355, 84, 138, 511, 18, 278, 6, 681, 701, 289, 90, 5, 214, 582, 64, 104, 0, 643, 192, 65, 750, 32}, - {15, 515, 700, 753, 13, 120, 1, 0, 165, 2, 197, 23, 260, 180, 4, 82, 51, 386, 8, 5, 12, 10, 3, 141, 351, 341, 326, 9, 450, 7, 64, 6}, - {32, 2, 76, 5, 1, 292, 72, 45, 476, 214, 21, 241, 29, 14, 17, 48, 129, 90, 179, 460, 464, 123, 290, 148, 519, 205, 3, 263, 249, 38, 710, 89}, - {13, 165, 115, 17, 197, 569, 23, 509, 457, 45, 32, 41, 106, 180, 62, 38, 659, 734, 155, 536, 341, 629, 961, 873, 587, 54, 431, 37, 391, 99, 405, 428}, - {68, 24, 35, 16, 0, 101, 9, 124, 154, 71, 149, 65, 18, 175, 28, 118, 7, 55, 302, 108, 92, 14, 22, 346, 1, 39, 429, 252, 375, 364, 10, 67}, - {0, 9, 1, 68, 230, 65, 35, 69, 83, 23, 101, 13, 141, 67, 217, 352, 21, 39, 16, 88, 28, 124, 212, 100, 115, 154, 51, 64, 30, 36, 10, 317}, - {100, 265, 88, 909, 410, 382, 812, 593, 1, 213, 321, 30, 252, 230, 352, 264, 9, 166, 689, 39, 676, 98, 21, 466, 724, 639, 478, 217, 13, 48, 553, 101}, - {113, 61, 198, 904, 43, 0, 5, 37, 899, 325, 20, 59, 33, 523, 204, 725, 817, 389, 470, 329, 222, 40, 174, 58, 22, 453, 690, 848, 122, 104, 788, 105}, - {16, 24, 141, 18, 7, 0, 71, 140, 35, 269, 75, 352, 12, 9, 108, 217, 5, 330, 60, 64, 199, 70, 22, 13, 486, 246, 318, 133, 65, 50, 23, 498}, - {271, 167, 121, 60, 18, 191, 146, 199, 16, 1, 446, 132, 575, 212, 463, 354, 126, 35, 598, 566, 727, 98, 107, 21, 608, 955, 640, 407, 5, 24, 223, 68}, - {15, 515, 115, 217, 700, 13, 317, 753, 141, 180, 33, 23, 110, 120, 4, 341, 82, 10, 1, 260, 365, 36, 64, 854, 351, 21, 51, 352, 137, 77, 40, 0}, - {173, 7, 97, 356, 43, 107, 20, 387, 729, 104, 426, 232, 560, 595, 359, 392, 414, 707, 885, 81, 5, 0, 66, 858, 612, 49, 861, 14, 22, 32, 819, 230}, - {15, 515, 700, 753, 13, 23, 51, 82, 0, 33, 165, 120, 196, 4, 1, 2, 197, 453, 260, 351, 180, 12, 40, 8, 386, 110, 5, 326, 9, 141, 217, 457}, - {9, 100, 120, 30, 77, 795, 137, 82, 202, 39, 264, 827, 578, 127, 0, 166, 373, 318, 18, 326, 141, 260, 1, 450, 731, 31, 33, 395, 217, 291, 341, 254}, - {14, 2, 67, 1, 24, 69, 0, 28, 65, 7, 46, 18, 114, 108, 36, 83, 38, 398, 9, 16, 124, 133, 103, 154, 50, 55, 22, 267, 29, 160, 35, 547}, - {14, 7, 69, 24, 66, 16, 2, 267, 189, 67, 71, 150, 140, 97, 18, 60, 172, 35, 6, 1, 38, 149, 388, 92, 83, 135, 108, 74, 462, 380, 29, 36}, - {15, 515, 700, 753, 1, 13, 2, 0, 4, 341, 5, 3, 23, 365, 11, 117, 180, 10, 12, 33, 134, 115, 77, 197, 217, 165, 6, 7, 317, 102, 21, 9}, - {1, 22, 0, 12, 5, 2, 36, 28, 21, 10, 86, 13, 23, 49, 128, 9, 95, 51, 55, 96, 208, 141, 48, 202, 4, 137, 37, 64, 105, 3, 50, 7}, - {605, 630, 63, 123, 736, 650, 65, 108, 444, 368, 561, 389, 19, 25, 42, 619, 122, 194, 183, 27, 53, 33, 84, 26, 297, 813, 114, 73, 256, 235, 249, 216}, - {127, 39, 9, 0, 31, 371, 98, 254, 1, 385, 395, 44, 30, 836, 187, 131, 100, 116, 284, 578, 299, 166, 28, 21, 737, 16, 276, 272, 23, 49, 137, 935}, - {2, 61, 6, 29, 45, 151, 1, 655, 7, 207, 32, 5, 112, 425, 17, 76, 833, 4, 14, 64, 58, 106, 119, 25, 113, 128, 72, 52, 70, 21, 292, 790}, - {2, 5, 17, 14, 3, 29, 23, 27, 13, 401, 46, 6, 51, 58, 1, 453, 45, 53, 34, 52, 133, 19, 236, 26, 181, 114, 99, 366, 151, 108, 218, 38}, - {31, 22, 170, 1, 301, 44, 127, 98, 36, 28, 55, 105, 239, 0, 338, 116, 512, 299, 293, 125, 86, 10, 242, 395, 2, 13, 9, 64, 841, 23, 95, 685}, - {1, 21, 2, 14, 5, 32, 48, 50, 38, 270, 46, 76, 290, 72, 45, 54, 17, 0, 155, 221, 263, 207, 37, 281, 430, 3, 89, 12, 181, 408, 36, 67}, - {17, 106, 119, 378, 84, 240, 62, 80, 383, 136, 306, 3, 56, 790, 742, 5, 207, 504, 64, 440, 32, 128, 45, 2, 123, 209, 14, 4, 61, 57, 297, 667}, - {13, 15, 1, 515, 23, 2, 0, 700, 4, 115, 3, 51, 5, 10, 753, 180, 33, 341, 217, 11, 165, 317, 365, 197, 6, 77, 40, 64, 22, 9, 7, 117}, - {772, 335, 96, 744, 1, 367, 662, 686, 652, 897, 303, 264, 521, 31, 225, 410, 141, 520, 260, 116, 64, 44, 321, 98, 144, 88, 919, 966, 340, 269, 349, 284}, - {1, 0, 5, 28, 36, 2, 12, 22, 83, 67, 65, 50, 24, 14, 9, 96, 21, 218, 18, 114, 48, 281, 54, 10, 7, 160, 181, 103, 37, 23, 133, 99}, - {25, 6, 145, 42, 138, 81, 174, 348, 525, 544, 26, 74, 85, 280, 287, 648, 746, 91, 66, 0, 29, 396, 204, 64, 636, 90, 122, 194, 355, 104, 65, 233}, - {16, 24, 0, 18, 28, 158, 7, 35, 49, 22, 68, 159, 55, 1, 14, 109, 105, 2, 9, 71, 65, 154, 124, 95, 424, 344, 60, 239, 118, 577, 21, 10}, - {352, 854, 699, 230, 93, 689, 137, 144, 217, 160, 251, 36, 669, 202, 351, 120, 617, 855, 752, 203, 332, 82, 450, 180, 141, 748, 831, 30, 258, 201, 1, 816}, - {15, 13, 515, 700, 1, 2, 0, 753, 23, 5, 4, 3, 51, 33, 10, 115, 11, 317, 217, 77, 180, 341, 117, 165, 6, 134, 197, 153, 64, 9, 102, 7}, - {104, 20, 43, 173, 66, 319, 0, 77, 202, 7, 198, 5, 97, 580, 355, 74, 2, 204, 174, 52, 712, 234, 426, 155, 102, 192, 32, 4, 500, 337, 226, 904}, - {13, 23, 15, 51, 1, 515, 0, 2, 5, 700, 141, 4, 753, 165, 115, 12, 3, 21, 457, 10, 180, 269, 32, 6, 197, 202, 9, 7, 120, 11, 77, 33}, - {15, 515, 700, 753, 0, 1, 13, 2, 23, 115, 4, 317, 8, 3, 5, 51, 9, 341, 10, 217, 22, 365, 33, 457, 6, 180, 77, 901, 197, 120, 18, 7}, - {15, 515, 700, 753, 1, 0, 2, 3, 4, 13, 5, 141, 23, 16, 82, 217, 457, 10, 365, 180, 9, 317, 51, 21, 269, 898, 64, 202, 11, 12, 318, 341}, - {2, 5, 1, 14, 50, 38, 29, 17, 114, 46, 133, 3, 45, 21, 58, 171, 181, 36, 218, 12, 6, 52, 0, 48, 137, 65, 361, 23, 155, 4, 285, 51}, - {0, 68, 9, 65, 101, 124, 35, 212, 16, 149, 154, 100, 24, 1, 114, 336, 67, 589, 252, 39, 71, 189, 69, 562, 18, 13, 30, 398, 118, 88, 265, 264}, - {1, 2, 14, 22, 0, 7, 67, 65, 28, 36, 24, 46, 168, 5, 86, 69, 38, 16, 49, 12, 289, 10, 194, 50, 83, 114, 95, 6, 18, 23, 55, 158}, - {13, 23, 15, 51, 515, 0, 700, 4, 1, 753, 2, 10, 115, 961, 457, 12, 33, 11, 3, 5, 197, 9, 165, 77, 102, 403, 453, 40, 64, 22, 37, 59}, - {15, 515, 700, 753, 0, 1, 2, 13, 23, 5, 51, 901, 8, 9, 180, 3, 7, 82, 4, 120, 12, 10, 719, 341, 6, 31, 141, 457, 197, 22, 115, 93}, - {100, 252, 88, 101, 0, 265, 9, 724, 48, 1, 21, 352, 213, 676, 410, 382, 321, 230, 30, 329, 593, 909, 39, 812, 553, 217, 23, 689, 520, 264, 166, 419}, - {2, 5, 1, 58, 171, 14, 46, 50, 29, 52, 45, 38, 186, 155, 67, 54, 151, 281, 334, 61, 48, 96, 17, 181, 103, 400, 502, 227, 21, 223, 12, 69}, - {23, 120, 13, 1, 202, 141, 51, 21, 165, 128, 260, 15, 5, 269, 137, 64, 33, 180, 82, 318, 93, 197, 77, 326, 515, 125, 110, 700, 450, 2, 32, 48}, - {341, 197, 10, 901, 13, 15, 8, 638, 569, 515, 479, 23, 180, 873, 700, 165, 143, 642, 0, 961, 753, 951, 1, 115, 509, 499, 116, 12, 498, 242, 82, 206}, - {15, 1, 23, 13, 515, 21, 120, 51, 2, 141, 202, 700, 5, 180, 165, 0, 753, 197, 12, 7, 33, 260, 352, 137, 269, 4, 82, 128, 48, 9, 110, 6}, - {2, 29, 50, 58, 1, 6, 5, 52, 14, 262, 17, 46, 27, 53, 151, 34, 171, 74, 324, 26, 38, 309, 45, 113, 19, 96, 287, 396, 223, 67, 73, 583}, - {13, 23, 141, 51, 4, 202, 0, 115, 77, 2, 33, 217, 5, 317, 180, 64, 10, 269, 3, 9, 15, 21, 1, 128, 102, 137, 318, 11, 352, 515, 22, 31}, - {1, 67, 0, 24, 50, 5, 14, 18, 16, 69, 2, 9, 103, 35, 83, 12, 96, 28, 54, 7, 58, 223, 21, 46, 281, 48, 65, 181, 22, 38, 36, 108}, - {13, 23, 141, 51, 77, 64, 202, 115, 33, 102, 128, 4, 0, 269, 10, 21, 217, 32, 180, 318, 9, 137, 2, 11, 22, 291, 7, 177, 16, 31, 165, 197}, - {317, 115, 180, 365, 873, 498, 217, 341, 13, 752, 482, 197, 569, 352, 1, 901, 36, 23, 457, 468, 165, 346, 546, 143, 509, 134, 579, 876, 868, 2, 332, 21}, - {184, 257, 205, 229, 152, 17, 57, 497, 266, 432, 452, 524, 5, 619, 381, 32, 4, 90, 2, 12, 313, 128, 45, 59, 245, 106, 3, 471, 129, 769, 339, 214}, - {13, 23, 1, 0, 15, 2, 4, 515, 51, 3, 10, 33, 5, 700, 115, 180, 753, 77, 11, 365, 341, 217, 9, 6, 197, 7, 102, 165, 317, 40, 22, 64}, - {626, 70, 771, 687, 379, 846, 767, 761, 518, 878, 82, 481, 31, 786, 49, 591, 178, 163, 407, 44, 87, 13, 845, 125, 590, 371, 195, 120, 98, 557, 937, 351}, - {264, 1, 410, 909, 772, 897, 686, 521, 335, 478, 98, 96, 691, 639, 100, 44, 284, 382, 31, 321, 744, 88, 914, 724, 662, 765, 223, 9, 682, 363, 0, 367}, - {13, 23, 1, 2, 0, 15, 51, 515, 5, 10, 4, 33, 115, 77, 180, 700, 3, 141, 217, 40, 6, 753, 317, 197, 64, 165, 7, 11, 102, 9, 341, 22}, - {141, 77, 13, 64, 269, 23, 115, 21, 318, 217, 5, 202, 102, 33, 137, 2, 15, 291, 177, 51, 48, 180, 32, 4, 515, 352, 128, 7, 0, 10, 96, 11}, - {13, 15, 23, 515, 51, 0, 700, 753, 1, 2, 4, 10, 33, 11, 961, 453, 115, 40, 457, 14, 12, 3, 9, 5, 165, 401, 197, 77, 22, 21, 64, 102}, - {1, 22, 0, 36, 2, 31, 5, 12, 13, 105, 28, 9, 49, 86, 141, 21, 23, 95, 128, 55, 44, 115, 170, 10, 164, 98, 180, 4, 137, 239, 83, 51}, - {100, 101, 88, 0, 252, 9, 265, 30, 21, 39, 759, 724, 213, 329, 321, 13, 419, 68, 562, 382, 676, 352, 694, 35, 553, 410, 1, 166, 909, 593, 230, 23}, - {539, 88, 30, 190, 321, 530, 840, 144, 669, 435, 957, 748, 778, 100, 96, 418, 203, 213, 1, 131, 410, 228, 466, 274, 36, 382, 219, 863, 613, 83, 822, 352}, - {7, 97, 92, 173, 298, 107, 43, 314, 232, 140, 16, 356, 20, 387, 729, 362, 126, 359, 246, 14, 230, 501, 426, 441, 0, 5, 560, 66, 104, 779, 35, 60}, - {2, 14, 7, 1, 58, 5, 46, 16, 38, 70, 75, 45, 24, 155, 29, 0, 21, 52, 61, 163, 220, 50, 69, 270, 35, 48, 32, 171, 18, 6, 64, 54}, - {447, 411, 363, 664, 647, 98, 621, 1, 354, 271, 223, 478, 18, 777, 781, 936, 360, 759, 167, 132, 121, 48, 21, 156, 9, 195, 118, 293, 23, 691, 13, 264}, - {2, 1, 14, 65, 36, 67, 0, 7, 46, 22, 69, 5, 38, 24, 28, 6, 83, 29, 86, 114, 168, 50, 124, 208, 12, 18, 108, 10, 194, 484, 103, 16}, - {421, 386, 51, 791, 730, 958, 165, 801, 23, 453, 697, 403, 615, 13, 221, 523, 24, 899, 401, 326, 551, 670, 576, 102, 18, 33, 125, 77, 566, 115, 203, 197}, - {104, 319, 422, 945, 0, 81, 20, 43, 715, 32, 784, 693, 879, 7, 397, 74, 306, 207, 52, 681, 671, 2, 61, 173, 6, 636, 904, 95, 887, 5, 18, 192}, - {2, 29, 1, 46, 14, 52, 70, 262, 6, 26, 50, 67, 75, 96, 309, 38, 103, 112, 58, 19, 5, 163, 145, 83, 74, 220, 223, 357, 24, 69, 331, 25}, - {786, 929, 590, 771, 687, 626, 941, 178, 465, 259, 70, 5, 13, 21, 35, 534, 107, 518, 132, 49, 878, 48, 146, 121, 379, 279, 31, 767, 147, 195, 108, 125}, - {5, 2, 186, 45, 17, 29, 48, 50, 14, 61, 46, 155, 400, 1, 227, 171, 52, 58, 38, 54, 430, 209, 80, 281, 3, 106, 536, 311, 181, 243, 21, 502}, - {0, 32, 64, 95, 817, 494, 342, 403, 207, 202, 194, 389, 453, 365, 312, 180, 316, 5, 690, 237, 848, 577, 450, 61, 102, 523, 475, 289, 49, 241, 65, 482}, - {23, 13, 51, 15, 202, 515, 1, 0, 2, 12, 115, 4, 700, 5, 165, 753, 77, 457, 21, 141, 128, 10, 3, 64, 403, 32, 197, 318, 9, 11, 33, 117}, - {119, 2, 6, 76, 5, 17, 45, 292, 306, 240, 32, 1, 19, 84, 64, 61, 4, 209, 710, 80, 26, 0, 106, 27, 214, 25, 128, 129, 29, 179, 3, 113}, - {15, 515, 700, 1, 753, 0, 13, 23, 180, 120, 51, 2, 5, 33, 165, 197, 9, 450, 7, 260, 115, 523, 4, 12, 202, 141, 82, 77, 21, 102, 8, 6}, - {6, 138, 74, 280, 222, 85, 66, 226, 25, 42, 87, 204, 64, 337, 29, 135, 95, 174, 235, 26, 145, 65, 19, 32, 792, 294, 112, 52, 256, 2, 5, 22}, - {39, 9, 0, 101, 333, 158, 49, 252, 310, 254, 272, 68, 16, 18, 159, 286, 344, 455, 30, 109, 627, 327, 24, 105, 419, 100, 364, 22, 35, 1, 329, 709}, - {21, 5, 32, 14, 2, 1, 38, 72, 76, 54, 17, 3, 48, 221, 270, 0, 45, 46, 12, 181, 37, 89, 36, 50, 540, 290, 430, 10, 4, 741, 99, 23}, - {120, 137, 202, 269, 141, 260, 318, 450, 922, 494, 77, 291, 82, 15, 5, 351, 128, 1, 515, 326, 64, 854, 700, 352, 342, 21, 753, 678, 349, 32, 523, 90}, - {16, 24, 68, 35, 71, 18, 149, 118, 191, 167, 9, 0, 212, 124, 65, 246, 7, 67, 140, 189, 399, 101, 133, 60, 1, 108, 267, 114, 69, 92, 695, 154}, - {28, 0, 9, 67, 1, 22, 109, 36, 55, 65, 194, 114, 39, 83, 49, 69, 2, 35, 103, 50, 158, 208, 86, 420, 168, 289, 505, 24, 7, 185, 5, 323}, - {147, 325, 198, 427, 142, 178, 202, 798, 5, 376, 20, 318, 259, 43, 120, 450, 77, 234, 534, 904, 470, 465, 878, 725, 329, 14, 315, 0, 260, 858, 70, 61}, - {28, 0, 65, 9, 109, 1, 55, 67, 35, 22, 24, 39, 289, 7, 175, 14, 114, 2, 158, 124, 420, 194, 68, 16, 336, 36, 49, 69, 168, 570, 154, 505}, - {141, 180, 13, 115, 1, 23, 4, 269, 2, 202, 0, 317, 217, 51, 15, 5, 21, 352, 77, 318, 3, 752, 197, 10, 165, 365, 137, 341, 9, 515, 33, 64}, - {15, 515, 700, 0, 753, 1, 2, 13, 23, 9, 51, 5, 4, 901, 33, 7, 8, 3, 12, 93, 180, 120, 197, 6, 82, 341, 10, 141, 22, 260, 457, 115}, - {6, 74, 66, 1, 25, 75, 324, 380, 278, 26, 138, 85, 135, 500, 87, 42, 220, 841, 97, 350, 29, 19, 70, 226, 38, 21, 52, 606, 235, 889, 2, 14}, - {13, 23, 51, 12, 4, 15, 453, 0, 457, 1, 403, 165, 115, 3, 11, 2, 64, 5, 401, 10, 515, 37, 202, 33, 40, 32, 99, 475, 197, 700, 308, 17}, - {788, 180, 5, 83, 693, 319, 314, 4, 32, 21, 17, 11, 817, 3, 510, 498, 33, 12, 24, 104, 814, 120, 64, 117, 306, 804, 523, 450, 288, 160, 102, 43}, - {15, 1, 515, 13, 2, 700, 23, 0, 4, 753, 3, 341, 5, 51, 33, 11, 10, 6, 77, 7, 115, 102, 180, 165, 141, 9, 197, 217, 901, 40, 12, 64}, - {101, 18, 9, 167, 520, 16, 0, 118, 60, 212, 604, 364, 694, 24, 55, 252, 68, 917, 264, 35, 1, 121, 146, 363, 39, 100, 806, 5, 21, 166, 191, 28}, - {13, 23, 0, 33, 51, 141, 77, 4, 64, 2, 115, 217, 9, 102, 7, 202, 21, 10, 180, 3, 15, 128, 5, 269, 6, 32, 11, 16, 165, 352, 22, 317}, - {66, 135, 97, 74, 172, 6, 278, 7, 204, 324, 138, 174, 29, 85, 2, 87, 25, 140, 92, 192, 52, 38, 802, 69, 448, 500, 808, 620, 22, 1, 280, 232}, - {2, 24, 69, 6, 97, 7, 1, 0, 14, 298, 423, 66, 67, 29, 150, 25, 189, 267, 124, 74, 607, 18, 36, 81, 172, 33, 83, 38, 52, 273, 71, 809}, - {0, 9, 158, 39, 68, 49, 109, 16, 24, 333, 35, 344, 101, 22, 159, 254, 272, 30, 124, 65, 28, 18, 793, 154, 310, 252, 327, 105, 627, 419, 286, 55}, - {15, 515, 700, 10, 753, 33, 77, 180, 4, 341, 1, 197, 13, 115, 365, 23, 901, 317, 5, 102, 11, 217, 165, 117, 141, 40, 2, 3, 253, 21, 134, 55}, - {100, 166, 382, 478, 265, 264, 88, 39, 98, 1, 404, 274, 9, 593, 724, 921, 639, 438, 363, 682, 411, 31, 30, 812, 96, 447, 821, 905, 252, 0, 223, 435}, - {19, 283, 436, 53, 297, 26, 813, 432, 27, 128, 42, 25, 390, 503, 122, 736, 73, 123, 605, 63, 389, 529, 630, 250, 690, 65, 381, 444, 6, 269, 108, 216}, - {33, 202, 13, 128, 494, 0, 51, 141, 269, 1, 4, 2, 102, 180, 15, 137, 65, 95, 6, 450, 77, 40, 117, 59, 457, 36, 196, 817, 134, 86, 49, 515}, - {18, 16, 60, 68, 101, 167, 191, 118, 35, 121, 9, 212, 55, 0, 126, 1, 24, 647, 199, 146, 520, 107, 628, 621, 363, 71, 21, 28, 346, 92, 806, 727}, - {352, 230, 217, 531, 160, 93, 36, 669, 748, 854, 689, 258, 137, 871, 728, 699, 752, 251, 574, 202, 373, 351, 228, 120, 717, 260, 144, 219, 268, 82, 816, 1}, - {15, 515, 700, 753, 13, 23, 0, 51, 8, 1, 4, 82, 165, 77, 110, 33, 10, 180, 5, 202, 11, 22, 120, 12, 9, 197, 115, 93, 403, 141, 40, 351}, - {0, 9, 101, 217, 35, 88, 352, 100, 39, 175, 30, 68, 562, 752, 13, 317, 252, 115, 180, 197, 64, 1, 83, 141, 65, 213, 165, 230, 194, 36, 28, 265}, - {32, 64, 5, 470, 288, 90, 21, 147, 0, 95, 356, 22, 20, 519, 835, 312, 819, 18, 247, 182, 11, 97, 13, 4, 387, 49, 43, 298, 316, 48, 107, 7}, - {16, 14, 24, 1, 7, 2, 35, 0, 5, 50, 18, 69, 46, 12, 58, 75, 9, 67, 70, 163, 21, 54, 38, 48, 223, 502, 281, 37, 140, 60, 28, 10}, - {18, 265, 9, 252, 39, 195, 354, 411, 1, 16, 132, 101, 121, 682, 167, 203, 5, 363, 146, 593, 35, 333, 21, 271, 60, 13, 100, 0, 156, 327, 7, 520}, - {4, 13, 1, 115, 141, 23, 2, 180, 5, 0, 51, 3, 217, 202, 77, 15, 33, 269, 341, 318, 317, 21, 165, 515, 11, 10, 197, 365, 9, 137, 64, 352}, - {7, 24, 16, 14, 71, 35, 18, 92, 140, 189, 108, 149, 68, 60, 69, 150, 2, 230, 97, 66, 0, 458, 67, 1, 65, 251, 38, 314, 388, 267, 36, 46}, - {1, 22, 31, 36, 0, 2, 44, 5, 141, 105, 180, 170, 12, 64, 13, 98, 86, 55, 23, 21, 28, 164, 115, 127, 10, 125, 128, 4, 9, 239, 352, 197}, - {66, 7, 97, 2, 192, 20, 52, 43, 135, 74, 560, 107, 104, 0, 750, 147, 414, 29, 580, 173, 324, 376, 226, 194, 77, 174, 204, 38, 356, 64, 16, 470}, - {0, 101, 9, 68, 35, 124, 24, 65, 39, 16, 252, 100, 154, 166, 28, 364, 149, 694, 30, 88, 55, 346, 1, 419, 71, 439, 265, 289, 22, 21, 175, 158}, - {39, 9, 100, 30, 127, 0, 737, 856, 31, 836, 827, 254, 98, 931, 166, 88, 93, 1, 44, 190, 131, 228, 120, 395, 625, 385, 863, 264, 219, 373, 110, 28}, - {5, 17, 2, 3, 21, 45, 14, 155, 48, 32, 38, 1, 328, 181, 186, 46, 23, 51, 12, 61, 227, 29, 106, 54, 99, 133, 62, 832, 13, 37, 514, 543}, - {131, 613, 30, 224, 228, 716, 274, 100, 827, 406, 219, 856, 39, 190, 31, 88, 1, 166, 9, 44, 829, 863, 931, 93, 0, 187, 625, 924, 127, 98, 137, 254}, - {352, 217, 64, 141, 752, 269, 180, 864, 437, 372, 954, 115, 498, 177, 77, 349, 317, 318, 579, 291, 947, 197, 247, 0, 23, 717, 237, 304, 128, 457, 776, 678}, - {141, 217, 180, 317, 352, 115, 15, 341, 1, 23, 13, 365, 515, 752, 2, 64, 0, 5, 498, 700, 372, 165, 51, 237, 753, 77, 244, 197, 137, 4, 21, 253}, - {5, 2, 17, 14, 1, 45, 3, 38, 21, 29, 181, 58, 46, 48, 50, 133, 114, 171, 61, 155, 32, 6, 186, 281, 361, 12, 36, 54, 4, 13, 52, 514}, - {6, 2, 119, 25, 790, 4, 45, 483, 655, 113, 1, 29, 76, 26, 32, 19, 887, 17, 128, 0, 292, 833, 59, 61, 106, 64, 77, 814, 14, 151, 84, 42}, - {13, 23, 2, 0, 51, 4, 1, 115, 141, 3, 5, 180, 33, 217, 77, 9, 202, 11, 7, 15, 10, 6, 317, 64, 21, 197, 515, 165, 102, 128, 22, 269}, - {13, 23, 51, 202, 21, 5, 1, 15, 141, 165, 120, 2, 115, 12, 32, 0, 515, 128, 318, 64, 125, 700, 4, 403, 197, 453, 180, 457, 3, 7, 10, 6}, - {9, 39, 31, 30, 0, 127, 1, 44, 100, 131, 98, 187, 385, 276, 88, 442, 219, 908, 254, 116, 49, 166, 935, 28, 201, 36, 141, 827, 137, 299, 284, 21}, - {22, 49, 28, 109, 9, 185, 105, 95, 1, 131, 159, 272, 36, 67, 86, 254, 39, 55, 35, 0, 505, 31, 83, 169, 208, 327, 286, 98, 168, 535, 312, 708}, - {5, 1, 2, 21, 0, 12, 48, 22, 10, 14, 36, 3, 32, 17, 23, 54, 86, 38, 4, 51, 13, 37, 137, 50, 65, 281, 114, 45, 28, 99, 58, 202}, - {141, 269, 352, 82, 217, 351, 180, 854, 372, 922, 752, 1, 15, 260, 317, 318, 515, 202, 64, 700, 120, 349, 954, 753, 77, 35, 67, 717, 898, 137, 365, 115}, - {144, 203, 613, 418, 326, 406, 96, 669, 137, 679, 1, 228, 494, 822, 840, 317, 36, 83, 855, 160, 817, 859, 856, 816, 217, 831, 345, 93, 876, 77, 44, 251}, - {15, 13, 515, 23, 700, 753, 51, 1, 33, 0, 202, 21, 2, 5, 180, 141, 120, 165, 217, 82, 12, 117, 4, 352, 269, 197, 115, 32, 3, 9, 134, 260}, - {13, 23, 115, 1, 0, 51, 4, 77, 2, 33, 15, 141, 10, 5, 341, 180, 515, 3, 217, 202, 9, 365, 317, 64, 700, 102, 11, 165, 197, 22, 753, 7}, - {531, 943, 373, 160, 728, 93, 206, 260, 261, 559, 964, 269, 717, 535, 332, 384, - 365, 295, 110, 533, 141, 10, 180, 352, 244, 137, 120, 55, 959, 564, 36, 253}, - {1, 31, 36, 170, 22, 55, 44, 10, 86, 64, 127, 0, 2, 98, 301, 164, 740, 338, 237, 143, 5, 125, 116, 13, 242, 141, 299, 180, 23, 169, 105, 12}, - {13, 23, 141, 77, 51, 4, 64, 32, 33, 202, 115, 269, 102, 128, 21, 0, 177, 180, 318, 90, 40, 10, 7, 5, 137, 15, 217, 352, 9, 291, 59, 22}, - {202, 120, 260, 318, 77, 15, 450, 269, 1, 82, 33, 23, 141, 13, 51, 515, 351, 128, 700, 5, 64, 326, 137, 21, 102, 110, 753, 494, 93, 523, 817, 165}, - {523, 899, 102, 33, 730, 15, 23, 403, 719, 117, 153, 13, 515, 51, 475, 4, 700, 5, 453, 817, 196, 753, 494, 40, 202, 120, 1, 2, 450, 457, 17, 421}, - {202, 403, 494, 450, 120, 817, 523, 475, 318, 453, 33, 402, 128, 77, 13, 51, 260, 576, 342, 102, 15, 23, 515, 4, 700, 5, 82, 753, 326, 210, 137, 615}, - {2, 29, 112, 66, 7, 52, 70, 151, 58, 87, 135, 5, 74, 226, 307, 6, 14, 186, 1, 45, 549, 172, 644, 25, 113, 287, 46, 155, 334, 64, 294, 97}, - {1, 77, 349, 291, 260, 120, 652, 102, 5, 39, 64, 269, 9, 33, 340, 342, 13, 98, 888, 698, 23, 296, 100, 318, 51, 202, 87, 137, 638, 128, 50, 850}, - {1, 13, 15, 2, 0, 4, 23, 515, 5, 141, 180, 3, 700, 341, 115, 51, 753, 269, 77, 901, 197, 352, 217, 33, 21, 11, 365, 6, 165, 202, 7, 317}, - {7, 14, 16, 2, 46, 5, 70, 58, 1, 38, 24, 35, 92, 163, 0, 75, 21, 18, 50, 54, 140, 12, 87, 220, 155, 69, 171, 23, 60, 9, 13, 307}, - {2, 29, 66, 226, 135, 7, 87, 74, 52, 278, 6, 75, 222, 220, 294, 70, 97, 1, 145, 25, 172, 262, 324, 38, 69, 112, 331, 92, 5, 14, 140, 26}, - {15, 515, 700, 753, 33, 77, 117, 4, 1, 102, 134, 40, 153, 11, 13, 196, 217, 21, 5, 51, 23, 115, 32, 3, 2, 202, 141, 137, 128, 291, 48, 177}, - {15, 217, 82, 515, 351, 141, 317, 1, 13, 700, 260, 77, 110, 120, 115, 854, 23, 753, 180, 51, 21, 36, 137, 922, 5, 64, 365, 352, 291, 202, 93, 341}, - {31, 190, 30, 373, 120, 110, 863, 88, 44, 127, 908, 856, 260, 318, 82, 98, 93, 187, 836, 717, 935, 39, 442, 131, 141, 254, 228, 219, 1, 968, 77, 116}, - {23, 13, 308, 9, 165, 115, 51, 21, 401, 125, 49, 39, 197, 391, 159, 254, 217, 743, 28, 438, 773, 629, 558, 386, 341, 95, 32, 317, 876, 679, 109, 166}, - {49, 5, 43, 165, 7, 0, 21, 104, 125, 22, 173, 422, 64, 13, 623, 102, 20, 18, 314, 95, 91, 141, 23, 31, 193, 51, 391, 900, 779, 558, 92, 232}, - {1, 4, 13, 2, 15, 0, 23, 515, 77, 3, 341, 33, 5, 700, 115, 51, 202, 753, 141, 180, 11, 10, 102, 217, 6, 901, 40, 7, 197, 318, 317, 365}, - {93, 843, 295, 120, 36, 160, 206, 261, 10, 137, 567, 110, 384, 141, 943, 268, 201, 332, 258, 55, 1, 180, 64, 116, 44, 144, 699, 203, 282, 31, 260, 373}, - {81, 7, 192, 426, 43, 173, 172, 104, 879, 91, 5, 712, 715, 526, 6, 97, 568, 95, 448, 66, 33, 861, 560, 32, 49, 20, 0, 636, 232, 825, 2, 22}, - {475, 403, 51, 453, 33, 102, 13, 23, 494, 202, 0, 196, 15, 77, 153, 18, 4, 117, 515, 450, 318, 22, 730, 128, 700, 421, 65, 753, 269, 402, 134, 817}, - {141, 269, 260, 318, 202, 120, 352, 349, 82, 351, 1, 5, 854, 137, 64, 291, 15, 922, 180, 851, 32, 77, 515, 372, 21, 700, 7, 217, 13, 947, 33, 753}, - {15, 515, 700, 753, 1, 13, 0, 2, 4, 23, 3, 5, 180, 115, 197, 12, 51, 165, 217, 10, 961, 9, 6, 141, 352, 21, 8, 7, 33, 77, 457, 120}, - {39, 166, 9, 30, 0, 101, 274, 404, 252, 333, 190, 100, 158, 438, 310, 88, 68, 265, 656, 21, 1, 530, 329, 344, 49, 539, 625, 254, 13, 131, 48, 419}, - {0, 1, 28, 9, 22, 12, 65, 83, 67, 36, 5, 2, 50, 55, 96, 109, 16, 13, 24, 23, 21, 238, 49, 18, 285, 160, 128, 39, 69, 114, 7, 323}, - {15, 515, 700, 1, 0, 753, 23, 2, 13, 51, 5, 180, 115, 6, 3, 9, 197, 12, 457, 120, 7, 165, 901, 82, 4, 21, 8, 141, 31, 33, 719, 341}, - {9, 39, 30, 0, 28, 166, 22, 49, 180, 1, 352, 35, 317, 158, 88, 141, 498, 131, 115, 345, 752, 128, 228, 217, 100, 83, 219, 930, 13, 251, 365, 36}, - {5, 61, 45, 2, 80, 29, 311, 209, 6, 17, 58, 1, 151, 106, 454, 667, 243, 70, 52, 496, 287, 592, 255, 738, 64, 74, 483, 14, 27, 32, 112, 19}, - {31, 125, 22, 44, 299, 456, 685, 242, 599, 116, 170, 28, 0, 1, 492, 393, 506, 144, 558, 10, 268, 301, 239, 23, 13, 36, 963, 367, 55, 206, 105, 95}, - {187, 258, 926, 574, 839, 93, 228, 860, 406, 219, 871, 160, 137, 531, 224, 116, 120, 902, 669, 201, 36, 131, 44, 144, 843, 533, 318, 384, 442, 1, 434, 268}, - {7, 107, 75, 16, 87, 9, 64, 177, 24, 18, 291, 77, 349, 141, 60, 232, 23, 0, 51, 269, 132, 14, 5, 21, 70, 32, 678, 112, 126, 121, 71, 947}, - {15, 515, 700, 753, 1, 0, 2, 13, 5, 3, 23, 180, 4, 115, 901, 51, 6, 8, 961, 9, 7, 10, 12, 82, 197, 22, 141, 341, 33, 120, 365, 457}, - {13, 23, 51, 1, 5, 202, 2, 12, 15, 21, 165, 141, 0, 115, 3, 4, 32, 515, 197, 10, 180, 318, 128, 120, 64, 700, 6, 7, 403, 269, 457, 137}, - {1, 2, 0, 77, 64, 3, 141, 13, 33, 15, 23, 10, 6, 102, 5, 515, 180, 4, 117, 7, 700, 165, 11, 217, 269, 40, 753, 115, 128, 17, 197, 134}, - {345, 531, 332, 269, 260, 317, 717, 752, 373, 351, 180, 352, 728, 82, 10, 365, 160, 533, 217, 143, 498, 251, 244, 93, 341, 901, 36, 1, 141, 898, 55, 864}, - {16, 7, 33, 189, 92, 77, 388, 60, 140, 35, 102, 24, 14, 1, 230, 21, 150, 117, 733, 314, 18, 915, 71, 13, 108, 134, 5, 64, 69, 2, 98, 22}, - {142, 202, 234, 178, 5, 786, 77, 49, 70, 0, 416, 450, 639, 878, 1, 48, 21, 929, 147, 259, 315, 455, 198, 120, 12, 481, 163, 113, 846, 329, 318, 22}, - {81, 715, 192, 0, 173, 712, 681, 104, 636, 91, 74, 20, 750, 370, 7, 718, 95, 879, 22, 43, 825, 560, 422, 64, 207, 49, 172, 18, 397, 10, 426, 319}, - {13, 23, 15, 51, 515, 0, 700, 753, 4, 1, 961, 2, 10, 115, 457, 11, 33, 453, 3, 5, 9, 40, 12, 197, 165, 77, 401, 475, 64, 102, 22, 569}, - {64, 297, 5, 445, 95, 61, 250, 311, 80, 34, 17, 312, 45, 2, 86, 472, 58, 14, 180, 53, 22, 151, 869, 738, 247, 237, 29, 1, 128, 165, 21, 288}, - {16, 24, 18, 71, 7, 35, 118, 92, 14, 154, 60, 68, 0, 149, 28, 302, 124, 150, 55, 175, 2, 9, 97, 1, 429, 20, 108, 273, 22, 65, 43, 126}, - {195, 360, 156, 771, 132, 163, 626, 687, 591, 371, 883, 146, 121, 846, 70, 586, 379, 13, 293, 98, 407, 48, 761, 296, 354, 18, 31, 1, 55, 49, 21, 105}, - {202, 13, 77, 23, 318, 33, 51, 0, 4, 141, 5, 21, 217, 32, 291, 102, 64, 128, 15, 10, 9, 494, 269, 137, 515, 403, 1, 31, 117, 700, 120, 317}, - {7, 192, 97, 81, 172, 66, 426, 173, 43, 715, 712, 232, 861, 879, 104, 330, 568, 298, 74, 893, 885, 526, 387, 825, 92, 140, 91, 14, 636, 6, 5, 448}, - {2, 1, 14, 6, 67, 7, 65, 69, 24, 36, 66, 124, 108, 83, 38, 29, 22, 86, 0, 18, 484, 5, 28, 46, 12, 10, 25, 302, 150, 16, 650, 74}, - {33, 77, 13, 202, 102, 4, 0, 23, 128, 51, 141, 64, 318, 22, 403, 269, 137, 10, 15, 40, 494, 117, 32, 59, 11, 153, 1, 21, 177, 196, 515, 115}, - {269, 141, 318, 77, 349, 291, 217, 202, 33, 15, 372, 304, 515, 22, 102, 177, 351, 700, 352, 120, 5, 137, 10, 317, 260, 753, 64, 851, 854, 403, 49, 21}, - {6, 74, 66, 85, 138, 25, 87, 42, 135, 26, 226, 222, 280, 29, 75, 500, 220, 278, 792, 70, 19, 2, 1, 294, 204, 64, 32, 145, 853, 112, 52, 174}, - {9, 0, 105, 39, 16, 18, 1, 101, 272, 31, 127, 98, 24, 518, 333, 252, 310, 28, 68, 737, 846, 371, 158, 916, 938, 49, 30, 7, 286, 35, 301, 455}, - {2, 1, 14, 67, 24, 46, 83, 108, 69, 29, 38, 103, 114, 36, 6, 133, 18, 0, 28, 7, 65, 52, 236, 75, 50, 398, 5, 309, 135, 16, 278, 160}, - {22, 1, 28, 105, 49, 95, 0, 2, 67, 55, 36, 239, 168, 159, 65, 35, 14, 170, 320, 164, 9, 7, 10, 5, 114, 12, 83, 64, 194, 109, 24, 301}, - {7, 66, 172, 97, 92, 140, 232, 568, 298, 14, 192, 314, 16, 380, 135, 324, 2, 330, 74, 38, 357, 448, 126, 69, 35, 5, 107, 6, 387, 60, 204, 572}, - {2, 29, 1, 14, 5, 6, 46, 133, 114, 50, 52, 26, 218, 108, 19, 13, 366, 236, 27, 45, 70, 17, 58, 23, 86, 51, 137, 65, 112, 38, 25, 12}, - {6, 1, 74, 25, 2, 26, 29, 66, 42, 19, 75, 14, 388, 67, 108, 70, 52, 85, 103, 65, 38, 138, 357, 133, 114, 594, 324, 516, 603, 96, 309, 69}, - {22, 9, 28, 1, 36, 49, 109, 105, 86, 95, 131, 31, 169, 39, 0, 141, 272, 159, 44, 55, 98, 180, 13, 30, 185, 115, 83, 128, 352, 137, 64, 208}, - {203, 822, 326, 23, 77, 859, 403, 494, 576, 39, 473, 182, 33, 1, 691, 100, 18, 217, 13, 817, 411, 447, 363, 102, 93, 966, 96, 478, 291, 704, 310, 120}, - {15, 515, 700, 753, 33, 77, 117, 4, 102, 134, 115, 153, 13, 1, 40, 217, 11, 196, 341, 2, 5, 3, 23, 317, 365, 0, 21, 291, 32, 51, 12, 569}, - {15, 515, 700, 753, 13, 0, 23, 1, 8, 82, 51, 165, 197, 120, 180, 2, 9, 33, 4, 110, 5, 12, 10, 260, 351, 386, 141, 7, 457, 475, 93, 901}, - {1, 23, 13, 15, 51, 0, 21, 2, 515, 5, 141, 180, 120, 165, 700, 202, 197, 4, 753, 12, 33, 9, 7, 82, 115, 93, 3, 352, 260, 6, 110, 48}, - {15, 515, 700, 753, 0, 1, 2, 5, 3, 4, 8, 13, 180, 341, 10, 23, 7, 6, 9, 51, 77, 197, 961, 115, 165, 82, 120, 31, 22, 202, 457, 217}, - {559, 661, 922, 564, 141, 533, 10, 317, 373, 110, 143, 269, 244, 260, 332, 261, - 93, 642, 752, 295, 351, 876, 531, 843, 180, 206, 728, 384, 352, 1, 434, 120}, - {15, 515, 1, 0, 700, 2, 13, 23, 753, 5, 51, 180, 3, 165, 12, 6, 197, 115, 4, 9, 7, 21, 719, 8, 457, 82, 141, 120, 33, 22, 901, 10}, - {198, 234, 0, 325, 5, 77, 202, 416, 20, 147, 32, 43, 639, 315, 49, 61, 450, 455, 142, 21, 113, 230, 22, 318, 725, 342, 207, 13, 95, 904, 494, 10}, - {447, 264, 363, 9, 411, 676, 682, 1, 156, 664, 821, 478, 166, 354, 812, 39, 100, 905, 382, 897, 98, 18, 759, 404, 31, 101, 724, 5, 265, 223, 88, 13}, - {24, 14, 69, 16, 35, 18, 2, 7, 108, 189, 71, 67, 267, 149, 1, 46, 68, 83, 38, 140, 0, 236, 251, 9, 388, 60, 133, 103, 65, 28, 29, 50}, - {16, 7, 35, 20, 14, 18, 109, 2, 43, 120, 107, 60, 1, 121, 326, 907, 553, 77, 13, 147, 23, 82, 68, 260, 0, 403, 5, 24, 202, 126, 265, 199}, - {30, 131, 187, 276, 31, 44, 613, 442, 39, 9, 190, 228, 1, 839, 116, 935, 908, 219, 127, 88, 244, 224, 110, 137, 93, 201, 98, 141, 36, 567, 0, 856}, - {98, 223, 1, 393, 812, 265, 100, 421, 593, 834, 697, 48, 51, 410, 791, 382, 21, 88, 31, 284, 9, 125, 96, 293, 230, 23, 213, 217, 656, 689, 541, 5}, - {98, 51, 127, 219, 616, 258, 105, 293, 395, 421, 924, 512, 31, 308, 23, 201, 116, 44, 301, 272, 763, 276, 125, 13, 453, 170, 401, 295, 261, 944, 115, 567}, - {253, 110, 951, 352, 811, 206, 332, 180, 141, 244, 282, 10, 854, 417, 642, 638, - 559, 752, 143, 911, 260, 55, 93, 533, 499, 498, 661, 120, 351, 959, 564, 341}, - {49, 9, 159, 254, 272, 158, 0, 131, 28, 39, 627, 105, 327, 286, 22, 518, 688, 578, 68, 347, 374, 101, 224, 424, 95, 35, 219, 24, 16, 364, 65, 344}, - {105, 22, 131, 272, 98, 286, 327, 109, 374, 239, 28, 95, 320, 219, 9, 224, 55, 127, 187, 36, 578, 169, 64, 185, 538, 1, 159, 10, 371, 634, 49, 616}, - {691, 478, 340, 1, 658, 914, 724, 363, 744, 698, 156, 772, 411, 296, 682, 447, 9, 284, 335, 98, 264, 303, 909, 21, 354, 410, 225, 13, 664, 686, 88, 919}, - {16, 24, 35, 18, 71, 7, 140, 108, 189, 267, 92, 60, 14, 230, 68, 69, 9, 1, 149, 46, 246, 191, 388, 167, 2, 0, 118, 236, 133, 21, 674, 5}, - {9, 0, 127, 31, 98, 371, 395, 39, 737, 49, 1, 44, 385, 272, 512, 28, 293, 242, 836, 761, 254, 299, 101, 16, 187, 22, 116, 158, 159, 131, 18, 21}, - {16, 18, 68, 0, 60, 35, 9, 101, 252, 28, 118, 24, 419, 55, 7, 109, 604, 71, 39, 121, 22, 364, 14, 158, 191, 167, 925, 126, 329, 21, 92, 49}, - {116, 268, 203, 93, 206, 692, 551, 31, 417, 940, 499, 8, 473, 44, 202, 523, 959, 0, 120, 137, 559, 22, 450, 403, 576, 10, 728, 299, 13, 326, 51, 1}, - {225, 459, 744, 1, 919, 914, 691, 330, 622, 21, 141, 223, 5, 284, 934, 335, 88, 538, 340, 82, 385, 839, 363, 120, 478, 98, 48, 30, 64, 32, 686, 166}, - {5, 1, 2, 0, 14, 36, 21, 281, 12, 48, 50, 67, 22, 28, 54, 83, 24, 218, 38, 10, 181, 9, 32, 18, 65, 58, 45, 114, 430, 17, 99, 37}, - {137, 450, 202, 704, 120, 260, 326, 318, 968, 269, 851, 403, 291, 77, 23, 141, 182, 310, 494, 373, 351, 457, 82, 890, 349, 110, 60, 128, 817, 678, 105, 96}, - {15, 515, 700, 753, 4, 33, 13, 23, 77, 5, 40, 11, 102, 93, 1, 21, 110, 51, 82, 117, 141, 2, 10, 8, 32, 64, 120, 31, 202, 3, 217, 115}, - {15, 13, 1, 23, 515, 0, 51, 2, 700, 5, 753, 21, 180, 141, 165, 3, 12, 115, 197, 4, 7, 6, 457, 9, 352, 202, 33, 8, 719, 120, 77, 341}, - {219, 127, 258, 98, 276, 201, 131, 395, 944, 293, 116, 284, 567, 31, 242, 105, 137, 935, 295, 44, 403, 860, 51, 224, 576, 456, 9, 371, 578, 475, 202, 512}, - {16, 7, 18, 35, 60, 0, 14, 20, 118, 28, 68, 22, 2, 24, 1, 92, 158, 107, 5, 49, 154, 126, 109, 12, 43, 10, 55, 6, 677, 71, 21, 168}, - {93, 728, 531, 160, 559, 373, 574, 120, 295, 860, 533, 269, 717, 260, 926, 902, - 258, 318, 36, 201, 261, 434, 851, 137, 617, 141, 187, 352, 843, 384, 332, 251}, - {28, 0, 1, 9, 22, 109, 83, 39, 49, 12, 36, 67, 55, 5, 96, 2, 128, 30, 158, 69, 21, 23, 160, 208, 35, 13, 65, 323, 50, 141, 194, 238}, - {23, 13, 51, 1, 5, 15, 141, 21, 0, 2, 165, 515, 202, 700, 12, 197, 180, 120, 32, 115, 4, 753, 64, 9, 7, 269, 6, 3, 125, 386, 48, 453}, - {5, 21, 13, 49, 14, 20, 7, 23, 43, 32, 1, 0, 652, 48, 713, 22, 38, 2, 16, 132, 955, 107, 12, 279, 24, 888, 197, 640, 70, 303, 18, 638}, - {9, 0, 28, 39, 1, 30, 35, 101, 22, 67, 83, 141, 49, 175, 36, 68, 55, 88, 13, 251, 10, 69, 23, 158, 180, 115, 64, 100, 217, 65, 345, 166}, - {260, 120, 82, 269, 5, 450, 351, 1, 202, 141, 854, 13, 77, 922, 32, 33, 137, 4, 23, 125, 291, 21, 15, 515, 165, 349, 177, 700, 318, 326, 180, 753}, - {121, 16, 18, 35, 363, 101, 60, 20, 107, 14, 68, 259, 621, 55, 604, 43, 7, 252, 9, 364, 126, 0, 167, 191, 5, 407, 132, 28, 199, 419, 146, 10}, - {13, 23, 51, 1, 15, 0, 2, 141, 5, 515, 12, 21, 700, 115, 165, 180, 4, 753, 3, 197, 202, 32, 9, 120, 7, 8, 6, 11, 37, 10, 457, 269}, - {201, 144, 206, 443, 418, 203, 435, 96, 335, 459, 187, 1, 88, 332, 330, 321, 269, 934, 30, 372, 822, 521, 268, 326, 44, 523, 382, 141, 410, 264, 494, 473}, - {31, 44, 276, 201, 116, 131, 284, 662, 567, 144, 9, 489, 98, 295, 268, 434, 0, 30, 137, 39, 93, 1, 187, 22, 219, 918, 110, 299, 141, 36, 224, 384}, - {520, 478, 664, 1, 264, 604, 9, 167, 777, 759, 411, 0, 806, 724, 48, 21, 101, 68, 647, 936, 363, 223, 118, 682, 410, 18, 100, 16, 252, 98, 265, 13}, - {23, 70, 21, 87, 60, 75, 120, 182, 163, 379, 92, 18, 7, 937, 71, 121, 446, 132, 24, 98, 931, 126, 107, 77, 795, 195, 115, 44, 411, 146, 51, 850}, - {39, 9, 0, 737, 127, 31, 846, 98, 1, 827, 105, 310, 371, 30, 254, 100, 44, 18, 395, 242, 272, 101, 385, 916, 836, 16, 265, 131, 938, 93, 166, 557}, - {279, 20, 43, 126, 107, 7, 92, 16, 356, 362, 60, 595, 246, 359, 598, 35, 0, 683, 939, 653, 121, 97, 125, 441, 399, 392, 150, 199, 48, 230, 14, 649}, - {206, 417, 93, 959, 499, 728, 8, 559, 120, 473, 137, 141, 10, 564, 31, 260, 44, 450, 203, 341, 253, 244, 373, 116, 143, 638, 268, 180, 352, 110, 318, 940}, - {259, 465, 147, 132, 590, 687, 534, 199, 581, 146, 941, 427, 107, 640, 279, 178, 121, 5, 195, 150, 522, 955, 198, 35, 786, 929, 798, 142, 1, 21, 325, 626}, - {523, 15, 120, 450, 202, 515, 403, 51, 817, 700, 13, 753, 23, 457, 33, 899, 128, 64, 730, 102, 494, 342, 115, 719, 453, 196, 49, 99, 318, 421, 308, 5}, - {141, 559, 10, 244, 365, 564, 661, 180, 253, 143, 752, 110, 55, 317, 533, 341, 901, 93, 373, 206, 535, 160, 82, 922, 260, 36, 531, 964, 352, 332, 261, 197}, - {219, 258, 98, 127, 276, 964, 943, 137, 843, 535, 201, 935, 131, 860, 261, 295, 284, 567, 206, 44, 116, 31, 253, 492, 203, 332, 160, 615, 36, 93, 55, 692}, - {0, 319, 422, 207, 945, 693, 577, 887, 32, 804, 95, 344, 104, 904, 61, 20, 5, 43, 7, 725, 113, 510, 306, 102, 49, 263, 153, 426, 33, 83, 22, 9}, - {1, 22, 0, 5, 12, 2, 36, 21, 28, 86, 49, 105, 9, 10, 23, 13, 141, 95, 31, 55, 128, 37, 51, 4, 83, 202, 3, 64, 96, 7, 32, 44}, - {15, 515, 13, 700, 1, 0, 753, 2, 23, 3, 4, 5, 51, 10, 115, 197, 6, 33, 12, 9, 165, 7, 8, 77, 11, 961, 180, 269, 141, 22, 120, 457}, - {15, 1, 23, 120, 77, 13, 515, 51, 141, 202, 700, 180, 110, 137, 260, 753, 326, 5, 128, 102, 0, 21, 2, 165, 269, 33, 197, 450, 318, 217, 93, 115}, - {15, 515, 1, 700, 0, 753, 13, 2, 23, 180, 51, 5, 120, 4, 9, 115, 197, 12, 7, 165, 21, 33, 6, 82, 3, 8, 523, 901, 31, 141, 457, 260}, - {16, 18, 24, 7, 92, 35, 60, 75, 9, 13, 71, 14, 0, 108, 50, 21, 126, 121, 1, 140, 23, 5, 132, 146, 2, 12, 128, 10, 64, 141, 70, 87}, - {180, 341, 901, 15, 515, 1, 365, 700, 0, 2, 197, 753, 115, 4, 10, 13, 752, 5, 3, 8, 165, 317, 141, 23, 143, 873, 44, 31, 569, 55, 93, 6}, - {9, 0, 175, 35, 101, 28, 39, 67, 68, 1, 65, 83, 30, 69, 364, 336, 22, 114, 55, 124, 194, 158, 100, 289, 252, 166, 64, 345, 103, 36, 50, 88}, - {64, 165, 180, 197, 115, 247, 217, 237, 21, 13, 32, 316, 22, 141, 352, 72, 288, 304, 95, 225, 76, 391, 386, 16, 468, 90, 49, 35, 365, 640, 372, 23}, - {15, 515, 700, 13, 753, 1, 0, 2, 23, 4, 5, 3, 115, 51, 141, 197, 12, 10, 180, 961, 7, 9, 21, 33, 217, 6, 8, 165, 457, 11, 77, 341}, - {132, 121, 199, 146, 60, 279, 493, 640, 407, 598, 126, 195, 534, 581, 955, 590, 107, 5, 150, 35, 522, 49, 259, 16, 18, 360, 156, 0, 147, 362, 21, 167}, - {0, 1, 28, 9, 22, 5, 36, 12, 65, 24, 67, 96, 2, 83, 18, 50, 114, 55, 21, 16, 7, 10, 23, 14, 13, 160, 137, 51, 48, 218, 103, 69}, - {93, 120, 957, 77, 30, 968, 459, 110, 137, 160, 613, 102, 202, 352, 373, 141, 31, 372, 217, 330, 190, 318, 269, 260, 203, 44, 28, 473, 228, 177, 863, 704}, - {15, 515, 700, 0, 753, 1, 13, 23, 2, 51, 5, 9, 120, 82, 4, 7, 901, 197, 10, 8, 260, 180, 341, 12, 33, 6, 3, 523, 165, 102, 115, 141}, - {206, 417, 8, 141, 499, 44, 244, 93, 31, 10, 137, 253, 559, 116, 728, 144, 120, 564, 269, 638, 203, 352, 143, 260, 341, 752, 268, 717, 951, 180, 160, 110}, - {530, 254, 228, 1, 96, 21, 406, 39, 827, 31, 669, 840, 613, 829, 137, 679, 166, 98, 23, 51, 960, 438, 131, 93, 48, 224, 219, 317, 310, 36, 876, 190}, - {15, 515, 700, 753, 13, 457, 0, 197, 719, 1, 165, 82, 23, 8, 120, 730, 2, 10, 12, 180, 134, 5, 9, 141, 260, 4, 351, 51, 115, 3, 341, 899}, - {0, 16, 68, 9, 24, 28, 18, 35, 252, 109, 39, 419, 124, 158, 154, 55, 101, 71, 22, 118, 60, 7, 49, 65, 333, 14, 1, 10, 329, 364, 677, 346}, - {1, 15, 13, 23, 515, 51, 120, 0, 700, 180, 2, 165, 5, 753, 141, 197, 21, 33, 202, 102, 260, 4, 9, 12, 7, 326, 137, 450, 115, 6, 82, 110}, - {535, 253, 352, 564, 110, 365, 82, 180, 341, 10, 854, 533, 55, 898, 244, 901, - 873, 141, 752, 143, 642, 559, 498, 317, 36, 951, 115, 964, 638, 282, 661, 197}, - {31, 44, 125, 338, 116, 64, 242, 36, 1, 10, 55, 22, 456, 237, 180, 13, 299, 164, 506, 86, 23, 165, 558, 143, 0, 762, 492, 479, 844, 546, 93, 8}, - {13, 23, 4, 1, 202, 2, 0, 51, 115, 77, 141, 180, 5, 15, 217, 3, 33, 11, 515, 317, 9, 10, 102, 21, 700, 341, 365, 318, 269, 64, 32, 128}, - {9, 39, 0, 166, 68, 101, 28, 364, 30, 158, 562, 35, 175, 65, 333, 154, 49, 404, 706, 124, 21, 252, 274, 168, 190, 289, 100, 570, 16, 1, 310, 346}, - {15, 515, 700, 753, 341, 13, 0, 23, 1, 33, 141, 4, 260, 82, 77, 51, 351, 180, 9, 5, 115, 137, 10, 217, 11, 120, 102, 40, 349, 269, 202, 854} -#else -#include "Table4.h" -#endif -}; - -const uint8_t g_best_total_orderings3[NUM_UNIQUE_TOTAL_ORDERINGS3][32] = { - {12, 1, 3, 5, 27, 2, 4, 38, 8, 7, 16, 18, 6, 10, 41, 79, 40, 23, 46, 9, 20, 88, 22, 37, 14, 19, 24, 126, 99, 119, 35, 11}, - {7, 64, 116, 14, 94, 30, 8, 42, 1, 108, 47, 55, 137, 10, 134, 95, 96, 115, 69, 32, 63, 29, 90, 113, 11, 148, 16, 103, 19, 9, 34, 25}, - {12, 1, 0, 5, 3, 7, 4, 27, 8, 6, 38, 40, 41, 16, 18, 46, 9, 10, 20, 23, 79, 62, 14, 22, 88, 99, 37, 126, 92, 19, 120, 11}, - {16, 88, 27, 18, 46, 48, 126, 107, 79, 19, 59, 38, 37, 65, 23, 66, 0, 2, 3, 43, 12, 151, 28, 25, 5, 87, 72, 40, 1, 20, 52, 92}, - {79, 48, 88, 16, 27, 65, 18, 38, 46, 19, 37, 4, 72, 33, 126, 41, 52, 0, 12, 92, 5, 1, 2, 107, 3, 77, 23, 91, 43, 51, 22, 74}, - {1, 8, 41, 122, 10, 22, 2, 0, 87, 24, 37, 120, 38, 7, 39, 4, 5, 3, 9, 92, 62, 59, 23, 16, 104, 11, 27, 79, 19, 26, 25, 32}, - {2, 76, 99, 28, 40, 86, 93, 21, 138, 60, 6, 0, 17, 128, 145, 119, 98, 144, 141, 82, 147, 54, 67, 75, 5, 12, 27, 132, 146, 1, 38, 14}, - {47, 7, 64, 90, 1, 118, 116, 85, 57, 14, 30, 94, 50, 45, 137, 134, 8, 42, 69, 139, 55, 68, 58, 108, 95, 29, 10, 115, 0, 32, 2, 11}, - {49, 8, 10, 30, 124, 11, 32, 113, 130, 58, 125, 9, 100, 53, 104, 115, 131, 103, 24, 7, 1, 39, 45, 36, 139, 0, 137, 22, 90, 44, 114, 105}, - {9, 38, 72, 125, 49, 41, 84, 11, 13, 5, 27, 0, 16, 92, 8, 2, 65, 105, 10, 18, 48, 29, 127, 131, 36, 14, 1, 46, 111, 79, 130, 12}, - {130, 8, 10, 100, 104, 131, 49, 32, 53, 39, 30, 36, 113, 24, 11, 22, 124, 44, 83, 58, 7, 103, 1, 4, 9, 125, 5, 0, 91, 33, 115, 74}, - {114, 11, 58, 8, 120, 49, 9, 124, 142, 111, 41, 30, 10, 0, 97, 130, 62, 84, 38, 5, 72, 125, 92, 127, 100, 27, 139, 113, 13, 132, 32, 1}, - {60, 46, 28, 27, 40, 20, 0, 17, 18, 2, 126, 16, 6, 38, 86, 23, 79, 54, 1, 93, 5, 88, 41, 14, 21, 111, 7, 48, 3, 84, 72, 62}, - {72, 92, 38, 65, 84, 48, 41, 79, 27, 16, 29, 111, 88, 5, 18, 46, 1, 0, 152, 14, 37, 19, 77, 42, 132, 7, 22, 13, 119, 56, 12, 2}, - {7, 55, 1, 95, 29, 56, 64, 116, 143, 8, 14, 30, 47, 94, 152, 90, 65, 67, 10, 133, 42, 72, 146, 84, 16, 48, 6, 0, 25, 108, 77, 21}, - {27, 23, 20, 5, 0, 79, 38, 2, 3, 1, 59, 46, 4, 41, 33, 86, 37, 87, 88, 92, 7, 126, 43, 8, 22, 152, 151, 150, 149, 148, 147, 146}, - {12, 0, 1, 2, 7, 6, 3, 5, 28, 4, 8, 14, 60, 40, 17, 19, 21, 86, 126, 93, 10, 18, 9, 29, 48, 99, 65, 25, 84, 119, 72, 41}, - {60, 40, 99, 2, 54, 12, 0, 1, 19, 28, 98, 93, 6, 138, 21, 5, 27, 17, 151, 14, 76, 46, 16, 18, 38, 29, 86, 144, 107, 7, 25, 41}, - {12, 0, 1, 2, 3, 5, 6, 7, 4, 28, 8, 60, 14, 40, 16, 17, 21, 10, 19, 9, 86, 38, 126, 41, 93, 27, 29, 48, 62, 84, 79, 99}, - {0, 1, 2, 10, 5, 8, 3, 25, 4, 29, 32, 34, 63, 7, 77, 26, 16, 48, 65, 56, 14, 22, 129, 103, 72, 24, 18, 152, 140, 53, 96, 42}, - {46, 126, 18, 54, 12, 16, 1, 0, 5, 2, 27, 98, 20, 23, 6, 3, 88, 48, 28, 7, 19, 8, 4, 60, 151, 38, 37, 21, 79, 14, 65, 40}, - {76, 6, 141, 86, 119, 2, 138, 67, 28, 145, 0, 93, 17, 1, 40, 60, 146, 99, 147, 14, 21, 144, 132, 7, 5, 29, 55, 27, 16, 75, 19, 12}, - {71, 5, 51, 39, 22, 80, 0, 43, 10, 122, 8, 62, 41, 24, 104, 87, 35, 37, 2, 91, 33, 120, 36, 38, 1, 131, 9, 100, 130, 66, 3, 4}, - {126, 18, 46, 27, 20, 16, 88, 23, 12, 79, 54, 59, 48, 0, 73, 1, 37, 151, 5, 19, 28, 38, 2, 66, 60, 3, 65, 98, 14, 26, 6, 43}, - {22, 10, 8, 5, 0, 71, 35, 80, 104, 39, 24, 51, 100, 1, 62, 32, 2, 130, 11, 41, 7, 9, 53, 43, 49, 83, 122, 120, 30, 44, 37, 38}, - {1, 34, 14, 129, 53, 63, 42, 26, 121, 148, 7, 44, 96, 10, 0, 24, 100, 32, 64, 116, 140, 22, 5, 19, 29, 103, 135, 108, 8, 61, 39, 83}, - {1, 7, 34, 63, 44, 25, 135, 14, 24, 108, 22, 0, 83, 94, 5, 129, 35, 101, 47, 121, 2, 19, 42, 53, 6, 110, 103, 8, 148, 10, 16, 123}, - {12, 28, 16, 60, 18, 1, 6, 21, 14, 0, 86, 19, 2, 48, 93, 17, 38, 29, 7, 5, 65, 126, 46, 72, 41, 79, 84, 119, 40, 56, 54, 88}, - {0, 2, 12, 27, 5, 46, 38, 40, 41, 79, 88, 99, 3, 23, 1, 62, 20, 4, 22, 37, 92, 35, 18, 8, 16, 24, 10, 60, 7, 120, 98, 54}, - {1, 7, 14, 56, 8, 0, 84, 67, 10, 2, 133, 72, 42, 111, 5, 30, 21, 4, 9, 3, 25, 94, 16, 116, 47, 11, 65, 18, 132, 90, 55, 64}, - {30, 8, 124, 139, 45, 11, 58, 90, 113, 137, 7, 115, 10, 32, 1, 49, 94, 85, 9, 47, 108, 103, 0, 97, 63, 14, 50, 114, 53, 106, 100, 25}, - {65, 38, 48, 27, 16, 79, 72, 18, 88, 19, 46, 77, 84, 92, 37, 41, 0, 29, 1, 14, 12, 111, 2, 5, 31, 36, 87, 74, 105, 40, 28, 51}, - {10, 8, 30, 113, 130, 100, 53, 32, 115, 103, 104, 7, 1, 121, 39, 49, 131, 44, 24, 36, 63, 137, 34, 45, 22, 90, 108, 83, 26, 11, 94, 139}, - {51, 52, 43, 33, 5, 74, 16, 37, 71, 91, 38, 3, 36, 87, 48, 22, 4, 0, 122, 41, 39, 18, 66, 27, 79, 24, 65, 88, 59, 23, 62, 92}, - {1, 7, 63, 53, 108, 121, 94, 44, 103, 100, 14, 10, 129, 47, 32, 26, 24, 25, 148, 42, 135, 22, 0, 61, 83, 8, 39, 104, 5, 64, 115, 34}, - {1, 8, 10, 7, 5, 0, 80, 32, 62, 2, 24, 44, 53, 83, 9, 41, 30, 22, 100, 11, 14, 25, 120, 4, 26, 6, 3, 16, 122, 34, 19, 35}, - {74, 4, 36, 48, 33, 91, 39, 79, 22, 16, 65, 5, 131, 38, 24, 71, 27, 52, 0, 105, 51, 18, 88, 104, 3, 31, 10, 37, 72, 19, 41, 130}, - {59, 43, 38, 79, 23, 27, 92, 51, 0, 16, 46, 5, 18, 88, 41, 37, 66, 3, 87, 20, 48, 2, 122, 4, 22, 12, 1, 126, 19, 65, 33, 24}, - {12, 28, 1, 27, 0, 16, 2, 46, 65, 60, 21, 3, 5, 18, 6, 19, 48, 14, 4, 7, 79, 88, 86, 29, 22, 72, 93, 40, 23, 8, 17, 41}, - {22, 91, 39, 33, 24, 71, 5, 131, 36, 10, 51, 0, 130, 8, 104, 2, 35, 125, 9, 43, 52, 49, 83, 80, 100, 41, 122, 3, 37, 38, 4, 16}, - {12, 0, 1, 2, 5, 3, 4, 8, 7, 27, 18, 38, 10, 6, 16, 46, 9, 20, 41, 23, 126, 79, 22, 14, 19, 99, 88, 54, 37, 48, 62, 35}, - {12, 27, 1, 2, 3, 0, 46, 4, 38, 16, 8, 28, 7, 79, 18, 5, 84, 6, 88, 10, 14, 21, 23, 20, 40, 22, 60, 19, 9, 29, 72, 65}, - {1, 14, 7, 55, 95, 29, 8, 94, 30, 56, 10, 108, 77, 116, 152, 64, 32, 48, 63, 42, 143, 148, 16, 25, 137, 65, 11, 0, 115, 9, 19, 72}, - {37, 79, 66, 38, 16, 52, 48, 59, 43, 27, 87, 33, 41, 4, 23, 51, 3, 5, 88, 18, 92, 46, 73, 122, 22, 71, 20, 0, 65, 19, 2, 120}, - {24, 32, 83, 22, 53, 1, 8, 10, 7, 30, 35, 5, 103, 0, 100, 101, 121, 113, 34, 123, 63, 2, 44, 25, 71, 115, 80, 14, 26, 108, 51, 39}, - {97, 45, 111, 58, 85, 139, 0, 90, 47, 7, 120, 106, 142, 30, 50, 132, 41, 62, 84, 1, 119, 114, 14, 56, 117, 8, 38, 29, 2, 64, 116, 5}, - {12, 28, 16, 18, 1, 60, 6, 14, 2, 21, 0, 86, 126, 19, 48, 93, 7, 27, 17, 29, 5, 65, 54, 38, 72, 79, 84, 88, 119, 145, 8, 111}, - {118, 47, 64, 116, 57, 85, 7, 14, 50, 1, 42, 0, 45, 68, 86, 69, 2, 111, 134, 28, 90, 55, 16, 29, 56, 48, 84, 144, 60, 30, 112, 41}, - {12, 1, 2, 0, 7, 6, 28, 5, 3, 4, 8, 14, 60, 21, 18, 40, 17, 86, 10, 9, 16, 29, 19, 93, 126, 79, 38, 84, 72, 27, 111, 119}, - {11, 8, 49, 130, 10, 125, 9, 124, 100, 114, 131, 30, 58, 104, 32, 39, 24, 113, 36, 105, 0, 41, 22, 120, 5, 53, 111, 38, 142, 44, 83, 35}, - {50, 70, 47, 118, 85, 57, 106, 0, 45, 7, 64, 90, 81, 14, 2, 134, 28, 62, 86, 55, 69, 1, 78, 119, 68, 56, 18, 67, 16, 60, 29, 21}, - {43, 37, 33, 87, 51, 41, 66, 5, 122, 38, 22, 59, 92, 0, 23, 91, 27, 16, 71, 79, 18, 52, 120, 4, 3, 24, 46, 20, 73, 39, 62, 36}, - {79, 48, 4, 16, 27, 88, 43, 33, 18, 38, 65, 37, 46, 3, 19, 51, 52, 22, 66, 87, 74, 5, 41, 91, 23, 59, 0, 71, 122, 72, 20, 92}, - {32, 100, 10, 8, 30, 104, 24, 44, 39, 113, 83, 103, 1, 7, 22, 53, 115, 63, 135, 121, 26, 35, 34, 5, 0, 108, 137, 90, 91, 45, 2, 130}, - {0, 1, 2, 5, 16, 12, 6, 7, 14, 3, 19, 18, 29, 20, 4, 21, 40, 8, 17, 35, 23, 48, 126, 22, 25, 56, 26, 10, 98, 27, 38, 65}, - {143, 67, 56, 146, 1, 7, 133, 55, 64, 141, 134, 69, 6, 47, 14, 29, 84, 21, 111, 147, 57, 16, 95, 72, 118, 132, 50, 0, 2, 18, 119, 42}, - {1, 7, 67, 14, 133, 111, 8, 84, 0, 21, 2, 47, 64, 132, 55, 10, 95, 147, 119, 42, 16, 5, 72, 56, 4, 3, 6, 29, 9, 25, 18, 30}, - {68, 57, 69, 112, 144, 86, 102, 2, 134, 55, 0, 70, 118, 64, 75, 47, 14, 28, 93, 143, 67, 7, 50, 149, 1, 21, 29, 56, 119, 95, 60, 78}, - {58, 97, 114, 30, 124, 45, 11, 139, 8, 90, 0, 142, 7, 10, 41, 113, 84, 62, 49, 111, 85, 1, 9, 5, 137, 120, 32, 14, 2, 117, 47, 38}, - {23, 66, 18, 79, 38, 20, 43, 27, 16, 88, 46, 59, 126, 37, 87, 12, 73, 92, 3, 5, 48, 0, 19, 54, 2, 51, 28, 1, 41, 65, 122, 22}, - {0, 12, 2, 27, 5, 40, 46, 38, 1, 41, 3, 79, 88, 23, 99, 4, 20, 62, 22, 54, 92, 18, 8, 37, 16, 35, 10, 7, 19, 120, 144, 24}, - {1, 14, 25, 26, 0, 7, 44, 34, 129, 42, 24, 5, 135, 22, 19, 148, 6, 96, 83, 2, 29, 16, 63, 35, 101, 64, 140, 136, 116, 110, 3, 10}, - {12, 1, 2, 27, 3, 4, 38, 5, 7, 8, 18, 16, 46, 6, 0, 40, 41, 10, 79, 23, 88, 9, 20, 22, 14, 19, 37, 92, 48, 126, 28, 21}, - {7, 1, 10, 32, 108, 103, 94, 47, 8, 53, 25, 14, 34, 115, 100, 129, 121, 130, 148, 42, 64, 116, 63, 26, 44, 0, 24, 30, 113, 4, 104, 22}, - {47, 134, 7, 14, 55, 69, 64, 95, 1, 29, 85, 118, 56, 116, 45, 57, 102, 143, 50, 90, 42, 30, 16, 94, 0, 8, 67, 75, 133, 2, 18, 48}, - {12, 1, 2, 0, 7, 6, 28, 8, 14, 5, 3, 4, 40, 21, 17, 18, 60, 86, 16, 93, 126, 10, 9, 29, 99, 38, 119, 25, 19, 54, 27, 84}, - {59, 16, 27, 18, 23, 88, 79, 37, 46, 66, 38, 20, 73, 126, 3, 43, 48, 87, 92, 51, 41, 12, 19, 5, 52, 107, 65, 0, 151, 122, 54, 2}, - {1, 21, 147, 7, 119, 14, 76, 132, 55, 0, 86, 145, 2, 6, 69, 67, 16, 143, 111, 138, 17, 28, 29, 60, 18, 93, 8, 19, 40, 56, 84, 5}, - {144, 86, 112, 2, 68, 102, 69, 0, 149, 93, 75, 28, 57, 55, 145, 60, 21, 67, 99, 134, 143, 40, 146, 119, 82, 110, 62, 6, 29, 26, 78, 14}, - {102, 57, 55, 69, 143, 75, 146, 67, 56, 68, 134, 2, 29, 141, 0, 21, 6, 14, 133, 118, 64, 1, 7, 95, 47, 84, 111, 28, 147, 82, 72, 119}, - {0, 70, 57, 119, 50, 145, 2, 86, 28, 118, 69, 78, 149, 47, 60, 68, 67, 55, 93, 81, 134, 21, 14, 62, 64, 7, 5, 1, 132, 85, 41, 16}, - {51, 5, 43, 71, 122, 87, 41, 37, 91, 39, 0, 22, 33, 36, 38, 24, 66, 120, 62, 2, 80, 16, 92, 10, 59, 4, 27, 23, 35, 79, 8, 3}, - {12, 1, 2, 0, 7, 6, 28, 5, 8, 14, 3, 21, 40, 4, 60, 17, 86, 18, 16, 93, 10, 9, 126, 119, 99, 29, 19, 41, 38, 27, 25, 92}, - {27, 18, 46, 126, 23, 16, 88, 79, 20, 151, 59, 73, 48, 38, 0, 54, 12, 2, 37, 1, 19, 5, 28, 60, 66, 41, 3, 109, 86, 65, 40, 6}, - {48, 79, 4, 33, 16, 74, 65, 38, 88, 27, 91, 52, 18, 36, 22, 19, 46, 0, 37, 3, 51, 5, 71, 39, 72, 43, 24, 41, 92, 87, 2, 10}, - {86, 2, 144, 93, 28, 112, 141, 6, 102, 21, 99, 60, 75, 0, 68, 82, 69, 146, 67, 149, 55, 40, 145, 76, 111, 147, 56, 119, 110, 143, 26, 132}, - {6, 138, 2, 99, 86, 17, 40, 93, 28, 21, 145, 141, 0, 60, 119, 147, 128, 76, 67, 54, 1, 12, 5, 27, 144, 14, 38, 98, 146, 41, 29, 19}, - {1, 8, 0, 10, 2, 29, 7, 5, 3, 56, 4, 25, 14, 152, 63, 32, 65, 72, 96, 42, 34, 108, 48, 9, 26, 16, 84, 103, 67, 148, 22, 129}, - {149, 145, 0, 86, 2, 28, 93, 144, 62, 60, 119, 101, 21, 41, 5, 35, 78, 99, 26, 40, 12, 68, 57, 67, 110, 120, 69, 18, 55, 76, 132, 70}, - {12, 28, 16, 1, 48, 19, 6, 60, 2, 14, 18, 21, 0, 27, 46, 65, 86, 29, 5, 7, 72, 93, 40, 3, 17, 84, 56, 88, 126, 4, 38, 8}, - {1, 8, 5, 10, 7, 24, 2, 62, 0, 41, 22, 122, 120, 9, 4, 3, 32, 87, 11, 37, 38, 83, 100, 44, 25, 104, 16, 26, 39, 80, 14, 6}, - {0, 119, 62, 86, 145, 149, 28, 132, 93, 2, 120, 67, 60, 41, 35, 5, 144, 21, 123, 38, 111, 81, 84, 56, 12, 44, 24, 50, 92, 55, 40, 22}, - {2, 93, 99, 28, 40, 144, 60, 0, 86, 150, 76, 21, 149, 98, 6, 25, 1, 61, 82, 26, 12, 5, 54, 141, 7, 18, 145, 16, 27, 138, 110, 38}, - {24, 8, 10, 22, 32, 35, 100, 5, 1, 53, 0, 7, 71, 80, 30, 123, 83, 104, 51, 11, 2, 39, 44, 113, 9, 62, 25, 103, 34, 101, 43, 41}, - {12, 1, 2, 0, 7, 6, 28, 5, 40, 60, 8, 16, 3, 18, 14, 4, 86, 21, 17, 93, 41, 10, 9, 99, 27, 119, 38, 19, 126, 22, 48, 145}, - {45, 47, 50, 7, 85, 90, 97, 1, 64, 139, 116, 118, 30, 58, 14, 106, 70, 111, 0, 57, 94, 42, 137, 142, 29, 120, 8, 56, 18, 134, 84, 41}, - {12, 0, 2, 5, 27, 38, 1, 46, 41, 40, 79, 144, 3, 22, 88, 23, 28, 60, 99, 62, 6, 24, 26, 7, 4, 16, 10, 35, 37, 18, 14, 20}, - {37, 38, 59, 92, 0, 5, 23, 51, 79, 41, 27, 22, 2, 3, 87, 16, 46, 4, 1, 43, 20, 33, 18, 88, 24, 71, 8, 10, 48, 19, 126, 122}, - {12, 28, 16, 60, 1, 18, 6, 21, 19, 14, 48, 0, 2, 86, 93, 5, 46, 29, 17, 27, 65, 7, 3, 72, 38, 126, 119, 40, 84, 37, 56, 4}, - {0, 2, 5, 1, 16, 6, 27, 28, 18, 38, 60, 7, 14, 21, 46, 40, 86, 41, 19, 48, 93, 8, 3, 79, 22, 4, 10, 37, 62, 23, 24, 111}, - {85, 7, 90, 30, 47, 139, 45, 50, 94, 58, 137, 1, 8, 64, 14, 116, 118, 115, 113, 11, 124, 108, 0, 10, 97, 57, 32, 70, 42, 106, 29, 114}, - {33, 36, 22, 71, 51, 5, 91, 39, 0, 52, 43, 24, 131, 74, 16, 37, 38, 122, 41, 3, 87, 48, 4, 104, 35, 80, 10, 2, 105, 62, 27, 18}, - {12, 1, 27, 2, 0, 16, 3, 28, 46, 18, 4, 6, 5, 72, 21, 79, 38, 7, 14, 60, 88, 8, 65, 19, 48, 29, 23, 40, 22, 20, 86, 126}, - {0, 12, 2, 27, 5, 38, 46, 41, 1, 40, 79, 3, 88, 23, 22, 99, 20, 37, 62, 4, 18, 6, 16, 35, 60, 28, 24, 7, 92, 8, 14, 10}, - {7, 47, 1, 30, 137, 8, 116, 94, 90, 64, 14, 115, 108, 118, 57, 10, 148, 113, 42, 85, 32, 11, 63, 50, 103, 45, 124, 134, 55, 9, 69, 34}, - {55, 7, 1, 29, 56, 143, 64, 47, 67, 133, 14, 146, 95, 72, 84, 8, 116, 111, 6, 134, 141, 21, 65, 0, 69, 30, 16, 45, 85, 42, 50, 10}, - {14, 1, 42, 8, 10, 29, 108, 63, 55, 148, 95, 32, 7, 19, 25, 115, 103, 34, 56, 129, 77, 0, 16, 152, 94, 30, 113, 26, 2, 5, 48, 4}, - {111, 120, 142, 97, 58, 0, 41, 45, 62, 132, 114, 84, 139, 30, 5, 8, 38, 2, 7, 85, 119, 90, 117, 1, 124, 11, 56, 47, 28, 27, 35, 72}, - {1, 0, 14, 2, 6, 5, 16, 19, 7, 29, 42, 18, 3, 25, 12, 35, 21, 8, 26, 17, 40, 4, 20, 48, 109, 99, 22, 96, 55, 101, 10, 61}, - {12, 0, 1, 5, 3, 2, 4, 7, 27, 8, 38, 6, 40, 18, 16, 10, 20, 46, 9, 41, 23, 22, 79, 14, 62, 19, 37, 126, 88, 11, 92, 48}, - {10, 8, 104, 39, 24, 32, 22, 83, 44, 100, 30, 130, 53, 91, 113, 5, 11, 1, 35, 33, 7, 49, 0, 2, 103, 71, 36, 124, 9, 80, 131, 34}, - {1, 7, 0, 14, 8, 34, 5, 25, 35, 26, 6, 63, 10, 123, 2, 16, 103, 19, 44, 32, 135, 121, 108, 80, 62, 30, 115, 94, 149, 144, 53, 18}, - {75, 68, 146, 141, 102, 67, 2, 21, 6, 57, 69, 143, 0, 55, 82, 86, 28, 144, 147, 29, 93, 112, 56, 119, 133, 14, 76, 60, 84, 134, 111, 145}, - {10, 32, 115, 7, 8, 53, 1, 108, 30, 113, 94, 137, 100, 63, 90, 34, 130, 103, 121, 47, 44, 25, 104, 39, 24, 26, 85, 14, 49, 36, 22, 131}, - {39, 24, 10, 22, 8, 130, 91, 104, 83, 49, 5, 33, 100, 11, 0, 35, 32, 131, 71, 36, 9, 44, 53, 2, 80, 51, 30, 1, 41, 7, 43, 62}, - {38, 36, 65, 105, 27, 72, 31, 79, 41, 131, 5, 48, 125, 39, 0, 16, 92, 46, 22, 13, 18, 84, 24, 37, 88, 2, 33, 74, 91, 71, 130, 49}, - {0, 106, 62, 50, 45, 119, 85, 81, 132, 28, 2, 86, 41, 47, 38, 60, 35, 117, 5, 29, 7, 30, 145, 90, 55, 70, 14, 111, 18, 67, 93, 56}, - {0, 2, 5, 1, 3, 25, 19, 26, 4, 34, 29, 10, 22, 16, 8, 7, 24, 14, 48, 65, 53, 18, 6, 77, 44, 56, 72, 61, 121, 21, 136, 40}, - {7, 1, 94, 8, 47, 115, 10, 32, 113, 103, 30, 108, 137, 63, 14, 64, 116, 148, 129, 42, 90, 25, 34, 118, 53, 57, 11, 49, 85, 9, 96, 50}, - {14, 0, 1, 26, 19, 5, 42, 2, 25, 24, 29, 22, 6, 44, 61, 16, 7, 96, 136, 3, 140, 34, 35, 55, 135, 18, 48, 77, 83, 4, 8, 10}, - {1, 7, 14, 0, 25, 6, 34, 5, 26, 16, 63, 2, 19, 8, 35, 101, 108, 29, 94, 10, 18, 42, 123, 144, 129, 47, 61, 21, 3, 62, 149, 4}, - {12, 0, 2, 1, 28, 5, 6, 120, 7, 60, 40, 16, 18, 86, 27, 14, 21, 93, 8, 62, 41, 38, 3, 17, 4, 119, 99, 48, 19, 126, 10, 9}, - {86, 144, 93, 2, 28, 149, 0, 60, 99, 112, 110, 145, 40, 21, 102, 26, 75, 62, 69, 1, 12, 101, 119, 25, 76, 67, 7, 68, 55, 5, 6, 14}, - {8, 30, 10, 32, 113, 49, 115, 137, 124, 103, 45, 90, 7, 139, 11, 1, 58, 53, 130, 94, 108, 100, 9, 63, 85, 125, 34, 47, 0, 24, 44, 104}, - {120, 142, 111, 41, 58, 114, 97, 0, 11, 62, 84, 124, 5, 30, 8, 38, 132, 127, 27, 139, 92, 10, 72, 45, 49, 9, 28, 2, 29, 56, 16, 1}, - {8, 113, 30, 137, 7, 32, 10, 90, 94, 115, 1, 103, 108, 63, 47, 85, 49, 53, 11, 45, 34, 50, 14, 25, 9, 124, 100, 130, 139, 121, 42, 26}, - {64, 7, 14, 47, 134, 55, 1, 42, 95, 69, 116, 90, 94, 30, 8, 29, 56, 137, 45, 108, 85, 10, 57, 16, 102, 143, 118, 19, 63, 32, 11, 50}, - {62, 132, 0, 119, 120, 41, 111, 86, 35, 28, 5, 84, 56, 38, 2, 93, 145, 60, 67, 12, 92, 27, 29, 72, 55, 117, 21, 24, 133, 149, 22, 45}, - {57, 68, 69, 118, 134, 64, 50, 47, 55, 14, 7, 2, 102, 144, 0, 112, 70, 86, 85, 1, 95, 29, 116, 143, 42, 75, 16, 56, 28, 45, 21, 48}, - {0, 12, 2, 1, 5, 28, 6, 40, 60, 27, 7, 38, 16, 14, 86, 18, 93, 41, 62, 46, 99, 35, 8, 23, 3, 17, 22, 21, 10, 19, 79, 20}, - {12, 1, 2, 27, 16, 3, 38, 111, 4, 0, 18, 5, 7, 46, 40, 8, 79, 6, 14, 28, 88, 10, 48, 41, 19, 84, 21, 9, 22, 23, 20, 72}, - {53, 103, 32, 7, 1, 100, 22, 63, 71, 44, 10, 115, 108, 24, 92, 104, 26, 30, 122, 94, 8, 39, 83, 34, 137, 135, 90, 91, 121, 5, 87, 47}, - {87, 37, 41, 0, 22, 38, 2, 92, 1, 24, 4, 8, 3, 59, 10, 5, 39, 23, 71, 79, 122, 27, 16, 46, 33, 7, 91, 20, 18, 51, 9, 120}, - {1, 7, 8, 10, 0, 5, 35, 32, 53, 44, 14, 30, 2, 80, 25, 34, 6, 62, 26, 103, 16, 19, 63, 9, 149, 24, 121, 41, 22, 11, 113, 83}, - {11, 58, 8, 30, 124, 49, 10, 113, 9, 114, 139, 45, 97, 32, 7, 137, 90, 1, 0, 130, 115, 125, 100, 24, 5, 94, 53, 41, 14, 13, 35, 38}, - {125, 105, 9, 36, 131, 49, 8, 130, 39, 11, 10, 5, 22, 38, 41, 104, 0, 31, 13, 24, 27, 16, 2, 72, 65, 91, 48, 32, 84, 18, 100, 74}, - {12, 1, 0, 2, 6, 3, 7, 5, 4, 8, 14, 28, 16, 60, 18, 10, 21, 17, 19, 9, 40, 27, 86, 93, 29, 38, 54, 11, 25, 48, 46, 41}, - {84, 41, 38, 72, 92, 29, 111, 5, 65, 120, 79, 0, 27, 56, 48, 14, 132, 16, 119, 22, 86, 88, 46, 28, 62, 12, 1, 2, 93, 18, 24, 127}, - {99, 28, 40, 60, 2, 93, 138, 0, 98, 17, 86, 54, 76, 12, 27, 1, 21, 144, 128, 38, 5, 14, 46, 18, 25, 16, 109, 6, 41, 145, 7, 29}, - {1, 63, 10, 32, 148, 14, 103, 34, 42, 7, 8, 108, 116, 53, 64, 96, 25, 121, 26, 94, 140, 0, 29, 19, 55, 24, 100, 136, 5, 4, 44, 115}, - {131, 100, 130, 49, 10, 8, 36, 104, 39, 0, 48, 41, 11, 38, 4, 24, 27, 22, 16, 44, 79, 5, 33, 2, 53, 9, 125, 74, 91, 120, 32, 83}, - {36, 39, 131, 74, 4, 91, 22, 33, 125, 104, 130, 48, 10, 24, 16, 5, 49, 8, 100, 105, 79, 0, 9, 65, 71, 2, 18, 83, 31, 11, 19, 44}, - {0, 12, 2, 1, 6, 5, 7, 28, 40, 60, 16, 14, 18, 62, 86, 27, 93, 8, 17, 38, 21, 41, 35, 99, 3, 19, 10, 23, 22, 4, 9, 48}, - {1, 7, 67, 14, 21, 147, 111, 55, 132, 119, 0, 8, 2, 76, 64, 16, 47, 84, 6, 18, 86, 95, 145, 10, 42, 29, 133, 5, 56, 134, 17, 72}, - {69, 55, 47, 134, 102, 143, 7, 57, 118, 95, 14, 64, 29, 56, 1, 50, 75, 67, 146, 2, 0, 133, 68, 16, 21, 6, 141, 85, 116, 18, 72, 65}, - {1, 44, 7, 24, 83, 63, 34, 103, 22, 121, 53, 32, 25, 35, 0, 115, 108, 5, 14, 8, 10, 101, 94, 30, 2, 123, 110, 26, 137, 47, 90, 19}, - {14, 1, 25, 42, 34, 0, 26, 96, 19, 29, 140, 5, 53, 10, 2, 121, 3, 24, 44, 22, 55, 77, 129, 7, 63, 16, 8, 4, 6, 61, 100, 48}, - {30, 90, 7, 8, 137, 94, 85, 1, 47, 113, 115, 108, 45, 139, 124, 11, 10, 32, 50, 58, 103, 14, 63, 64, 9, 116, 49, 42, 25, 148, 0, 53}, - {40, 99, 2, 60, 28, 17, 0, 54, 93, 98, 86, 138, 6, 12, 21, 76, 1, 5, 27, 144, 128, 38, 19, 46, 14, 41, 145, 7, 16, 67, 3, 109}, - {45, 58, 30, 139, 90, 7, 85, 137, 97, 8, 124, 47, 1, 11, 106, 114, 50, 94, 0, 113, 10, 115, 14, 32, 9, 64, 108, 41, 49, 29, 62, 116}, - {14, 42, 10, 1, 63, 96, 32, 25, 34, 8, 129, 29, 0, 103, 55, 19, 26, 53, 77, 5, 95, 2, 4, 7, 3, 16, 148, 56, 18, 24, 121, 108}, - {21, 2, 75, 86, 6, 76, 144, 28, 119, 99, 93, 147, 141, 67, 102, 145, 60, 132, 146, 128, 0, 82, 40, 138, 55, 111, 143, 17, 133, 112, 69, 14}, - {111, 120, 41, 62, 84, 132, 0, 5, 38, 119, 56, 92, 72, 142, 27, 28, 29, 35, 58, 80, 2, 86, 65, 79, 12, 14, 1, 24, 145, 16, 21, 48}, - {146, 67, 141, 69, 133, 21, 6, 143, 57, 55, 111, 147, 56, 1, 14, 132, 7, 2, 134, 102, 0, 119, 29, 84, 76, 64, 86, 72, 28, 68, 47, 75}, - {12, 1, 0, 5, 27, 3, 7, 4, 38, 8, 6, 41, 16, 40, 46, 10, 18, 79, 2, 9, 23, 86, 20, 22, 62, 14, 37, 88, 92, 19, 24, 11}, - {0, 12, 2, 1, 27, 5, 38, 28, 60, 6, 40, 7, 16, 46, 18, 14, 41, 99, 93, 62, 3, 79, 86, 23, 149, 8, 22, 35, 88, 17, 19, 10}, - {141, 6, 21, 67, 147, 102, 146, 2, 76, 119, 132, 69, 55, 111, 86, 75, 28, 133, 143, 0, 1, 145, 14, 128, 56, 99, 17, 60, 29, 93, 84, 68}, - {21, 76, 1, 119, 86, 145, 2, 0, 14, 7, 6, 138, 146, 55, 17, 28, 132, 93, 67, 40, 60, 143, 29, 147, 111, 16, 69, 141, 5, 56, 19, 133}, - {1, 8, 108, 14, 7, 116, 64, 42, 10, 63, 94, 32, 115, 103, 113, 96, 30, 34, 55, 47, 95, 148, 29, 140, 129, 25, 134, 53, 69, 26, 19, 11}, - {12, 1, 3, 5, 4, 2, 0, 7, 8, 38, 27, 16, 18, 6, 10, 20, 41, 40, 79, 46, 9, 23, 22, 88, 92, 37, 14, 24, 62, 19, 48, 99}, - {1, 14, 7, 0, 6, 25, 5, 16, 19, 2, 42, 26, 29, 35, 61, 8, 18, 129, 101, 21, 3, 110, 34, 148, 96, 10, 17, 4, 22, 40, 12, 20}, - {0, 2, 5, 1, 3, 19, 22, 26, 16, 24, 29, 7, 14, 6, 4, 25, 18, 44, 8, 48, 12, 61, 20, 21, 10, 35, 65, 56, 23, 40, 17, 107}, - {1, 7, 8, 29, 56, 0, 10, 14, 2, 42, 72, 5, 4, 65, 3, 30, 84, 94, 67, 9, 25, 133, 111, 11, 32, 108, 16, 63, 21, 96, 26, 48}}; -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright(c) 2020 Richard Geldreich, Jr. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files(the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions : -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain(www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non - commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain.We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors.We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ \ No newline at end of file diff --git a/src/rgbcx/BC1/Tables.h b/src/rgbcx/BC1/Tables.h deleted file mode 100644 index d128703..0000000 --- a/src/rgbcx/BC1/Tables.h +++ /dev/null @@ -1,77 +0,0 @@ -// rgbcx.h v1.12 -// High-performance scalar BC1-5 encoders. Public Domain or MIT license (you choose - see below), written by Richard Geldreich 2020 . - -#pragma once -#include -#include - -// This table is: 9 * (w * w), 9 * ((1.0f - w) * w), 9 * ((1.0f - w) * (1.0f - w)) -// where w is [0,1/3,2/3,1]. 9 is the perfect multiplier. -static constexpr std::array g_weight_vals4 = {0x000009, 0x010204, 0x040201, 0x090000}; - -// multiplier is 4 for 3-color -static constexpr std::array g_weight_vals3 = {0x000004, 0x040000, 0x010101}; - -const uint32_t MIN_TOTAL_ORDERINGS = 1; -const uint32_t MAX_TOTAL_ORDERINGS3 = 32; - -#if RGBCX_USE_SMALLER_TABLES -const uint32_t MAX_TOTAL_ORDERINGS4 = 32; -#else -const uint32_t MAX_TOTAL_ORDERINGS4 = 128; -#endif - -extern const float g_midpoint5[32]; -extern const float g_midpoint6[64]; - -const uint32_t NUM_UNIQUE_TOTAL_ORDERINGS4 = 969; -extern const uint8_t g_unique_total_orders4[NUM_UNIQUE_TOTAL_ORDERINGS4][4]; - -const uint32_t NUM_UNIQUE_TOTAL_ORDERINGS3 = 153; -extern const uint8_t g_unique_total_orders3[NUM_UNIQUE_TOTAL_ORDERINGS3][3]; - -extern const uint16_t g_best_total_orderings4[NUM_UNIQUE_TOTAL_ORDERINGS4][MAX_TOTAL_ORDERINGS4]; - -extern const uint8_t g_best_total_orderings3[NUM_UNIQUE_TOTAL_ORDERINGS3][32]; - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright(c) 2020 Richard Geldreich, Jr. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files(the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions : -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain(www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non - commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain.We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors.We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ \ No newline at end of file diff --git a/src/rgbcx/rgbcx.cpp b/src/rgbcx/rgbcx.cpp deleted file mode 100644 index 7d4e1b5..0000000 --- a/src/rgbcx/rgbcx.cpp +++ /dev/null @@ -1,2512 +0,0 @@ -// rgbcx.h v1.12 -// High-performance scalar BC1-5 encoders. Public Domain or MIT license (you choose - see below), written by Richard Geldreich 2020 . - -#pragma GCC diagnostic ignored "-Weverything" -#include "rgbcx.h" - -#include -#include -#include -#include -#include -#include -#include - -#include "BC1/BC1Block.h" -#include "BC1/Tables.h" -#include "Color.h" -#include "util.h" - -namespace rgbcx { - -static const uint32_t TOTAL_ORDER_4_0_16 = 15; -static const uint32_t TOTAL_ORDER_4_1_16 = 700; -static const uint32_t TOTAL_ORDER_4_2_16 = 753; -static const uint32_t TOTAL_ORDER_4_3_16 = 515; -static uint16_t g_total_ordering4_hash[4096]; -static float g_selector_factors4[NUM_UNIQUE_TOTAL_ORDERINGS4][3]; - -static const uint32_t TOTAL_ORDER_3_0_16 = 12; -static const uint32_t TOTAL_ORDER_3_1_16 = 15; -static const uint32_t TOTAL_ORDER_3_2_16 = 89; -static uint16_t g_total_ordering3_hash[256]; -static float g_selector_factors3[NUM_UNIQUE_TOTAL_ORDERINGS3][3]; - -struct hist4 { - uint8_t m_hist[4]; - - hist4() { memset(m_hist, 0, sizeof(m_hist)); } - - hist4(uint32_t i, uint32_t j, uint32_t k, uint32_t l) { - m_hist[0] = (uint8_t)i; - m_hist[1] = (uint8_t)j; - m_hist[2] = (uint8_t)k; - m_hist[3] = (uint8_t)l; - } - - inline bool operator==(const hist4 &h) const { - if (m_hist[0] != h.m_hist[0]) return false; - if (m_hist[1] != h.m_hist[1]) return false; - if (m_hist[2] != h.m_hist[2]) return false; - if (m_hist[3] != h.m_hist[3]) return false; - return true; - } - - inline bool any_16() const { return (m_hist[0] == 16) || (m_hist[1] == 16) || (m_hist[2] == 16) || (m_hist[3] == 16); } - - inline uint32_t lookup_total_ordering_index() const { - if (m_hist[0] == 16) - return TOTAL_ORDER_4_0_16; - else if (m_hist[1] == 16) - return TOTAL_ORDER_4_1_16; - else if (m_hist[2] == 16) - return TOTAL_ORDER_4_2_16; - else if (m_hist[3] == 16) - return TOTAL_ORDER_4_3_16; - - // Must sum to 16, so m_hist[3] isn't needed. - return g_total_ordering4_hash[m_hist[0] | (m_hist[1] << 4) | (m_hist[2] << 8)]; - } -}; - -struct hist3 { - uint8_t m_hist[3]; - - hist3() { memset(m_hist, 0, sizeof(m_hist)); } - - hist3(uint32_t i, uint32_t j, uint32_t k) { - m_hist[0] = (uint8_t)i; - m_hist[1] = (uint8_t)j; - m_hist[2] = (uint8_t)k; - } - - inline bool operator==(const hist3 &h) const { - if (m_hist[0] != h.m_hist[0]) return false; - if (m_hist[1] != h.m_hist[1]) return false; - if (m_hist[2] != h.m_hist[2]) return false; - return true; - } - - inline bool any_16() const { return (m_hist[0] == 16) || (m_hist[1] == 16) || (m_hist[2] == 16); } - - inline uint32_t lookup_total_ordering_index() const { - if (m_hist[0] == 16) - return TOTAL_ORDER_3_0_16; - else if (m_hist[1] == 16) - return TOTAL_ORDER_3_1_16; - else if (m_hist[2] == 16) - return TOTAL_ORDER_3_2_16; - - // Must sum to 16, so m_hist[2] isn't needed. - return g_total_ordering3_hash[m_hist[0] | (m_hist[1] << 4)]; - } -}; - -struct bc1_match_entry { - uint8_t m_hi; - uint8_t m_lo; - uint8_t m_e; -}; - -static bc1_approx_mode g_bc1_approx_mode; -static bc1_match_entry g_bc1_match5_equals_1[256], g_bc1_match6_equals_1[256]; -static bc1_match_entry g_bc1_match5_half[256], g_bc1_match6_half[256]; - -// v0, v1 = unexpanded DXT1 endpoint values (5/6-bits) -// c0, c1 = expanded DXT1 endpoint values (8-bits) -static inline int interp_5_6_ideal(int c0, int c1) { - assert(c0 < 256 && c1 < 256); - return (c0 * 2 + c1) / 3; -} -static inline int interp_5_6_ideal_round(int c0, int c1) { - assert(c0 < 256 && c1 < 256); - return (c0 * 2 + c1 + 1) / 3; -} -static inline int interp_half_5_6_ideal(int c0, int c1) { - assert(c0 < 256 && c1 < 256); - return (c0 + c1) / 2; -} - -static inline int interp_5_nv(int v0, int v1) { - assert(v0 < 32 && v1 < 32); - return ((2 * v0 + v1) * 22) / 8; -} -static inline int interp_6_nv(int c0, int c1) { - assert(c0 < 256 && c1 < 256); - const int gdiff = c1 - c0; - return (256 * c0 + (gdiff / 4) + 128 + gdiff * 80) / 256; -} - -static inline int interp_half_5_nv(int v0, int v1) { - assert(v0 < 32 && v1 < 32); - return ((v0 + v1) * 33) / 8; -} -static inline int interp_half_6_nv(int c0, int c1) { - assert(c0 < 256 && c1 < 256); - const int gdiff = c1 - c0; - return (256 * c0 + gdiff / 4 + 128 + gdiff * 128) / 256; -} - -static inline int interp_5_6_amd(int c0, int c1) { - assert(c0 < 256 && c1 < 256); - return (c0 * 43 + c1 * 21 + 32) >> 6; -} -static inline int interp_half_5_6_amd(int c0, int c1) { - assert(c0 < 256 && c1 < 256); - return (c0 + c1 + 1) >> 1; -} - -static inline int interp_5(int v0, int v1, int c0, int c1, bc1_approx_mode mode) { - // assert(scale_5_to_8(v0) == c0 && scale5To8(v1) == c1); - switch (mode) { - case bc1_approx_mode::cBC1NVidia: - return interp_5_nv(v0, v1); - case bc1_approx_mode::cBC1AMD: - return interp_5_6_amd(c0, c1); - default: - case bc1_approx_mode::cBC1Ideal: - return interp_5_6_ideal(c0, c1); - case bc1_approx_mode::cBC1IdealRound4: - return interp_5_6_ideal_round(c0, c1); - } -} - -static inline int interp_6(int v0, int v1, int c0, int c1, bc1_approx_mode mode) { - (void)v0; - (void)v1; - // assert(scale_6_to_8(v0) == c0 && scale6To8(v1) == c1); - switch (mode) { - case bc1_approx_mode::cBC1NVidia: - return interp_6_nv(c0, c1); - case bc1_approx_mode::cBC1AMD: - return interp_5_6_amd(c0, c1); - default: - case bc1_approx_mode::cBC1Ideal: - return interp_5_6_ideal(c0, c1); - case bc1_approx_mode::cBC1IdealRound4: - return interp_5_6_ideal_round(c0, c1); - } -} - -static inline unsigned int interp_half_5(unsigned int v0, unsigned int v1, unsigned int c0, unsigned int c1, bc1_approx_mode mode) { - assert(scale5To8(v0) == c0 && scale5To8(v1) == c1); - switch (mode) { - case bc1_approx_mode::cBC1NVidia: - return interp_half_5_nv(v0, v1); - case bc1_approx_mode::cBC1AMD: - return interp_half_5_6_amd(c0, c1); - case bc1_approx_mode::cBC1Ideal: - case bc1_approx_mode::cBC1IdealRound4: - default: - return interp_half_5_6_ideal(c0, c1); - } -} - -static inline unsigned int interp_half_6(unsigned v0, unsigned v1, unsigned c0, bc1_approx_mode mode, unsigned c1) { - (void)v0; - (void)v1; - assert(scale6To8(v0) == c0 && scale6To8(v1) == c1); - switch (mode) { - case bc1_approx_mode::cBC1NVidia: - return interp_half_6_nv(c0, c1); - case bc1_approx_mode::cBC1AMD: - return interp_half_5_6_amd(c0, c1); - case bc1_approx_mode::cBC1Ideal: - case bc1_approx_mode::cBC1IdealRound4: - default: - return interp_half_5_6_ideal(c0, c1); - } -} - -static void prepare_bc1_single_color_table_half(bc1_match_entry *pTable, const uint8_t *pExpand, int size, bc1_approx_mode mode) { - for (int i = 0; i < 256; i++) { - int lowest_e = 256; - for (int lo = 0; lo < size; lo++) { - const int lo_e = pExpand[lo]; - - for (int hi = 0; hi < size; hi++) { - const int hi_e = pExpand[hi]; - - const int v = (size == 32) ? interp_half_5(hi, lo, hi_e, lo_e, mode) : interp_half_6(hi, lo, hi_e, mode, lo_e); - - int e = iabs(v - i); - - // We only need to factor in 3% error in BC1 ideal mode. - if ((mode == bc1_approx_mode::cBC1Ideal) || (mode == bc1_approx_mode::cBC1IdealRound4)) e += (iabs(hi_e - lo_e) * 3) / 100; - - // Favor equal endpoints, for lower error on actual GPU's which approximate the interpolation. - if ((e < lowest_e) || ((e == lowest_e) && (lo == hi))) { - pTable[i].m_hi = static_cast(hi); - pTable[i].m_lo = static_cast(lo); - - assert(e <= UINT8_MAX); - pTable[i].m_e = static_cast(e); - - lowest_e = e; - } - - } // hi - } // lo - } -} - -static void prepare_bc1_single_color_table(bc1_match_entry *pTable, const uint8_t *pExpand, int size, bc1_approx_mode mode) { - for (int i = 0; i < 256; i++) { - int lowest_e = 256; - for (int lo = 0; lo < size; lo++) { - const int lo_e = pExpand[lo]; - - for (int hi = 0; hi < size; hi++) { - const int hi_e = pExpand[hi]; - - const int v = (size == 32) ? interp_5(hi, lo, hi_e, lo_e, mode) : interp_6(hi, lo, hi_e, lo_e, mode); - - int e = iabs(v - i); - - if ((mode == bc1_approx_mode::cBC1Ideal) || (mode == bc1_approx_mode::cBC1IdealRound4)) e += (iabs(hi_e - lo_e) * 3) / 100; - - // Favor equal endpoints, for lower error on actual GPU's which approximate the interpolation. - if ((e < lowest_e) || ((e == lowest_e) && (lo == hi))) { - pTable[i].m_hi = static_cast(hi); - pTable[i].m_lo = static_cast(lo); - - assert(e <= UINT8_MAX); - pTable[i].m_e = static_cast(e); - - lowest_e = e; - } - - } // hi - } // lo - } -} - -// This table is: 9 * (w * w), 9 * ((1.0f - w) * w), 9 * ((1.0f - w) * (1.0f - w)) -// where w is [0,1/3,2/3,1]. 9 is the perfect multiplier. -static const uint32_t g_weight_vals4[4] = {0x000009, 0x010204, 0x040201, 0x090000}; - -// multiplier is 4 for 3-color -static const uint32_t g_weight_vals3[3] = {0x000004, 0x040000, 0x010101}; - -static inline void compute_selector_factors4(const hist4 &h, float &iz00, float &iz10, float &iz11) { - uint32_t weight_accum = 0; - for (uint32_t sel = 0; sel < 4; sel++) weight_accum += g_weight_vals4[sel] * h.m_hist[sel]; - - float z00 = (float)((weight_accum >> 16) & 0xFF); - float z10 = (float)((weight_accum >> 8) & 0xFF); - float z11 = (float)(weight_accum & 0xFF); - float z01 = z10; - - float det = z00 * z11 - z01 * z10; - if (fabs(det) < 1e-8f) - det = 0.0f; - else - det = (3.0f / 255.0f) / det; - - iz00 = z11 * det; - iz10 = -z10 * det; - iz11 = z00 * det; -} - -static inline void compute_selector_factors3(const hist3 &h, float &iz00, float &iz10, float &iz11) { - uint32_t weight_accum = 0; - for (uint32_t sel = 0; sel < 3; sel++) weight_accum += g_weight_vals3[sel] * h.m_hist[sel]; - - float z00 = (float)((weight_accum >> 16) & 0xFF); - float z10 = (float)((weight_accum >> 8) & 0xFF); - float z11 = (float)(weight_accum & 0xFF); - float z01 = z10; - - float det = z00 * z11 - z01 * z10; - if (fabs(det) < 1e-8f) - det = 0.0f; - else - det = (2.0f / 255.0f) / det; - - iz00 = z11 * det; - iz10 = -z10 * det; - iz11 = z00 * det; -} - -static bool g_initialized; - -void init(bc1_approx_mode mode) { - g_bc1_approx_mode = mode; - - uint8_t bc1_expand5[32]; - for (int i = 0; i < 32; i++) bc1_expand5[i] = static_cast((i << 3) | (i >> 2)); - prepare_bc1_single_color_table(g_bc1_match5_equals_1, bc1_expand5, 32, mode); - prepare_bc1_single_color_table_half(g_bc1_match5_half, bc1_expand5, 32, mode); - - uint8_t bc1_expand6[64]; - for (int i = 0; i < 64; i++) bc1_expand6[i] = static_cast((i << 2) | (i >> 4)); - prepare_bc1_single_color_table(g_bc1_match6_equals_1, bc1_expand6, 64, mode); - prepare_bc1_single_color_table_half(g_bc1_match6_half, bc1_expand6, 64, mode); - - for (uint32_t i = 0; i < NUM_UNIQUE_TOTAL_ORDERINGS4; i++) { - hist4 h; - h.m_hist[0] = (uint8_t)g_unique_total_orders4[i][0]; - h.m_hist[1] = (uint8_t)g_unique_total_orders4[i][1]; - h.m_hist[2] = (uint8_t)g_unique_total_orders4[i][2]; - h.m_hist[3] = (uint8_t)g_unique_total_orders4[i][3]; - - if (!h.any_16()) { - const uint32_t index = h.m_hist[0] | (h.m_hist[1] << 4) | (h.m_hist[2] << 8); - assert(index < 4096); - g_total_ordering4_hash[index] = (uint16_t)i; - } - - compute_selector_factors4(h, g_selector_factors4[i][0], g_selector_factors4[i][1], g_selector_factors4[i][2]); - } - - for (uint32_t i = 0; i < NUM_UNIQUE_TOTAL_ORDERINGS3; i++) { - hist3 h; - h.m_hist[0] = (uint8_t)g_unique_total_orders3[i][0]; - h.m_hist[1] = (uint8_t)g_unique_total_orders3[i][1]; - h.m_hist[2] = (uint8_t)g_unique_total_orders3[i][2]; - - if (!h.any_16()) { - const uint32_t index = h.m_hist[0] | (h.m_hist[1] << 4); - assert(index < 256); - g_total_ordering3_hash[index] = (uint16_t)i; - } - - compute_selector_factors3(h, g_selector_factors3[i][0], g_selector_factors3[i][1], g_selector_factors3[i][2]); - } - - g_initialized = true; -} - -void encode_bc1_solid_block(void *pDst, uint32_t fr, uint32_t fg, uint32_t fb, bool allow_3color) { - BC1Block *pDst_block = static_cast(pDst); - - uint32_t mask = 0xAA; - int max16 = -1, min16 = 0; - - if (allow_3color) { - const uint32_t err4 = g_bc1_match5_equals_1[fr].m_e + g_bc1_match6_equals_1[fg].m_e + g_bc1_match5_equals_1[fb].m_e; - const uint32_t err3 = g_bc1_match5_half[fr].m_e + g_bc1_match6_half[fg].m_e + g_bc1_match5_half[fb].m_e; - - if (err3 < err4) { - max16 = (g_bc1_match5_half[fr].m_hi << 11) | (g_bc1_match6_half[fg].m_hi << 5) | g_bc1_match5_half[fb].m_hi; - min16 = (g_bc1_match5_half[fr].m_lo << 11) | (g_bc1_match6_half[fg].m_lo << 5) | g_bc1_match5_half[fb].m_lo; - - if (max16 > min16) std::swap(max16, min16); - } - } - - if (max16 == -1) { - max16 = (g_bc1_match5_equals_1[fr].m_hi << 11) | (g_bc1_match6_equals_1[fg].m_hi << 5) | g_bc1_match5_equals_1[fb].m_hi; - min16 = (g_bc1_match5_equals_1[fr].m_lo << 11) | (g_bc1_match6_equals_1[fg].m_lo << 5) | g_bc1_match5_equals_1[fb].m_lo; - - if (min16 == max16) { - // Always forbid 3 color blocks - // This is to guarantee that BC3 blocks never use punchthrough alpha (3 color) mode, which isn't supported on some (all?) GPU's. - mask = 0; - - // Make l > h - if (min16 > 0) - min16--; - else { - // l = h = 0 - assert(min16 == max16 && max16 == 0); - - max16 = 1; - min16 = 0; - mask = 0x55; - } - - assert(max16 > min16); - } - - if (max16 < min16) { - std::swap(max16, min16); - mask ^= 0x55; - } - } - - pDst_block->SetLowColor(static_cast(max16)); - pDst_block->SetHighColor(static_cast(min16)); - pDst_block->selectors[0] = static_cast(mask); - pDst_block->selectors[1] = static_cast(mask); - pDst_block->selectors[2] = static_cast(mask); - pDst_block->selectors[3] = static_cast(mask); -} - -static const float g_midpoint5[32] = {.015686f, .047059f, .078431f, .111765f, .145098f, .176471f, .207843f, .241176f, .274510f, .305882f, .337255f, - .370588f, .403922f, .435294f, .466667f, .5f, .533333f, .564706f, .596078f, .629412f, .662745f, .694118f, - .725490f, .758824f, .792157f, .823529f, .854902f, .888235f, .921569f, .952941f, .984314f, 1e+37f}; -static const float g_midpoint6[64] = {.007843f, .023529f, .039216f, .054902f, .070588f, .086275f, .101961f, .117647f, .133333f, .149020f, .164706f, - .180392f, .196078f, .211765f, .227451f, .245098f, .262745f, .278431f, .294118f, .309804f, .325490f, .341176f, - .356863f, .372549f, .388235f, .403922f, .419608f, .435294f, .450980f, .466667f, .482353f, .500000f, .517647f, - .533333f, .549020f, .564706f, .580392f, .596078f, .611765f, .627451f, .643137f, .658824f, .674510f, .690196f, - .705882f, .721569f, .737255f, .754902f, .772549f, .788235f, .803922f, .819608f, .835294f, .850980f, .866667f, - .882353f, .898039f, .913725f, .929412f, .945098f, .960784f, .976471f, .992157f, 1e+37f}; - -struct vec3F { - float c[3]; -}; - -static inline void compute_least_squares_endpoints4_rgb(vec3F *pXl, vec3F *pXh, int total_r, int total_g, int total_b, float iz00, float iz10, float iz11, - uint32_t s, const uint32_t r_sum[17], const uint32_t g_sum[17], const uint32_t b_sum[17]) { - const float iz01 = iz10; - - const uint32_t f1 = g_unique_total_orders4[s][0]; - const uint32_t f2 = g_unique_total_orders4[s][0] + g_unique_total_orders4[s][1]; - const uint32_t f3 = g_unique_total_orders4[s][0] + g_unique_total_orders4[s][1] + g_unique_total_orders4[s][2]; - uint32_t uq00_r = (r_sum[f2] - r_sum[f1]) + (r_sum[f3] - r_sum[f2]) * 2 + (r_sum[16] - r_sum[f3]) * 3; - uint32_t uq00_g = (g_sum[f2] - g_sum[f1]) + (g_sum[f3] - g_sum[f2]) * 2 + (g_sum[16] - g_sum[f3]) * 3; - uint32_t uq00_b = (b_sum[f2] - b_sum[f1]) + (b_sum[f3] - b_sum[f2]) * 2 + (b_sum[16] - b_sum[f3]) * 3; - - float q10_r = (float)(total_r * 3 - uq00_r); - float q10_g = (float)(total_g * 3 - uq00_g); - float q10_b = (float)(total_b * 3 - uq00_b); - - pXl->c[0] = iz00 * (float)uq00_r + iz01 * q10_r; - pXh->c[0] = iz10 * (float)uq00_r + iz11 * q10_r; - - pXl->c[1] = iz00 * (float)uq00_g + iz01 * q10_g; - pXh->c[1] = iz10 * (float)uq00_g + iz11 * q10_g; - - pXl->c[2] = iz00 * (float)uq00_b + iz01 * q10_b; - pXh->c[2] = iz10 * (float)uq00_b + iz11 * q10_b; -} - -static inline bool compute_least_squares_endpoints4_rgb(const Color *pColors, const uint8_t *pSelectors, vec3F *pXl, vec3F *pXh, int total_r, int total_g, - int total_b) { - uint32_t uq00_r = 0, uq00_g = 0, uq00_b = 0; - uint32_t weight_accum = 0; - for (uint32_t i = 0; i < 16; i++) { - const uint8_t r = pColors[i][0], g = pColors[i][1], b = pColors[i][2]; - const uint8_t sel = pSelectors[i]; - - weight_accum += g_weight_vals4[sel]; - uq00_r += sel * r; - uq00_g += sel * g; - uq00_b += sel * b; - } - - int q10_r = total_r * 3 - uq00_r; - int q10_g = total_g * 3 - uq00_g; - int q10_b = total_b * 3 - uq00_b; - - float z00 = (float)((weight_accum >> 16) & 0xFF); - float z10 = (float)((weight_accum >> 8) & 0xFF); - float z11 = (float)(weight_accum & 0xFF); - float z01 = z10; - - float det = z00 * z11 - z01 * z10; - if (fabs(det) < 1e-8f) return false; - - det = (3.0f / 255.0f) / det; - - float iz00, iz01, iz10, iz11; - iz00 = z11 * det; - iz01 = -z01 * det; - iz10 = -z10 * det; - iz11 = z00 * det; - - pXl->c[0] = iz00 * (float)uq00_r + iz01 * q10_r; - pXh->c[0] = iz10 * (float)uq00_r + iz11 * q10_r; - - pXl->c[1] = iz00 * (float)uq00_g + iz01 * q10_g; - pXh->c[1] = iz10 * (float)uq00_g + iz11 * q10_g; - - pXl->c[2] = iz00 * (float)uq00_b + iz01 * q10_b; - pXh->c[2] = iz10 * (float)uq00_b + iz11 * q10_b; - - return true; -} - -static inline void compute_least_squares_endpoints3_rgb(vec3F *pXl, vec3F *pXh, int total_r, int total_g, int total_b, float iz00, float iz10, float iz11, - uint32_t s, const uint32_t r_sum[17], const uint32_t g_sum[17], const uint32_t b_sum[17]) { - const float iz01 = iz10; - - // Compensates for BC1 3-color ordering, which is selector 0, 2, 1 - const uint32_t f1 = g_unique_total_orders3[s][0]; - const uint32_t f2 = g_unique_total_orders3[s][0] + g_unique_total_orders3[s][2]; - uint32_t uq00_r = (r_sum[16] - r_sum[f2]) * 2 + (r_sum[f2] - r_sum[f1]); - uint32_t uq00_g = (g_sum[16] - g_sum[f2]) * 2 + (g_sum[f2] - g_sum[f1]); - uint32_t uq00_b = (b_sum[16] - b_sum[f2]) * 2 + (b_sum[f2] - b_sum[f1]); - - float q10_r = (float)(total_r * 2 - uq00_r); - float q10_g = (float)(total_g * 2 - uq00_g); - float q10_b = (float)(total_b * 2 - uq00_b); - - pXl->c[0] = iz00 * (float)uq00_r + iz01 * q10_r; - pXh->c[0] = iz10 * (float)uq00_r + iz11 * q10_r; - - pXl->c[1] = iz00 * (float)uq00_g + iz01 * q10_g; - pXh->c[1] = iz10 * (float)uq00_g + iz11 * q10_g; - - pXl->c[2] = iz00 * (float)uq00_b + iz01 * q10_b; - pXh->c[2] = iz10 * (float)uq00_b + iz11 * q10_b; -} - -static inline bool compute_least_squares_endpoints3_rgb(bool use_black, const Color *pColors, const uint8_t *pSelectors, vec3F *pXl, vec3F *pXh) { - int uq00_r = 0, uq00_g = 0, uq00_b = 0; - uint32_t weight_accum = 0; - int total_r = 0, total_g = 0, total_b = 0; - for (uint32_t i = 0; i < 16; i++) { - const uint8_t r = pColors[i][0], g = pColors[i][1], b = pColors[i][2]; - if (use_black) { - if ((r | g | b) < 4) continue; - } - - const uint8_t sel = pSelectors[i]; - assert(sel <= 3); - if (sel == 3) continue; - - weight_accum += g_weight_vals3[sel]; - - static const uint8_t s_tran[3] = {0, 2, 1}; - const uint8_t tsel = s_tran[sel]; - uq00_r += tsel * r; - uq00_g += tsel * g; - uq00_b += tsel * b; - - total_r += r; - total_g += g; - total_b += b; - } - - int q10_r = total_r * 2 - uq00_r; - int q10_g = total_g * 2 - uq00_g; - int q10_b = total_b * 2 - uq00_b; - - float z00 = (float)((weight_accum >> 16) & 0xFF); - float z10 = (float)((weight_accum >> 8) & 0xFF); - float z11 = (float)(weight_accum & 0xFF); - float z01 = z10; - - float det = z00 * z11 - z01 * z10; - if (fabs(det) < 1e-8f) return false; - - det = (2.0f / 255.0f) / det; - - float iz00, iz01, iz10, iz11; - iz00 = z11 * det; - iz01 = -z01 * det; - iz10 = -z10 * det; - iz11 = z00 * det; - - pXl->c[0] = iz00 * (float)uq00_r + iz01 * q10_r; - pXh->c[0] = iz10 * (float)uq00_r + iz11 * q10_r; - - pXl->c[1] = iz00 * (float)uq00_g + iz01 * q10_g; - pXh->c[1] = iz10 * (float)uq00_g + iz11 * q10_g; - - pXl->c[2] = iz00 * (float)uq00_b + iz01 * q10_b; - pXh->c[2] = iz10 * (float)uq00_b + iz11 * q10_b; - - return true; -} - -static inline void bc1_get_block_colors4(uint32_t block_r[4], uint32_t block_g[4], uint32_t block_b[4], uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, - uint32_t hg, uint32_t hb) { - block_r[0] = (lr << 3) | (lr >> 2); - block_g[0] = (lg << 2) | (lg >> 4); - block_b[0] = (lb << 3) | (lb >> 2); - block_r[3] = (hr << 3) | (hr >> 2); - block_g[3] = (hg << 2) | (hg >> 4); - block_b[3] = (hb << 3) | (hb >> 2); - - if (g_bc1_approx_mode == bc1_approx_mode::cBC1Ideal) { - block_r[1] = (block_r[0] * 2 + block_r[3]) / 3; - block_g[1] = (block_g[0] * 2 + block_g[3]) / 3; - block_b[1] = (block_b[0] * 2 + block_b[3]) / 3; - block_r[2] = (block_r[3] * 2 + block_r[0]) / 3; - block_g[2] = (block_g[3] * 2 + block_g[0]) / 3; - block_b[2] = (block_b[3] * 2 + block_b[0]) / 3; - } else if (g_bc1_approx_mode == bc1_approx_mode::cBC1IdealRound4) { - block_r[1] = (block_r[0] * 2 + block_r[3] + 1) / 3; - block_g[1] = (block_g[0] * 2 + block_g[3] + 1) / 3; - block_b[1] = (block_b[0] * 2 + block_b[3] + 1) / 3; - block_r[2] = (block_r[3] * 2 + block_r[0] + 1) / 3; - block_g[2] = (block_g[3] * 2 + block_g[0] + 1) / 3; - block_b[2] = (block_b[3] * 2 + block_b[0] + 1) / 3; - } else if (g_bc1_approx_mode == bc1_approx_mode::cBC1AMD) { - block_r[1] = interp_5_6_amd(block_r[0], block_r[3]); - block_g[1] = interp_5_6_amd(block_g[0], block_g[3]); - block_b[1] = interp_5_6_amd(block_b[0], block_b[3]); - block_r[2] = interp_5_6_amd(block_r[3], block_r[0]); - block_g[2] = interp_5_6_amd(block_g[3], block_g[0]); - block_b[2] = interp_5_6_amd(block_b[3], block_b[0]); - } else { - block_r[1] = interp_5_nv(lr, hr); - block_g[1] = interp_6_nv(block_g[0], block_g[3]); - block_b[1] = interp_5_nv(lb, hb); - block_r[2] = interp_5_nv(hr, lr); - block_g[2] = interp_6_nv(block_g[3], block_g[0]); - block_b[2] = interp_5_nv(hb, lb); - } -} - -static inline void bc1_get_block_colors3(uint32_t block_r[3], uint32_t block_g[3], uint32_t block_b[3], uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, - uint32_t hg, uint32_t hb) { - block_r[0] = (lr << 3) | (lr >> 2); - block_g[0] = (lg << 2) | (lg >> 4); - block_b[0] = (lb << 3) | (lb >> 2); - block_r[1] = (hr << 3) | (hr >> 2); - block_g[1] = (hg << 2) | (hg >> 4); - block_b[1] = (hb << 3) | (hb >> 2); - - if ((g_bc1_approx_mode == bc1_approx_mode::cBC1Ideal) || (g_bc1_approx_mode == bc1_approx_mode::cBC1IdealRound4)) { - block_r[2] = (block_r[0] + block_r[1]) / 2; - block_g[2] = (block_g[0] + block_g[1]) / 2; - block_b[2] = (block_b[0] + block_b[1]) / 2; - } else if (g_bc1_approx_mode == bc1_approx_mode::cBC1AMD) { - block_r[2] = interp_half_5_6_amd(block_r[0], block_r[1]); - block_g[2] = interp_half_5_6_amd(block_g[0], block_g[1]); - block_b[2] = interp_half_5_6_amd(block_b[0], block_b[1]); - } else { - block_r[2] = interp_half_5_nv(lr, hr); - block_g[2] = interp_half_6_nv(block_g[0], block_g[1]); - block_b[2] = interp_half_5_nv(lb, hb); - } -} - - -void bc1_find_sels4_noerr(const Color *pSrc_pixels, uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, uint32_t hg, uint32_t hb, uint8_t *sels) { - uint32_t block_r[4], block_g[4], block_b[4]; - bc1_get_block_colors4(block_r, block_g, block_b, lr, lg, lb, hr, hg, hb); - - int ar = block_r[3] - block_r[0], ag = block_g[3] - block_g[0], ab = block_b[3] - block_b[0]; - - int dots[4]; - for (uint32_t i = 0; i < 4; i++) dots[i] = (int)block_r[i] * ar + (int)block_g[i] * ag + (int)block_b[i] * ab; - - int t0 = dots[0] + dots[1], t1 = dots[1] + dots[2], t2 = dots[2] + dots[3]; - - ar *= 2; - ag *= 2; - ab *= 2; - - static const uint8_t s_sels[4] = {3, 2, 1, 0}; - - for (uint32_t i = 0; i < 16; i += 4) { - const int d0 = pSrc_pixels[i + 0].r * ar + pSrc_pixels[i + 0].g * ag + pSrc_pixels[i + 0].b * ab; - const int d1 = pSrc_pixels[i + 1].r * ar + pSrc_pixels[i + 1].g * ag + pSrc_pixels[i + 1].b * ab; - const int d2 = pSrc_pixels[i + 2].r * ar + pSrc_pixels[i + 2].g * ag + pSrc_pixels[i + 2].b * ab; - const int d3 = pSrc_pixels[i + 3].r * ar + pSrc_pixels[i + 3].g * ag + pSrc_pixels[i + 3].b * ab; - - sels[i + 0] = s_sels[(d0 <= t0) + (d0 < t1) + (d0 < t2)]; - sels[i + 1] = s_sels[(d1 <= t0) + (d1 < t1) + (d1 < t2)]; - sels[i + 2] = s_sels[(d2 <= t0) + (d2 < t1) + (d2 < t2)]; - sels[i + 3] = s_sels[(d3 <= t0) + (d3 < t1) + (d3 < t2)]; - } -} - -static inline uint32_t bc1_find_sels4_fasterr(const Color *pSrc_pixels, uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, uint32_t hg, uint32_t hb, - uint8_t sels[16], uint32_t cur_err) { - uint32_t block_r[4], block_g[4], block_b[4]; - bc1_get_block_colors4(block_r, block_g, block_b, lr, lg, lb, hr, hg, hb); - - int ar = block_r[3] - block_r[0], ag = block_g[3] - block_g[0], ab = block_b[3] - block_b[0]; - - int dots[4]; - for (uint32_t i = 0; i < 4; i++) dots[i] = (int)block_r[i] * ar + (int)block_g[i] * ag + (int)block_b[i] * ab; - - int t0 = dots[0] + dots[1], t1 = dots[1] + dots[2], t2 = dots[2] + dots[3]; - - ar *= 2; - ag *= 2; - ab *= 2; - - static const uint8_t s_sels[4] = {3, 2, 1, 0}; - - uint32_t total_err = 0; - - for (uint32_t i = 0; i < 16; i += 4) { - const int d0 = pSrc_pixels[i + 0].r * ar + pSrc_pixels[i + 0].g * ag + pSrc_pixels[i + 0].b * ab; - const int d1 = pSrc_pixels[i + 1].r * ar + pSrc_pixels[i + 1].g * ag + pSrc_pixels[i + 1].b * ab; - const int d2 = pSrc_pixels[i + 2].r * ar + pSrc_pixels[i + 2].g * ag + pSrc_pixels[i + 2].b * ab; - const int d3 = pSrc_pixels[i + 3].r * ar + pSrc_pixels[i + 3].g * ag + pSrc_pixels[i + 3].b * ab; - - uint8_t sel0 = s_sels[(d0 <= t0) + (d0 < t1) + (d0 < t2)]; - uint8_t sel1 = s_sels[(d1 <= t0) + (d1 < t1) + (d1 < t2)]; - uint8_t sel2 = s_sels[(d2 <= t0) + (d2 < t1) + (d2 < t2)]; - uint8_t sel3 = s_sels[(d3 <= t0) + (d3 < t1) + (d3 < t2)]; - - sels[i + 0] = sel0; - sels[i + 1] = sel1; - sels[i + 2] = sel2; - sels[i + 3] = sel3; - - total_err += - squarei(pSrc_pixels[i + 0].r - block_r[sel0]) + squarei(pSrc_pixels[i + 0].g - block_g[sel0]) + squarei(pSrc_pixels[i + 0].b - block_b[sel0]); - total_err += - squarei(pSrc_pixels[i + 1].r - block_r[sel1]) + squarei(pSrc_pixels[i + 1].g - block_g[sel1]) + squarei(pSrc_pixels[i + 1].b - block_b[sel1]); - total_err += - squarei(pSrc_pixels[i + 2].r - block_r[sel2]) + squarei(pSrc_pixels[i + 2].g - block_g[sel2]) + squarei(pSrc_pixels[i + 2].b - block_b[sel2]); - total_err += - squarei(pSrc_pixels[i + 3].r - block_r[sel3]) + squarei(pSrc_pixels[i + 3].g - block_g[sel3]) + squarei(pSrc_pixels[i + 3].b - block_b[sel3]); - - if (total_err >= cur_err) break; - } - - return total_err; -} - -static inline uint32_t bc1_find_sels4_check2_err(const Color *pSrc_pixels, uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, uint32_t hg, uint32_t hb, - uint8_t sels[16], uint32_t cur_err) { - uint32_t block_r[4], block_g[4], block_b[4]; - bc1_get_block_colors4(block_r, block_g, block_b, lr, lg, lb, hr, hg, hb); - - int dr = block_r[3] - block_r[0], dg = block_g[3] - block_g[0], db = block_b[3] - block_b[0]; - - const float f = 4.0f / (float)(squarei(dr) + squarei(dg) + squarei(db) + .00000125f); - - uint32_t total_err = 0; - - for (uint32_t i = 0; i < 16; i++) { - const int r = pSrc_pixels[i].r; - const int g = pSrc_pixels[i].g; - const int b = pSrc_pixels[i].b; - - int sel = (int)((float)((r - (int)block_r[0]) * dr + (g - (int)block_g[0]) * dg + (b - (int)block_b[0]) * db) * f + .5f); - sel = clampi(sel, 1, 3); - - uint32_t err0 = squarei((int)block_r[sel - 1] - (int)r) + squarei((int)block_g[sel - 1] - (int)g) + squarei((int)block_b[sel - 1] - (int)b); - uint32_t err1 = squarei((int)block_r[sel] - (int)r) + squarei((int)block_g[sel] - (int)g) + squarei((int)block_b[sel] - (int)b); - - int best_sel = sel; - uint32_t best_err = err1; - if (err0 == err1) { - // Prefer non-interpolation - if ((best_sel - 1) == 0) best_sel = 0; - } else if (err0 < best_err) { - best_sel = sel - 1; - best_err = err0; - } - - total_err += best_err; - - if (total_err >= cur_err) break; - - sels[i] = (uint8_t)best_sel; - } - return total_err; -} - -static inline uint32_t bc1_find_sels4_fullerr(const Color *pSrc_pixels, uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, uint32_t hg, uint32_t hb, - uint8_t sels[16], uint32_t cur_err) { - uint32_t block_r[4], block_g[4], block_b[4]; - bc1_get_block_colors4(block_r, block_g, block_b, lr, lg, lb, hr, hg, hb); - - uint32_t total_err = 0; - - for (uint32_t i = 0; i < 16; i++) { - const int r = pSrc_pixels[i].r; - const int g = pSrc_pixels[i].g; - const int b = pSrc_pixels[i].b; - - uint32_t best_err = squarei((int)block_r[0] - (int)r) + squarei((int)block_g[0] - (int)g) + squarei((int)block_b[0] - (int)b); - uint8_t best_sel = 0; - - for (uint32_t j = 1; (j < 4) && best_err; j++) { - uint32_t err = squarei((int)block_r[j] - (int)r) + squarei((int)block_g[j] - (int)g) + squarei((int)block_b[j] - (int)b); - if ((err < best_err) || ((err == best_err) && (j == 3))) { - best_err = err; - best_sel = (uint8_t)j; - } - } - - total_err += best_err; - - if (total_err >= cur_err) break; - - sels[i] = (uint8_t)best_sel; - } - return total_err; -} - -static inline uint32_t bc1_find_sels4(uint32_t flags, const Color *pSrc_pixels, uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, uint32_t hg, uint32_t hb, - uint8_t sels[16], uint32_t cur_err) { - uint32_t err; - - if (flags & cEncodeBC1UseFasterMSEEval) - err = bc1_find_sels4_fasterr(pSrc_pixels, lr, lg, lb, hr, hg, hb, sels, cur_err); - else if (flags & cEncodeBC1UseFullMSEEval) - err = bc1_find_sels4_fullerr(pSrc_pixels, lr, lg, lb, hr, hg, hb, sels, cur_err); - else - err = bc1_find_sels4_check2_err(pSrc_pixels, lr, lg, lb, hr, hg, hb, sels, cur_err); - - return err; -} - -static inline uint32_t bc1_find_sels3_fullerr(bool use_black, const Color *pSrc_pixels, uint32_t lr, uint32_t lg, uint32_t lb, uint32_t hr, uint32_t hg, - uint32_t hb, uint8_t sels[16], uint32_t cur_err) { - uint32_t block_r[3], block_g[3], block_b[3]; - bc1_get_block_colors3(block_r, block_g, block_b, lr, lg, lb, hr, hg, hb); - - uint32_t total_err = 0; - - for (uint32_t i = 0; i < 16; i++) { - const int r = pSrc_pixels[i].r; - const int g = pSrc_pixels[i].g; - const int b = pSrc_pixels[i].b; - - uint32_t best_err = squarei((int)block_r[0] - (int)r) + squarei((int)block_g[0] - (int)g) + squarei((int)block_b[0] - (int)b); - uint32_t best_sel = 0; - - uint32_t err1 = squarei((int)block_r[1] - (int)r) + squarei((int)block_g[1] - (int)g) + squarei((int)block_b[1] - (int)b); - if (err1 < best_err) { - best_err = err1; - best_sel = 1; - } - - uint32_t err2 = squarei((int)block_r[2] - (int)r) + squarei((int)block_g[2] - (int)g) + squarei((int)block_b[2] - (int)b); - if (err2 < best_err) { - best_err = err2; - best_sel = 2; - } - - if (use_black) { - uint32_t err3 = squarei(r) + squarei(g) + squarei(b); - if (err3 < best_err) { - best_err = err3; - best_sel = 3; - } - } - - total_err += best_err; - if (total_err >= cur_err) return total_err; - - sels[i] = (uint8_t)best_sel; - } - - return total_err; -} - -static inline void precise_round_565(const vec3F &xl, const vec3F &xh, int &trial_lr, int &trial_lg, int &trial_lb, int &trial_hr, int &trial_hg, - int &trial_hb) { - trial_lr = (int)(xl.c[0] * 31.0f); - trial_lg = (int)(xl.c[1] * 63.0f); - trial_lb = (int)(xl.c[2] * 31.0f); - - trial_hr = (int)(xh.c[0] * 31.0f); - trial_hg = (int)(xh.c[1] * 63.0f); - trial_hb = (int)(xh.c[2] * 31.0f); - - if ((uint32_t)(trial_lr | trial_lb | trial_hr | trial_hb) > 31U) { - trial_lr = ((uint32_t)trial_lr > 31U) ? (~trial_lr >> 31) & 31 : trial_lr; - trial_hr = ((uint32_t)trial_hr > 31U) ? (~trial_hr >> 31) & 31 : trial_hr; - - trial_lb = ((uint32_t)trial_lb > 31U) ? (~trial_lb >> 31) & 31 : trial_lb; - trial_hb = ((uint32_t)trial_hb > 31U) ? (~trial_hb >> 31) & 31 : trial_hb; - } - - if ((uint32_t)(trial_lg | trial_hg) > 63U) { - trial_lg = ((uint32_t)trial_lg > 63U) ? (~trial_lg >> 31) & 63 : trial_lg; - trial_hg = ((uint32_t)trial_hg > 63U) ? (~trial_hg >> 31) & 63 : trial_hg; - } - - trial_lr = (trial_lr + (xl.c[0] > g_midpoint5[trial_lr])) & 31; - trial_lg = (trial_lg + (xl.c[1] > g_midpoint6[trial_lg])) & 63; - trial_lb = (trial_lb + (xl.c[2] > g_midpoint5[trial_lb])) & 31; - - trial_hr = (trial_hr + (xh.c[0] > g_midpoint5[trial_hr])) & 31; - trial_hg = (trial_hg + (xh.c[1] > g_midpoint6[trial_hg])) & 63; - trial_hb = (trial_hb + (xh.c[2] > g_midpoint5[trial_hb])) & 31; -} - -static inline void precise_round_565_noscale(vec3F xl, vec3F xh, int &trial_lr, int &trial_lg, int &trial_lb, int &trial_hr, int &trial_hg, int &trial_hb) { - xl.c[0] *= 1.0f / 255.0f; - xl.c[1] *= 1.0f / 255.0f; - xl.c[2] *= 1.0f / 255.0f; - - xh.c[0] *= 1.0f / 255.0f; - xh.c[1] *= 1.0f / 255.0f; - xh.c[2] *= 1.0f / 255.0f; - - precise_round_565(xl, xh, trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb); -} - -static inline void bc1_encode4(BC1Block *pDst_block, int lr, int lg, int lb, int hr, int hg, int hb, const uint8_t sels[16]) { - uint16_t lc16 = Color::Pack565Unscaled(lr, lg, lb); - uint16_t hc16 = Color::Pack565Unscaled(hr, hg, hb); - - // Always forbid 3 color blocks - if (lc16 == hc16) { - uint8_t mask = 0; - - // Make l > h - if (hc16 > 0) - hc16--; - else { - // lc16 = hc16 = 0 - assert(lc16 == hc16 && hc16 == 0); - - hc16 = 0; - lc16 = 1; - mask = 0x55; // select hc16 - } - - assert(lc16 > hc16); - pDst_block->SetLowColor(static_cast(lc16)); - pDst_block->SetHighColor(static_cast(hc16)); - - pDst_block->selectors[0] = mask; - pDst_block->selectors[1] = mask; - pDst_block->selectors[2] = mask; - pDst_block->selectors[3] = mask; - } else { - uint8_t invert_mask = 0; - if (lc16 < hc16) { - std::swap(lc16, hc16); - invert_mask = 0x55; - } - - assert(lc16 > hc16); - pDst_block->SetLowColor((uint16_t)lc16); - pDst_block->SetHighColor((uint16_t)hc16); - - uint32_t packed_sels = 0; - static const uint8_t s_sel_trans[4] = {0, 2, 3, 1}; - for (uint32_t i = 0; i < 16; i++) packed_sels |= ((uint32_t)s_sel_trans[sels[i]] << (i * 2)); - - // todo: make this less silly to prevent packing and unpacking - pDst_block->selectors[0] = (uint8_t)packed_sels ^ invert_mask; - pDst_block->selectors[1] = (uint8_t)(packed_sels >> 8) ^ invert_mask; - pDst_block->selectors[2] = (uint8_t)(packed_sels >> 16) ^ invert_mask; - pDst_block->selectors[3] = (uint8_t)(packed_sels >> 24) ^ invert_mask; - } -} - -static inline void bc1_encode3(BC1Block *pDst_block, int lr, int lg, int lb, int hr, int hg, int hb, const uint8_t sels[16]) { - uint16_t lc16 = Color::Pack565Unscaled(lr, lg, lb); - uint16_t hc16 = Color::Pack565Unscaled(hr, hg, hb); - - bool invert_flag = false; - if (lc16 > hc16) { - std::swap(lc16, hc16); - invert_flag = true; - } - - assert(lc16 <= hc16); - - pDst_block->SetLowColor((uint16_t)lc16); - pDst_block->SetHighColor((uint16_t)hc16); - - uint32_t packed_sels = 0; - - if (invert_flag) { - static const uint8_t s_sel_trans_inv[4] = {1, 0, 2, 3}; - - for (uint32_t i = 0; i < 16; i++) packed_sels |= ((uint32_t)s_sel_trans_inv[sels[i]] << (i * 2)); - } else { - for (uint32_t i = 0; i < 16; i++) packed_sels |= ((uint32_t)sels[i] << (i * 2)); - } - - // todo: make this less silly to prevent packing and unpacking - pDst_block->selectors[0] = (uint8_t)packed_sels; - pDst_block->selectors[1] = (uint8_t)(packed_sels >> 8); - pDst_block->selectors[2] = (uint8_t)(packed_sels >> 16); - pDst_block->selectors[3] = (uint8_t)(packed_sels >> 24); -} - -struct bc1_encode_results { - int lr, lg, lb; - int hr, hg, hb; - uint8_t sels[16]; - bool m_3color; -}; - -static bool try_3color_block_useblack(const Color *pSrc_pixels, uint32_t flags, uint32_t &cur_err, bc1_encode_results &results) { - int total_r = 0, total_g = 0, total_b = 0; - int max_r = 0, max_g = 0, max_b = 0; - int min_r = 255, min_g = 255, min_b = 255; - int total_pixels = 0; - for (uint32_t i = 0; i < 16; i++) { - const int r = pSrc_pixels[i].r, g = pSrc_pixels[i].g, b = pSrc_pixels[i].b; - if ((r | g | b) < 4) continue; - - max_r = std::max(max_r, r); - max_g = std::max(max_g, g); - max_b = std::max(max_b, b); - min_r = std::min(min_r, r); - min_g = std::min(min_g, g); - min_b = std::min(min_b, b); - total_r += r; - total_g += g; - total_b += b; - - total_pixels++; - } - - if (!total_pixels) return false; - - int half_total_pixels = total_pixels >> 1; - int avg_r = (total_r + half_total_pixels) / total_pixels; - int avg_g = (total_g + half_total_pixels) / total_pixels; - int avg_b = (total_b + half_total_pixels) / total_pixels; - - uint32_t low_c = 0, high_c = 0; - - int icov[6] = {0, 0, 0, 0, 0, 0}; - for (uint32_t i = 0; i < 16; i++) { - int r = (int)pSrc_pixels[i].r; - int g = (int)pSrc_pixels[i].g; - int b = (int)pSrc_pixels[i].b; - - if ((r | g | b) < 4) continue; - - r -= avg_r; - g -= avg_g; - b -= avg_b; - - icov[0] += r * r; - icov[1] += r * g; - icov[2] += r * b; - icov[3] += g * g; - icov[4] += g * b; - icov[5] += b * b; - } - - float cov[6]; - for (uint32_t i = 0; i < 6; i++) cov[i] = (float)(icov[i]) * (1.0f / 255.0f); - - float xr = (float)(max_r - min_r); - float xg = (float)(max_g - min_g); - float xb = (float)(max_b - min_b); - - if (icov[2] < 0) xr = -xr; - - if (icov[4] < 0) xg = -xg; - - for (uint32_t power_iter = 0; power_iter < 4; power_iter++) { - float r = xr * cov[0] + xg * cov[1] + xb * cov[2]; - float g = xr * cov[1] + xg * cov[3] + xb * cov[4]; - float b = xr * cov[2] + xg * cov[4] + xb * cov[5]; - xr = r; - xg = g; - xb = b; - } - - float k = maximum(fabsf(xr), fabsf(xg), fabsf(xb)); - int saxis_r = 306, saxis_g = 601, saxis_b = 117; - if (k >= 2) { - float m = 1024.0f / k; - saxis_r = (int)(xr * m); - saxis_g = (int)(xg * m); - saxis_b = (int)(xb * m); - } - - int low_dot = INT_MAX, high_dot = INT_MIN; - for (uint32_t i = 0; i < 16; i++) { - int r = (int)pSrc_pixels[i].r, g = (int)pSrc_pixels[i].g, b = (int)pSrc_pixels[i].b; - - if ((r | g | b) < 4) continue; - - int dot = r * saxis_r + g * saxis_g + b * saxis_b; - if (dot < low_dot) { - low_dot = dot; - low_c = i; - } - if (dot > high_dot) { - high_dot = dot; - high_c = i; - } - } - - int lr = scale8To5(pSrc_pixels[low_c].r); - int lg = scale8To6(pSrc_pixels[low_c].g); - int lb = scale8To5(pSrc_pixels[low_c].b); - - int hr = scale8To5(pSrc_pixels[high_c].r); - int hg = scale8To6(pSrc_pixels[high_c].g); - int hb = scale8To5(pSrc_pixels[high_c].b); - - uint8_t trial_sels[16]; - uint32_t trial_err = bc1_find_sels3_fullerr(true, pSrc_pixels, lr, lg, lb, hr, hg, hb, trial_sels, UINT32_MAX); - - if (trial_err) { - const uint32_t total_ls_passes = flags & cEncodeBC1TwoLeastSquaresPasses ? 2 : 1; - for (uint32_t trials = 0; trials < total_ls_passes; trials++) { - vec3F xl, xh; - int lr2, lg2, lb2, hr2, hg2, hb2; - if (!compute_least_squares_endpoints3_rgb(true, pSrc_pixels, trial_sels, &xl, &xh)) { - lr2 = g_bc1_match5_half[avg_r].m_hi; - lg2 = g_bc1_match6_half[avg_g].m_hi; - lb2 = g_bc1_match5_half[avg_b].m_hi; - - hr2 = g_bc1_match5_half[avg_r].m_lo; - hg2 = g_bc1_match6_half[avg_g].m_lo; - hb2 = g_bc1_match5_half[avg_b].m_lo; - } else { - precise_round_565(xl, xh, hr2, hg2, hb2, lr2, lg2, lb2); - } - - if ((lr == lr2) && (lg == lg2) && (lb == lb2) && (hr == hr2) && (hg == hg2) && (hb == hb2)) break; - - uint8_t trial_sels2[16]; - uint32_t trial_err2 = bc1_find_sels3_fullerr(true, pSrc_pixels, lr2, lg2, lb2, hr2, hg2, hb2, trial_sels2, trial_err); - - if (trial_err2 < trial_err) { - trial_err = trial_err2; - lr = lr2; - lg = lg2; - lb = lb2; - hr = hr2; - hg = hg2; - hb = hb2; - memcpy(trial_sels, trial_sels2, sizeof(trial_sels)); - } else - break; - } - } - - if (trial_err < cur_err) { - results.m_3color = true; - results.lr = lr; - results.lg = lg; - results.lb = lb; - results.hr = hr; - results.hg = hg; - results.hb = hb; - memcpy(results.sels, trial_sels, 16); - - cur_err = trial_err; - - return true; - } - - return false; -} - -static bool try_3color_block(const Color *pSrc_pixels, uint32_t flags, uint32_t &cur_err, int avg_r, int avg_g, int avg_b, int lr, int lg, int lb, int hr, - int hg, int hb, int total_r, int total_g, int total_b, uint32_t total_orderings_to_try, bc1_encode_results &results) { - uint8_t trial_sels[16]; - uint32_t trial_err = bc1_find_sels3_fullerr(false, pSrc_pixels, lr, lg, lb, hr, hg, hb, trial_sels, UINT32_MAX); - - if (trial_err) { - const uint32_t total_ls_passes = flags & cEncodeBC1TwoLeastSquaresPasses ? 2 : 1; - for (uint32_t trials = 0; trials < total_ls_passes; trials++) { - vec3F xl, xh; - int lr2, lg2, lb2, hr2, hg2, hb2; - if (!compute_least_squares_endpoints3_rgb(false, pSrc_pixels, trial_sels, &xl, &xh)) { - lr2 = g_bc1_match5_half[avg_r].m_hi; - lg2 = g_bc1_match6_half[avg_g].m_hi; - lb2 = g_bc1_match5_half[avg_b].m_hi; - - hr2 = g_bc1_match5_half[avg_r].m_lo; - hg2 = g_bc1_match6_half[avg_g].m_lo; - hb2 = g_bc1_match5_half[avg_b].m_lo; - } else { - precise_round_565(xl, xh, hr2, hg2, hb2, lr2, lg2, lb2); - } - - if ((lr == lr2) && (lg == lg2) && (lb == lb2) && (hr == hr2) && (hg == hg2) && (hb == hb2)) break; - - uint8_t trial_sels2[16]; - uint32_t trial_err2 = bc1_find_sels3_fullerr(false, pSrc_pixels, lr2, lg2, lb2, hr2, hg2, hb2, trial_sels2, trial_err); - - if (trial_err2 < trial_err) { - trial_err = trial_err2; - lr = lr2; - lg = lg2; - lb = lb2; - hr = hr2; - hg = hg2; - hb = hb2; - memcpy(trial_sels, trial_sels2, sizeof(trial_sels)); - } else - break; - } - } - - if ((trial_err) && (flags & cEncodeBC1UseLikelyTotalOrderings) && (total_orderings_to_try)) { - hist3 h; - for (uint32_t i = 0; i < 16; i++) { - assert(trial_sels[i] < 3); - h.m_hist[trial_sels[i]]++; - } - - const uint32_t orig_total_order_index = h.lookup_total_ordering_index(); - - int r0, g0, b0, r3, g3, b3; - r0 = (lr << 3) | (lr >> 2); - g0 = (lg << 2) | (lg >> 4); - b0 = (lb << 3) | (lb >> 2); - r3 = (hr << 3) | (hr >> 2); - g3 = (hg << 2) | (hg >> 4); - b3 = (hb << 3) | (hb >> 2); - - int ar = r3 - r0, ag = g3 - g0, ab = b3 - b0; - - int dots[16]; - for (uint32_t i = 0; i < 16; i++) { - int r = pSrc_pixels[i].r; - int g = pSrc_pixels[i].g; - int b = pSrc_pixels[i].b; - int d = 0x1000000 + (r * ar + g * ag + b * ab); - assert(d >= 0); - dots[i] = (d << 4) + i; - } - - std::sort(dots, dots + 16); - - uint32_t r_sum[17], g_sum[17], b_sum[17]; - uint32_t r = 0, g = 0, b = 0; - for (uint32_t i = 0; i < 16; i++) { - const uint32_t p = dots[i] & 15; - - r_sum[i] = r; - g_sum[i] = g; - b_sum[i] = b; - - r += pSrc_pixels[p].r; - g += pSrc_pixels[p].g; - b += pSrc_pixels[p].b; - } - - r_sum[16] = total_r; - g_sum[16] = total_g; - b_sum[16] = total_b; - - const uint32_t q_total = (flags & cEncodeBC1Exhaustive) ? NUM_UNIQUE_TOTAL_ORDERINGS3 : std::min(total_orderings_to_try, MAX_TOTAL_ORDERINGS3); - for (uint32_t q = 0; q < q_total; q++) { - const uint32_t s = (flags & cEncodeBC1Exhaustive) ? q : g_best_total_orderings3[orig_total_order_index][q]; - - int trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb; - - vec3F xl, xh; - - if ((s == TOTAL_ORDER_3_0_16) || (s == TOTAL_ORDER_3_1_16) || (s == TOTAL_ORDER_3_2_16)) { - trial_lr = g_bc1_match5_half[avg_r].m_hi; - trial_lg = g_bc1_match6_half[avg_g].m_hi; - trial_lb = g_bc1_match5_half[avg_b].m_hi; - - trial_hr = g_bc1_match5_half[avg_r].m_lo; - trial_hg = g_bc1_match6_half[avg_g].m_lo; - trial_hb = g_bc1_match5_half[avg_b].m_lo; - } else { - compute_least_squares_endpoints3_rgb(&xl, &xh, total_r, total_g, total_b, g_selector_factors3[s][0], g_selector_factors3[s][1], - g_selector_factors3[s][2], s, r_sum, g_sum, b_sum); - - precise_round_565(xl, xh, trial_hr, trial_hg, trial_hb, trial_lr, trial_lg, trial_lb); - } - - uint8_t trial_sels2[16]; - uint32_t trial_err2 = - bc1_find_sels3_fullerr(false, pSrc_pixels, trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb, trial_sels2, UINT32_MAX); - - if (trial_err2 < trial_err) { - trial_err = trial_err2; - - lr = trial_lr; - lg = trial_lg; - lb = trial_lb; - - hr = trial_hr; - hg = trial_hg; - hb = trial_hb; - - memcpy(trial_sels, trial_sels2, sizeof(trial_sels)); - } - - } // s - } - - if (trial_err < cur_err) { - results.m_3color = true; - results.lr = lr; - results.lg = lg; - results.lb = lb; - results.hr = hr; - results.hg = hg; - results.hb = hb; - memcpy(results.sels, trial_sels, 16); - - cur_err = trial_err; - - return true; - } - - return false; -} - -void encode_bc1(uint32_t level, void *pDst, const uint8_t *pPixels, bool allow_3color, bool allow_transparent_texels_for_black) { - uint32_t flags = 0, total_orderings4 = 1, total_orderings3 = 1; - - static_assert(MAX_TOTAL_ORDERINGS3 >= 32, "MAX_TOTAL_ORDERINGS3 >= 32"); - static_assert(MAX_TOTAL_ORDERINGS4 >= 32, "MAX_TOTAL_ORDERINGS4 >= 32"); - - switch (level) { - case 0: - // Faster/higher quality than stb_dxt default. - flags = cEncodeBC1BoundingBoxInt; - break; - case 1: - // Faster/higher quality than stb_dxt default. a bit higher average quality vs. mode 0. - flags = cEncodeBC1Use2DLS; - break; - case 2: - // On average mode 2 is a little weaker than modes 0/1, but it's stronger on outliers (very tough textures). - // Slightly stronger than stb_dxt. - flags = 0; - break; - case 3: - // Slightly stronger than stb_dxt HIGHQUAL. - flags = cEncodeBC1TwoLeastSquaresPasses; - break; - case 4: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1Use6PowerIters; - break; - default: - case 5: - // stb_dxt HIGHQUAL + permit 3 color (if it's enabled). - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFasterMSEEval; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - break; - case 6: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFasterMSEEval | cEncodeBC1UseLikelyTotalOrderings; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - break; - case 7: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFasterMSEEval | cEncodeBC1UseLikelyTotalOrderings; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 4; - break; - case 8: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFasterMSEEval | cEncodeBC1UseLikelyTotalOrderings; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 8; - break; - case 9: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseLikelyTotalOrderings; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 11; - total_orderings3 = 3; - break; - case 10: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseLikelyTotalOrderings; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 20; - total_orderings3 = 8; - break; - case 11: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseLikelyTotalOrderings; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 28; - total_orderings3 = 16; - break; - case 12: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseLikelyTotalOrderings; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 32; - total_orderings3 = 32; - break; - case 13: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use6PowerIters | - (20 << cEncodeBC1EndpointSearchRoundsShift) | cEncodeBC1TryAllInitialEndponts; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 32; - total_orderings3 = 32; - break; - case 14: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use6PowerIters | - (32 << cEncodeBC1EndpointSearchRoundsShift) | cEncodeBC1TryAllInitialEndponts; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 32; - total_orderings3 = 32; - break; - case 15: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use6PowerIters | - (32 << cEncodeBC1EndpointSearchRoundsShift) | cEncodeBC1TryAllInitialEndponts; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = ((((32 + MAX_TOTAL_ORDERINGS4) / 2) + 32) / 2); - total_orderings3 = 32; - break; - case 16: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use6PowerIters | - (256 << cEncodeBC1EndpointSearchRoundsShift) | cEncodeBC1TryAllInitialEndponts; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = (32 + MAX_TOTAL_ORDERINGS4) / 2; - total_orderings3 = 32; - break; - case 17: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use6PowerIters | - (256 << cEncodeBC1EndpointSearchRoundsShift) | cEncodeBC1TryAllInitialEndponts; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = MAX_TOTAL_ORDERINGS4; - total_orderings3 = 32; - break; - case 18: - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use6PowerIters | - cEncodeBC1Iterative | (256 << cEncodeBC1EndpointSearchRoundsShift) | cEncodeBC1TryAllInitialEndponts; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = MAX_TOTAL_ORDERINGS4; - total_orderings3 = 32; - break; - case 19: - // This hidden mode is *extremely* slow and abuses the encoder. It's just for testing/training. - flags = cEncodeBC1TwoLeastSquaresPasses | cEncodeBC1UseFullMSEEval | cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use6PowerIters | - cEncodeBC1Exhaustive | cEncodeBC1Iterative | (256 << cEncodeBC1EndpointSearchRoundsShift) | cEncodeBC1TryAllInitialEndponts; - flags |= (allow_3color ? cEncodeBC1Use3ColorBlocks : 0) | (allow_transparent_texels_for_black ? cEncodeBC1Use3ColorBlocksForBlackPixels : 0); - total_orderings4 = 32; - total_orderings3 = 32; - break; - } - - encode_bc1(pDst, pPixels, flags, total_orderings4, total_orderings3); -} - -// Finds low and high colors to begin with - -void encode_bc1_pick_initial(const Color *pSrc_pixels, uint32_t flags, bool grayscale_flag, int min_r, int min_g, int min_b, int max_r, int max_g, int max_b, - int avg_r, int avg_g, int avg_b, int total_r, int total_g, int total_b, int &lr, int &lg, int &lb, int &hr, int &hg, int &hb) { - if (grayscale_flag) { - const int fr = pSrc_pixels[0].r; - - // Grayscale blocks are a common enough case to specialize. - if ((max_r - min_r) < 2) { - lr = lb = hr = hb = scale8To5(fr); - lg = hg = scale8To6(fr); - } else { - lr = lb = scale8To5(min_r); - lg = scale8To6(min_r); - - hr = hb = scale8To5(max_r); - hg = scale8To6(max_r); - } - } else if (flags & cEncodeBC1Use2DLS) { - // 2D Least Squares approach from Humus's example, with added inset and optimal rounding. - int big_chan = 0, min_chan_val = min_r, max_chan_val = max_r; - if ((max_g - min_g) > (max_chan_val - min_chan_val)) big_chan = 1, min_chan_val = min_g, max_chan_val = max_g; - - if ((max_b - min_b) > (max_chan_val - min_chan_val)) big_chan = 2, min_chan_val = min_b, max_chan_val = max_b; - - int sum_xy_r = 0, sum_xy_g = 0, sum_xy_b = 0; - vec3F l, h; - if (big_chan == 0) { - for (uint32_t i = 0; i < 16; i++) { - const int r = pSrc_pixels[i].r, g = pSrc_pixels[i].g, b = pSrc_pixels[i].b; - sum_xy_r += r * r, sum_xy_g += r * g, sum_xy_b += r * b; - } - - int sum_x = total_r; - int sum_x2 = sum_xy_r; - - float div = (float)(16 * sum_x2 - sum_x * sum_x); - float b_y = 0.0f, b_z = 0.0f; - if (fabs(div) > 1e-8f) { - div = 1.0f / div; - b_y = (16 * sum_xy_g - sum_x * total_g) * div; - b_z = (16 * sum_xy_b - sum_x * total_b) * div; - } - - float a_y = (total_g - b_y * sum_x) / 16.0f; - float a_z = (total_b - b_z * sum_x) / 16.0f; - - l.c[1] = a_y + b_y * min_chan_val; - l.c[2] = a_z + b_z * min_chan_val; - - h.c[1] = a_y + b_y * max_chan_val; - h.c[2] = a_z + b_z * max_chan_val; - - float dg = (h.c[1] - l.c[1]); - float db = (h.c[2] - l.c[2]); - - h.c[1] = l.c[1] + dg * (15.0f / 16.0f); - h.c[2] = l.c[2] + db * (15.0f / 16.0f); - - l.c[1] = l.c[1] + dg * (1.0f / 16.0f); - l.c[2] = l.c[2] + db * (1.0f / 16.0f); - - float d = (float)(max_chan_val - min_chan_val); - float fmin_chan_val = min_chan_val + d * (1.0f / 16.0f); - float fmax_chan_val = min_chan_val + d * (15.0f / 16.0f); - - l.c[0] = fmin_chan_val; - h.c[0] = fmax_chan_val; - } else if (big_chan == 1) { - for (uint32_t i = 0; i < 16; i++) { - const int r = pSrc_pixels[i].r, g = pSrc_pixels[i].g, b = pSrc_pixels[i].b; - sum_xy_r += g * r, sum_xy_g += g * g, sum_xy_b += g * b; - } - - int sum_x = total_g; - int sum_x2 = sum_xy_g; - - float div = (float)(16 * sum_x2 - sum_x * sum_x); - float b_x = 0.0f, b_z = 0.0f; - if (fabs(div) > 1e-8f) { - div = 1.0f / div; - b_x = (16 * sum_xy_r - sum_x * total_r) * div; - b_z = (16 * sum_xy_b - sum_x * total_b) * div; - } - - float a_x = (total_r - b_x * sum_x) / 16.0f; - float a_z = (total_b - b_z * sum_x) / 16.0f; - - l.c[0] = a_x + b_x * min_chan_val; - l.c[2] = a_z + b_z * min_chan_val; - - h.c[0] = a_x + b_x * max_chan_val; - h.c[2] = a_z + b_z * max_chan_val; - - float dr = (h.c[0] - l.c[0]); - float db = (h.c[2] - l.c[2]); - - h.c[0] = l.c[0] + dr * (15.0f / 16.0f); - h.c[2] = l.c[2] + db * (15.0f / 16.0f); - - l.c[0] = l.c[0] + dr * (1.0f / 16.0f); - l.c[2] = l.c[2] + db * (1.0f / 16.0f); - - float d = (float)(max_chan_val - min_chan_val); - float fmin_chan_val = min_chan_val + d * (1.0f / 16.0f); - float fmax_chan_val = min_chan_val + d * (15.0f / 16.0f); - - l.c[1] = fmin_chan_val; - h.c[1] = fmax_chan_val; - } else { - for (uint32_t i = 0; i < 16; i++) { - const int r = pSrc_pixels[i].r, g = pSrc_pixels[i].g, b = pSrc_pixels[i].b; - sum_xy_r += b * r, sum_xy_g += b * g, sum_xy_b += b * b; - } - - int sum_x = total_b; - int sum_x2 = sum_xy_b; - - float div = (float)(16 * sum_x2 - sum_x * sum_x); - float b_x = 0.0f, b_y = 0.0f; - if (fabs(div) > 1e-8f) { - div = 1.0f / div; - b_x = (16 * sum_xy_r - sum_x * total_r) * div; - b_y = (16 * sum_xy_g - sum_x * total_g) * div; - } - - float a_x = (total_r - b_x * sum_x) / 16.0f; - float a_y = (total_g - b_y * sum_x) / 16.0f; - - l.c[0] = a_x + b_x * min_chan_val; - l.c[1] = a_y + b_y * min_chan_val; - - h.c[0] = a_x + b_x * max_chan_val; - h.c[1] = a_y + b_y * max_chan_val; - - float dr = (h.c[0] - l.c[0]); - float dg = (h.c[1] - l.c[1]); - - h.c[0] = l.c[0] + dr * (15.0f / 16.0f); - h.c[1] = l.c[1] + dg * (15.0f / 16.0f); - - l.c[0] = l.c[0] + dr * (1.0f / 16.0f); - l.c[1] = l.c[1] + dg * (1.0f / 16.0f); - - float d = (float)(max_chan_val - min_chan_val); - float fmin_chan_val = min_chan_val + d * (1.0f / 16.0f); - float fmax_chan_val = min_chan_val + d * (15.0f / 16.0f); - - l.c[2] = fmin_chan_val; - h.c[2] = fmax_chan_val; - } - - precise_round_565_noscale(l, h, lr, lg, lb, hr, hg, hb); - } else if (flags & cEncodeBC1BoundingBox) { - // Algorithm from icbc.h compress_dxt1_fast() - vec3F l, h; - l.c[0] = min_r * (1.0f / 255.0f); - l.c[1] = min_g * (1.0f / 255.0f); - l.c[2] = min_b * (1.0f / 255.0f); - - h.c[0] = max_r * (1.0f / 255.0f); - h.c[1] = max_g * (1.0f / 255.0f); - h.c[2] = max_b * (1.0f / 255.0f); - - const float bias = 8.0f / 255.0f; - float inset_r = (h.c[0] - l.c[0] - bias) * (1.0f / 16.0f); - float inset_g = (h.c[1] - l.c[1] - bias) * (1.0f / 16.0f); - float inset_b = (h.c[2] - l.c[2] - bias) * (1.0f / 16.0f); - - l.c[0] = clampf(l.c[0] + inset_r, 0.0f, 1.0f); - l.c[1] = clampf(l.c[1] + inset_g, 0.0f, 1.0f); - l.c[2] = clampf(l.c[2] + inset_b, 0.0f, 1.0f); - - h.c[0] = clampf(h.c[0] - inset_r, 0.0f, 1.0f); - h.c[1] = clampf(h.c[1] - inset_g, 0.0f, 1.0f); - h.c[2] = clampf(h.c[2] - inset_b, 0.0f, 1.0f); - - int icov_xz = 0, icov_yz = 0; - for (uint32_t i = 0; i < 16; i++) { - int r = (int)pSrc_pixels[i].r - avg_r; - int g = (int)pSrc_pixels[i].g - avg_g; - int b = (int)pSrc_pixels[i].b - avg_b; - icov_xz += r * b; - icov_yz += g * b; - } - - if (icov_xz < 0) std::swap(l.c[0], h.c[0]); - - if (icov_yz < 0) std::swap(l.c[1], h.c[1]); - - precise_round_565(l, h, lr, lg, lb, hr, hg, hb); - } else if (flags & cEncodeBC1BoundingBoxInt) { - // Algorithm from icbc.h compress_dxt1_fast(), but converted to integer. - int inset_r = (max_r - min_r - 8) >> 4; - int inset_g = (max_g - min_g - 8) >> 4; - int inset_b = (max_b - min_b - 8) >> 4; - - min_r += inset_r; - min_g += inset_g; - min_b += inset_b; - if ((uint32_t)(min_r | min_g | min_b) > 255U) { - min_r = clampi(min_r, 0, 255); - min_g = clampi(min_g, 0, 255); - min_b = clampi(min_b, 0, 255); - } - - max_r -= inset_r; - max_g -= inset_g; - max_b -= inset_b; - if ((uint32_t)(max_r | max_g | max_b) > 255U) { - max_r = clampi(max_r, 0, 255); - max_g = clampi(max_g, 0, 255); - max_b = clampi(max_b, 0, 255); - } - - int icov_xz = 0, icov_yz = 0; - for (uint32_t i = 0; i < 16; i++) { - int r = (int)pSrc_pixels[i].r - avg_r; - int g = (int)pSrc_pixels[i].g - avg_g; - int b = (int)pSrc_pixels[i].b - avg_b; - icov_xz += r * b; - icov_yz += g * b; - } - - int x0 = min_r; - int y0 = min_g; - int x1 = max_r; - int y1 = max_g; - - // swap r and g min and max to align principal axis - if (icov_xz < 0) std::swap(x0, x1); - - if (icov_yz < 0) std::swap(y0, y1); - - lr = scale8To5(x0); - lg = scale8To6(y0); - lb = scale8To5(min_b); - - hr = scale8To5(x1); - hg = scale8To6(y1); - hb = scale8To5(max_b); - } else { - // Select 2 colors along the principle axis. (There must be a faster/simpler way.) - uint32_t low_c = 0, high_c = 0; - - int icov[6] = {0, 0, 0, 0, 0, 0}; - for (uint32_t i = 0; i < 16; i++) { - int r = (int)pSrc_pixels[i].r - avg_r; - int g = (int)pSrc_pixels[i].g - avg_g; - int b = (int)pSrc_pixels[i].b - avg_b; - icov[0] += r * r; //0, 0, 0 - icov[1] += r * g; //1, 0, 1 - icov[2] += r * b; //2, 0, 2 - icov[3] += g * g; //3, 1, 1 - icov[4] += g * b; //4, 1, 2 - icov[5] += b * b; //5, 2, 2 - } - - int saxis_r = 306, saxis_g = 601, saxis_b = 117; - - float xr = (float)(max_r - min_r); - float xg = (float)(max_g - min_g); - float xb = (float)(max_b - min_b); - - if (icov[2] < 0) xr = -xr; - - if (icov[4] < 0) xg = -xg; - - float cov[6]; - for (uint32_t i = 0; i < 6; i++) cov[i] = (float)(icov[i]) * (1.0f / 255.0f); - - const uint32_t total_power_iters = (flags & cEncodeBC1Use6PowerIters) ? 6 : 4; - for (uint32_t power_iter = 0; power_iter < total_power_iters; power_iter++) { - float r = xr * cov[0] + xg * cov[1] + xb * cov[2]; - float g = xr * cov[1] + xg * cov[3] + xb * cov[4]; - float b = xr * cov[2] + xg * cov[4] + xb * cov[5]; - xr = r; - xg = g; - xb = b; - } - - float k = maximum(fabsf(xr), fabsf(xg), fabsf(xb)); - if (k >= 2) { - float m = 2048.0f / k; - saxis_r = (int)(xr * m); - saxis_g = (int)(xg * m); - saxis_b = (int)(xb * m); - } - - int low_dot = INT_MAX, high_dot = INT_MIN; - - saxis_r = (int)((uint32_t)saxis_r << 4U); - saxis_g = (int)((uint32_t)saxis_g << 4U); - saxis_b = (int)((uint32_t)saxis_b << 4U); - - for (uint32_t i = 0; i < 16; i += 4) { - int dot0 = ((pSrc_pixels[i].r * saxis_r + pSrc_pixels[i].g * saxis_g + pSrc_pixels[i].b * saxis_b) & ~0xF) + i; - int dot1 = ((pSrc_pixels[i + 1].r * saxis_r + pSrc_pixels[i + 1].g * saxis_g + pSrc_pixels[i + 1].b * saxis_b) & ~0xF) + i + 1; - int dot2 = ((pSrc_pixels[i + 2].r * saxis_r + pSrc_pixels[i + 2].g * saxis_g + pSrc_pixels[i + 2].b * saxis_b) & ~0xF) + i + 2; - int dot3 = ((pSrc_pixels[i + 3].r * saxis_r + pSrc_pixels[i + 3].g * saxis_g + pSrc_pixels[i + 3].b * saxis_b) & ~0xF) + i + 3; - - int min_d01 = std::min(dot0, dot1); - int max_d01 = std::max(dot0, dot1); - - int min_d23 = std::min(dot2, dot3); - int max_d23 = std::max(dot2, dot3); - - int min_d = std::min(min_d01, min_d23); - int max_d = std::max(max_d01, max_d23); - - low_dot = std::min(low_dot, min_d); - high_dot = std::max(high_dot, max_d); - } - low_c = low_dot & 15; - high_c = high_dot & 15; - - lr = scale8To5(pSrc_pixels[low_c].r); - lg = scale8To6(pSrc_pixels[low_c].g); - lb = scale8To5(pSrc_pixels[low_c].b); - - hr = scale8To5(pSrc_pixels[high_c].r); - hg = scale8To6(pSrc_pixels[high_c].g); - hb = scale8To5(pSrc_pixels[high_c].b); - } -} - -static const int8_t s_adjacent_voxels[16][4] = { - {1, 0, 0, 3}, // 0 - {0, 1, 0, 4}, // 1 - {0, 0, 1, 5}, // 2 - {-1, 0, 0, 0}, // 3 - {0, -1, 0, 1}, // 4 - {0, 0, -1, 2}, // 5 - {1, 1, 0, 9}, // 6 - {1, 0, 1, 10}, // 7 - {0, 1, 1, 11}, // 8 - {-1, -1, 0, 6}, // 9 - {-1, 0, -1, 7}, // 10 - {0, -1, -1, 8}, // 11 - {-1, 1, 0, 13}, // 12 - {1, -1, 0, 12}, // 13 - {0, -1, 1, 15}, // 14 - {0, 1, -1, 14}, // 15 -}; - -// From icbc's high quality mode. -static inline void encode_bc1_endpoint_search(const Color *pSrc_pixels, bool any_black_pixels, uint32_t flags, bc1_encode_results &results, - uint32_t cur_err) { - int &lr = results.lr, &lg = results.lg, &lb = results.lb, &hr = results.hr, &hg = results.hg, &hb = results.hb; - uint8_t *sels = results.sels; - - int prev_improvement_index = 0, forbidden_direction = -1; - - const int endpoint_search_rounds = (flags & cEncodeBC1EndpointSearchRoundsMask) >> cEncodeBC1EndpointSearchRoundsShift; - for (int i = 0; i < endpoint_search_rounds; i++) { - assert(s_adjacent_voxels[s_adjacent_voxels[i & 15][3]][3] == (i & 15)); - - if (forbidden_direction == (i & 31)) continue; - - const int8_t delta[3] = {s_adjacent_voxels[i & 15][0], s_adjacent_voxels[i & 15][1], s_adjacent_voxels[i & 15][2]}; - - int trial_lr = lr, trial_lg = lg, trial_lb = lb, trial_hr = hr, trial_hg = hg, trial_hb = hb; - - if ((i >> 4) & 1) { - trial_lr = clampi(trial_lr + delta[0], 0, 31); - trial_lg = clampi(trial_lg + delta[1], 0, 63); - trial_lb = clampi(trial_lb + delta[2], 0, 31); - } else { - trial_hr = clampi(trial_hr + delta[0], 0, 31); - trial_hg = clampi(trial_hg + delta[1], 0, 63); - trial_hb = clampi(trial_hb + delta[2], 0, 31); - } - - uint8_t trial_sels[16]; - - uint32_t trial_err; - if (results.m_3color) { - trial_err = bc1_find_sels3_fullerr(((any_black_pixels) && ((flags & cEncodeBC1Use3ColorBlocksForBlackPixels) != 0)), pSrc_pixels, trial_lr, - trial_lg, trial_lb, trial_hr, trial_hg, trial_hb, trial_sels, cur_err); - } else { - trial_err = bc1_find_sels4(flags, pSrc_pixels, trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb, trial_sels, cur_err); - } - - if (trial_err < cur_err) { - cur_err = trial_err; - - forbidden_direction = s_adjacent_voxels[i & 15][3] | (i & 16); - - lr = trial_lr, lg = trial_lg, lb = trial_lb, hr = trial_hr, hg = trial_hg, hb = trial_hb; - - memcpy(sels, trial_sels, 16); - - prev_improvement_index = i; - } - - if (i - prev_improvement_index > 32) break; - } -} - -void encode_bc1(void *pDst, const uint8_t *pPixels, uint32_t flags, uint32_t total_orderings_to_try, uint32_t total_orderings_to_try3) { - assert(g_initialized); - - const Color *pSrc_pixels = (const Color *)pPixels; - BC1Block *pDst_block = static_cast(pDst); - - int avg_r, avg_g, avg_b, min_r, min_g, min_b, max_r, max_g, max_b; - - const uint32_t fr = pSrc_pixels[0].r, fg = pSrc_pixels[0].g, fb = pSrc_pixels[0].b; - - uint32_t j; - for (j = 15; j >= 1; --j) - if ((pSrc_pixels[j].r != fr) || (pSrc_pixels[j].g != fg) || (pSrc_pixels[j].b != fb)) break; - - if (j == 0) { - encode_bc1_solid_block(pDst, fr, fg, fb, (flags & (cEncodeBC1Use3ColorBlocks | cEncodeBC1Use3ColorBlocksForBlackPixels)) != 0); - return; - } - - int total_r = fr, total_g = fg, total_b = fb; - - max_r = fr, max_g = fg, max_b = fb; - min_r = fr, min_g = fg, min_b = fb; - - uint32_t grayscale_flag = (fr == fg) && (fr == fb); - uint32_t any_black_pixels = (fr | fg | fb) < 4; - - for (uint32_t i = 1; i < 16; i++) { - const int r = pSrc_pixels[i].r, g = pSrc_pixels[i].g, b = pSrc_pixels[i].b; - - grayscale_flag &= ((r == g) && (r == b)); - any_black_pixels |= ((r | g | b) < 4); - - max_r = std::max(max_r, r); - max_g = std::max(max_g, g); - max_b = std::max(max_b, b); - min_r = std::min(min_r, r); - min_g = std::min(min_g, g); - min_b = std::min(min_b, b); - total_r += r; - total_g += g; - total_b += b; - } - - avg_r = (total_r + 8) >> 4, avg_g = (total_g + 8) >> 4, avg_b = (total_b + 8) >> 4; - - bc1_encode_results results; - results.m_3color = false; - - uint8_t *sels = results.sels; - int &lr = results.lr, &lg = results.lg, &lb = results.lb, &hr = results.hr, &hg = results.hg, &hb = results.hb; - int orig_lr = 0, orig_lg = 0, orig_lb = 0, orig_hr = 0, orig_hg = 0, orig_hb = 0; - - lr = 0, lg = 0, lb = 0, hr = 0, hg = 0, hb = 0; - - const bool needs_block_error = - ((flags & (cEncodeBC1UseLikelyTotalOrderings | cEncodeBC1Use3ColorBlocks | cEncodeBC1UseFullMSEEval | cEncodeBC1EndpointSearchRoundsMask)) != 0) || - (any_black_pixels && ((flags & cEncodeBC1Use3ColorBlocksForBlackPixels) != 0)); - - uint32_t cur_err = UINT32_MAX; - - if (!needs_block_error) { - assert((flags & cEncodeBC1TryAllInitialEndponts) == 0); - - encode_bc1_pick_initial(pSrc_pixels, flags, grayscale_flag != 0, min_r, min_g, min_b, max_r, max_g, max_b, avg_r, avg_g, avg_b, total_r, total_g, - total_b, lr, lg, lb, hr, hg, hb); - - orig_lr = lr, orig_lg = lg, orig_lb = lb, orig_hr = hr, orig_hg = hg, orig_hb = hb; - - bc1_find_sels4_noerr(pSrc_pixels, lr, lg, lb, hr, hg, hb, sels); - - const uint32_t total_ls_passes = flags & cEncodeBC1TwoLeastSquaresPasses ? 2 : 1; - for (uint32_t ls_pass = 0; ls_pass < total_ls_passes; ls_pass++) { - int trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb; - - vec3F xl, xh; - if (!compute_least_squares_endpoints4_rgb(pSrc_pixels, sels, &xl, &xh, total_r, total_g, total_b)) { - // All selectors equal - treat it as a solid block which should always be equal or better. - trial_lr = g_bc1_match5_equals_1[avg_r].m_hi; - trial_lg = g_bc1_match6_equals_1[avg_g].m_hi; - trial_lb = g_bc1_match5_equals_1[avg_b].m_hi; - - trial_hr = g_bc1_match5_equals_1[avg_r].m_lo; - trial_hg = g_bc1_match6_equals_1[avg_g].m_lo; - trial_hb = g_bc1_match5_equals_1[avg_b].m_lo; - - // In high/higher quality mode, let it try again in case the optimal tables have caused the sels to diverge. - } else { - precise_round_565(xl, xh, trial_hr, trial_hg, trial_hb, trial_lr, trial_lg, trial_lb); - } - - if ((lr == trial_lr) && (lg == trial_lg) && (lb == trial_lb) && (hr == trial_hr) && (hg == trial_hg) && (hb == trial_hb)) break; - - bc1_find_sels4_noerr(pSrc_pixels, trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb, sels); - - lr = trial_lr; - lg = trial_lg; - lb = trial_lb; - hr = trial_hr; - hg = trial_hg; - hb = trial_hb; - - } // ls_pass - } else { - // calculate block error from naïve approach - const uint32_t total_rounds = (flags & cEncodeBC1TryAllInitialEndponts) ? 2 : 1; - for (uint32_t round = 0; round < total_rounds; round++) { - uint32_t modified_flags = flags; - if (round == 1) { - modified_flags &= ~(cEncodeBC1Use2DLS | cEncodeBC1BoundingBox); - modified_flags |= cEncodeBC1BoundingBox; - } - - int round_lr, round_lg, round_lb, round_hr, round_hg, round_hb; - uint8_t round_sels[16]; - - encode_bc1_pick_initial(pSrc_pixels, modified_flags, grayscale_flag != 0, min_r, min_g, min_b, max_r, max_g, max_b, avg_r, avg_g, avg_b, total_r, - total_g, total_b, round_lr, round_lg, round_lb, round_hr, round_hg, round_hb); - - int orig_round_lr = round_lr, orig_round_lg = round_lg, orig_round_lb = round_lb, orig_round_hr = round_hr, orig_round_hg = round_hg, - orig_round_hb = round_hb; - - uint32_t round_err = bc1_find_sels4(flags, pSrc_pixels, round_lr, round_lg, round_lb, round_hr, round_hg, round_hb, round_sels, UINT32_MAX); - - const uint32_t total_ls_passes = flags & cEncodeBC1TwoLeastSquaresPasses ? 2 : 1; - for (uint32_t ls_pass = 0; ls_pass < total_ls_passes; ls_pass++) { - int trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb; - - vec3F xl, xh; - if (!compute_least_squares_endpoints4_rgb(pSrc_pixels, round_sels, &xl, &xh, total_r, total_g, total_b)) { - // All selectors equal - treat it as a solid block which should always be equal or better. - trial_lr = g_bc1_match5_equals_1[avg_r].m_hi; - trial_lg = g_bc1_match6_equals_1[avg_g].m_hi; - trial_lb = g_bc1_match5_equals_1[avg_b].m_hi; - - trial_hr = g_bc1_match5_equals_1[avg_r].m_lo; - trial_hg = g_bc1_match6_equals_1[avg_g].m_lo; - trial_hb = g_bc1_match5_equals_1[avg_b].m_lo; - - // In high/higher quality mode, let it try again in case the optimal tables have caused the sels to diverge. - } else { - precise_round_565(xl, xh, trial_hr, trial_hg, trial_hb, trial_lr, trial_lg, trial_lb); - } - - if ((round_lr == trial_lr) && (round_lg == trial_lg) && (round_lb == trial_lb) && (round_hr == trial_hr) && (round_hg == trial_hg) && - (round_hb == trial_hb)) - break; - - uint8_t trial_sels[16]; - uint32_t trial_err = bc1_find_sels4(flags, pSrc_pixels, trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb, trial_sels, round_err); - - if (trial_err < round_err) { - round_lr = trial_lr; - round_lg = trial_lg; - round_lb = trial_lb; - - round_hr = trial_hr; - round_hg = trial_hg; - round_hb = trial_hb; - - round_err = trial_err; - memcpy(round_sels, trial_sels, 16); - } else - break; - - } // ls_pass - - if (round_err <= cur_err) { - cur_err = round_err; - - lr = round_lr; - lg = round_lg; - lb = round_lb; - hr = round_hr; - hg = round_hg; - hb = round_hb; - - orig_lr = orig_round_lr; - orig_lg = orig_round_lg; - orig_lb = orig_round_lb; - orig_hr = orig_round_hr; - orig_hg = orig_round_hg; - orig_hb = orig_round_hb; - - memcpy(sels, round_sels, 16); - } - - } // round - } - - if ((cur_err) && (flags & cEncodeBC1UseLikelyTotalOrderings)) { - assert(needs_block_error); - - const uint32_t total_iters = (flags & cEncodeBC1Iterative) ? 2 : 1; - for (uint32_t iter_index = 0; iter_index < total_iters; iter_index++) { - const uint32_t orig_err = cur_err; - - hist4 h; - for (uint32_t i = 0; i < 16; i++) { - assert(sels[i] < 4); - h.m_hist[sels[i]]++; - } - - const uint32_t orig_total_order_index = h.lookup_total_ordering_index(); - - int r0, g0, b0, r3, g3, b3; - r0 = (lr << 3) | (lr >> 2); - g0 = (lg << 2) | (lg >> 4); - b0 = (lb << 3) | (lb >> 2); - r3 = (hr << 3) | (hr >> 2); - g3 = (hg << 2) | (hg >> 4); - b3 = (hb << 3) | (hb >> 2); - - int ar = r3 - r0, ag = g3 - g0, ab = b3 - b0; - - int dots[16]; - for (uint32_t i = 0; i < 16; i++) { - int r = pSrc_pixels[i].r; - int g = pSrc_pixels[i].g; - int b = pSrc_pixels[i].b; - int d = 0x1000000 + (r * ar + g * ag + b * ab); - assert(d >= 0); - dots[i] = (d << 4) + i; - } - - std::sort(dots, dots + 16); - - uint32_t r_sum[17], g_sum[17], b_sum[17]; - uint32_t r = 0, g = 0, b = 0; - for (uint32_t i = 0; i < 16; i++) { - const uint32_t p = dots[i] & 15; - - r_sum[i] = r; - g_sum[i] = g; - b_sum[i] = b; - - r += pSrc_pixels[p].r; - g += pSrc_pixels[p].g; - b += pSrc_pixels[p].b; - } - - r_sum[16] = total_r; - g_sum[16] = total_g; - b_sum[16] = total_b; - - const uint32_t q_total = - (flags & cEncodeBC1Exhaustive) ? NUM_UNIQUE_TOTAL_ORDERINGS4 : clampi(total_orderings_to_try, MIN_TOTAL_ORDERINGS, MAX_TOTAL_ORDERINGS4); - for (uint32_t q = 0; q < q_total; q++) { - const uint32_t s = (flags & cEncodeBC1Exhaustive) ? q : g_best_total_orderings4[orig_total_order_index][q]; - - int trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb; - - vec3F xl, xh; - - if ((s == TOTAL_ORDER_4_0_16) || (s == TOTAL_ORDER_4_1_16) || (s == TOTAL_ORDER_4_2_16) || (s == TOTAL_ORDER_4_3_16)) { - trial_lr = g_bc1_match5_equals_1[avg_r].m_hi; - trial_lg = g_bc1_match6_equals_1[avg_g].m_hi; - trial_lb = g_bc1_match5_equals_1[avg_b].m_hi; - - trial_hr = g_bc1_match5_equals_1[avg_r].m_lo; - trial_hg = g_bc1_match6_equals_1[avg_g].m_lo; - trial_hb = g_bc1_match5_equals_1[avg_b].m_lo; - } else { - compute_least_squares_endpoints4_rgb(&xl, &xh, total_r, total_g, total_b, g_selector_factors4[s][0], g_selector_factors4[s][1], - g_selector_factors4[s][2], s, r_sum, g_sum, b_sum); - - precise_round_565(xl, xh, trial_hr, trial_hg, trial_hb, trial_lr, trial_lg, trial_lb); - } - - uint8_t trial_sels[16]; - - uint32_t trial_err = bc1_find_sels4(flags, pSrc_pixels, trial_lr, trial_lg, trial_lb, trial_hr, trial_hg, trial_hb, trial_sels, cur_err); - - if (trial_err < cur_err) { - cur_err = trial_err; - - lr = trial_lr; - lg = trial_lg; - lb = trial_lb; - - hr = trial_hr; - hg = trial_hg; - hb = trial_hb; - - memcpy(sels, trial_sels, 16); - } - - } // s - - if ((!cur_err) || (cur_err == orig_err)) break; - - } // iter_index - } - - if (((flags & (cEncodeBC1Use3ColorBlocks | cEncodeBC1Use3ColorBlocksForBlackPixels)) != 0) && (cur_err)) { - if (flags & cEncodeBC1Use3ColorBlocks) { - assert(needs_block_error); - try_3color_block(pSrc_pixels, flags, cur_err, avg_r, avg_g, avg_b, orig_lr, orig_lg, orig_lb, orig_hr, orig_hg, orig_hb, total_r, total_g, total_b, - total_orderings_to_try3, results); - } - - if ((any_black_pixels) && ((flags & cEncodeBC1Use3ColorBlocksForBlackPixels) != 0)) { - assert(needs_block_error); - try_3color_block_useblack(pSrc_pixels, flags, cur_err, results); - } - } - - if ((flags & cEncodeBC1EndpointSearchRoundsMask) && (cur_err)) { - assert(needs_block_error); - - encode_bc1_endpoint_search(pSrc_pixels, any_black_pixels != 0, flags, results, cur_err); - } - - if (results.m_3color) - bc1_encode3(pDst_block, results.lr, results.lg, results.lb, results.hr, results.hg, results.hb, results.sels); - else - bc1_encode4(pDst_block, results.lr, results.lg, results.lb, results.hr, results.hg, results.hb, results.sels); -} - -// BC3-5 -void encode_bc4(void *pDst, const uint8_t *pPixels, uint32_t stride) { - assert(g_initialized); - - uint32_t min0_v, max0_v, min1_v, max1_v, min2_v, max2_v, min3_v, max3_v; - - { - min0_v = max0_v = pPixels[0 * stride]; - min1_v = max1_v = pPixels[1 * stride]; - min2_v = max2_v = pPixels[2 * stride]; - min3_v = max3_v = pPixels[3 * stride]; - } - - { - uint32_t v0 = pPixels[4 * stride]; - min0_v = std::min(min0_v, v0); - max0_v = std::max(max0_v, v0); - uint32_t v1 = pPixels[5 * stride]; - min1_v = std::min(min1_v, v1); - max1_v = std::max(max1_v, v1); - uint32_t v2 = pPixels[6 * stride]; - min2_v = std::min(min2_v, v2); - max2_v = std::max(max2_v, v2); - uint32_t v3 = pPixels[7 * stride]; - min3_v = std::min(min3_v, v3); - max3_v = std::max(max3_v, v3); - } - - { - uint32_t v0 = pPixels[8 * stride]; - min0_v = std::min(min0_v, v0); - max0_v = std::max(max0_v, v0); - uint32_t v1 = pPixels[9 * stride]; - min1_v = std::min(min1_v, v1); - max1_v = std::max(max1_v, v1); - uint32_t v2 = pPixels[10 * stride]; - min2_v = std::min(min2_v, v2); - max2_v = std::max(max2_v, v2); - uint32_t v3 = pPixels[11 * stride]; - min3_v = std::min(min3_v, v3); - max3_v = std::max(max3_v, v3); - } - - { - uint32_t v0 = pPixels[12 * stride]; - min0_v = std::min(min0_v, v0); - max0_v = std::max(max0_v, v0); - uint32_t v1 = pPixels[13 * stride]; - min1_v = std::min(min1_v, v1); - max1_v = std::max(max1_v, v1); - uint32_t v2 = pPixels[14 * stride]; - min2_v = std::min(min2_v, v2); - max2_v = std::max(max2_v, v2); - uint32_t v3 = pPixels[15 * stride]; - min3_v = std::min(min3_v, v3); - max3_v = std::max(max3_v, v3); - } - - const uint32_t min_v = minimum(min0_v, min1_v, min2_v, min3_v); - const uint32_t max_v = maximum(max0_v, max1_v, max2_v, max3_v); - - uint8_t *pDst_bytes = static_cast(pDst); - pDst_bytes[0] = (uint8_t)max_v; - pDst_bytes[1] = (uint8_t)min_v; - - if (max_v == min_v) { - memset(pDst_bytes + 2, 0, 6); - return; - } - - const uint32_t delta = max_v - min_v; - - // min_v is now 0. Compute thresholds between values by scaling max_v. It's x14 because we're adding two x7 scale factors. - const int t0 = delta * 13; - const int t1 = delta * 11; - const int t2 = delta * 9; - const int t3 = delta * 7; - const int t4 = delta * 5; - const int t5 = delta * 3; - const int t6 = delta * 1; - - // BC4 floors in its divisions, which we compensate for with the 4 bias. - // This function is optimal for all possible inputs (i.e. it outputs the same results as checking all 8 values and choosing the closest one). - const int bias = 4 - min_v * 14; - - static const uint32_t s_tran0[8] = {1U, 7U, 6U, 5U, 4U, 3U, 2U, 0U}; - static const uint32_t s_tran1[8] = {1U << 3U, 7U << 3U, 6U << 3U, 5U << 3U, 4U << 3U, 3U << 3U, 2U << 3U, 0U << 3U}; - static const uint32_t s_tran2[8] = {1U << 6U, 7U << 6U, 6U << 6U, 5U << 6U, 4U << 6U, 3U << 6U, 2U << 6U, 0U << 6U}; - static const uint32_t s_tran3[8] = {1U << 9U, 7U << 9U, 6U << 9U, 5U << 9U, 4U << 9U, 3U << 9U, 2U << 9U, 0U << 9U}; - - uint64_t a0, a1, a2, a3; - { - const int v0 = pPixels[0 * stride] * 14 + bias; - const int v1 = pPixels[1 * stride] * 14 + bias; - const int v2 = pPixels[2 * stride] * 14 + bias; - const int v3 = pPixels[3 * stride] * 14 + bias; - a0 = s_tran0[(v0 >= t0) + (v0 >= t1) + (v0 >= t2) + (v0 >= t3) + (v0 >= t4) + (v0 >= t5) + (v0 >= t6)]; - a1 = s_tran1[(v1 >= t0) + (v1 >= t1) + (v1 >= t2) + (v1 >= t3) + (v1 >= t4) + (v1 >= t5) + (v1 >= t6)]; - a2 = s_tran2[(v2 >= t0) + (v2 >= t1) + (v2 >= t2) + (v2 >= t3) + (v2 >= t4) + (v2 >= t5) + (v2 >= t6)]; - a3 = s_tran3[(v3 >= t0) + (v3 >= t1) + (v3 >= t2) + (v3 >= t3) + (v3 >= t4) + (v3 >= t5) + (v3 >= t6)]; - } - - { - const int v0 = pPixels[4 * stride] * 14 + bias; - const int v1 = pPixels[5 * stride] * 14 + bias; - const int v2 = pPixels[6 * stride] * 14 + bias; - const int v3 = pPixels[7 * stride] * 14 + bias; - a0 |= (uint64_t)(s_tran0[(v0 >= t0) + (v0 >= t1) + (v0 >= t2) + (v0 >= t3) + (v0 >= t4) + (v0 >= t5) + (v0 >= t6)] << 12U); - a1 |= (uint64_t)(s_tran1[(v1 >= t0) + (v1 >= t1) + (v1 >= t2) + (v1 >= t3) + (v1 >= t4) + (v1 >= t5) + (v1 >= t6)] << 12U); - a2 |= (uint64_t)(s_tran2[(v2 >= t0) + (v2 >= t1) + (v2 >= t2) + (v2 >= t3) + (v2 >= t4) + (v2 >= t5) + (v2 >= t6)] << 12U); - a3 |= (uint64_t)(s_tran3[(v3 >= t0) + (v3 >= t1) + (v3 >= t2) + (v3 >= t3) + (v3 >= t4) + (v3 >= t5) + (v3 >= t6)] << 12U); - } - - { - const int v0 = pPixels[8 * stride] * 14 + bias; - const int v1 = pPixels[9 * stride] * 14 + bias; - const int v2 = pPixels[10 * stride] * 14 + bias; - const int v3 = pPixels[11 * stride] * 14 + bias; - a0 |= (((uint64_t)s_tran0[(v0 >= t0) + (v0 >= t1) + (v0 >= t2) + (v0 >= t3) + (v0 >= t4) + (v0 >= t5) + (v0 >= t6)]) << 24U); - a1 |= (((uint64_t)s_tran1[(v1 >= t0) + (v1 >= t1) + (v1 >= t2) + (v1 >= t3) + (v1 >= t4) + (v1 >= t5) + (v1 >= t6)]) << 24U); - a2 |= (((uint64_t)s_tran2[(v2 >= t0) + (v2 >= t1) + (v2 >= t2) + (v2 >= t3) + (v2 >= t4) + (v2 >= t5) + (v2 >= t6)]) << 24U); - a3 |= (((uint64_t)s_tran3[(v3 >= t0) + (v3 >= t1) + (v3 >= t2) + (v3 >= t3) + (v3 >= t4) + (v3 >= t5) + (v3 >= t6)]) << 24U); - } - - { - const int v0 = pPixels[12 * stride] * 14 + bias; - const int v1 = pPixels[13 * stride] * 14 + bias; - const int v2 = pPixels[14 * stride] * 14 + bias; - const int v3 = pPixels[15 * stride] * 14 + bias; - a0 |= (((uint64_t)s_tran0[(v0 >= t0) + (v0 >= t1) + (v0 >= t2) + (v0 >= t3) + (v0 >= t4) + (v0 >= t5) + (v0 >= t6)]) << 36U); - a1 |= (((uint64_t)s_tran1[(v1 >= t0) + (v1 >= t1) + (v1 >= t2) + (v1 >= t3) + (v1 >= t4) + (v1 >= t5) + (v1 >= t6)]) << 36U); - a2 |= (((uint64_t)s_tran2[(v2 >= t0) + (v2 >= t1) + (v2 >= t2) + (v2 >= t3) + (v2 >= t4) + (v2 >= t5) + (v2 >= t6)]) << 36U); - a3 |= (((uint64_t)s_tran3[(v3 >= t0) + (v3 >= t1) + (v3 >= t2) + (v3 >= t3) + (v3 >= t4) + (v3 >= t5) + (v3 >= t6)]) << 36U); - } - - const uint64_t f = a0 | a1 | a2 | a3; - - // TODO: make this less silly by using the BC4Block class - pDst_bytes[2] = (uint8_t)f; - pDst_bytes[3] = (uint8_t)(f >> 8U); - pDst_bytes[4] = (uint8_t)(f >> 16U); - pDst_bytes[5] = (uint8_t)(f >> 24U); - pDst_bytes[6] = (uint8_t)(f >> 32U); - pDst_bytes[7] = (uint8_t)(f >> 40U); -} - -void encode_bc3(BC3Block *pDst, const uint8_t *pPixels, uint32_t flags, uint32_t total_orderings_to_try) { - assert(g_initialized); - - // 3-color blocks are not allowed with BC3 (on most GPU's). - flags &= ~(cEncodeBC1Use3ColorBlocksForBlackPixels | cEncodeBC1Use3ColorBlocks); - - encode_bc4(&pDst->alpha_block, pPixels + 3, 4); - encode_bc1(&pDst->color_block, pPixels, flags, total_orderings_to_try); -} - -void encode_bc3(uint32_t level, BC3Block *pDst, const uint8_t *pPixels) { - assert(g_initialized); - - encode_bc4(&pDst->alpha_block, pPixels + 3, 4); - encode_bc1(level, &pDst->color_block, pPixels, false, false); -} - -void encode_bc5(BC5Block *pDst, const uint8_t *pPixels, uint32_t chan0, uint32_t chan1, uint32_t stride) { - assert(g_initialized); - - encode_bc4(&pDst->chan0_block, pPixels + chan0, stride); - encode_bc4(&pDst->chan1_block, pPixels + chan1, stride); -} - -// Returns true if the block uses 3 color punchthrough alpha mode. -bool unpack_bc1(const void *pBlock_bits, void *pPixels, bool set_alpha, bc1_approx_mode mode) { - Color *pDst_pixels = static_cast(pPixels); - - static_assert(sizeof(BC1Block) == 8, "sizeof(BC1Block) == 8"); - static_assert(sizeof(BC4Block) == 8, "sizeof(BC4Block) == 8"); - - const BC1Block *pBlock = static_cast(pBlock_bits); - - const uint32_t l = pBlock->GetLowColor(); - const uint32_t h = pBlock->GetHighColor(); - - Color c[4]; - - const int cr0 = (l >> 11) & 31; - const int cg0 = (l >> 5) & 63; - const int cb0 = l & 31; - const int r0 = (cr0 << 3) | (cr0 >> 2); - const int g0 = (cg0 << 2) | (cg0 >> 4); - const int b0 = (cb0 << 3) | (cb0 >> 2); - - const int cr1 = (h >> 11) & 31; - const int cg1 = (h >> 5) & 63; - const int cb1 = h & 31; - const int r1 = (cr1 << 3) | (cr1 >> 2); - const int g1 = (cg1 << 2) | (cg1 >> 4); - const int b1 = (cb1 << 3) | (cb1 >> 2); - - bool used_punchthrough = false; - - if (l > h) { - c[0].SetRGBA(r0, g0, b0, 255); - c[1].SetRGBA(r1, g1, b1, 255); - switch (mode) { - case bc1_approx_mode::cBC1Ideal: - c[2].SetRGBA((r0 * 2 + r1) / 3, (g0 * 2 + g1) / 3, (b0 * 2 + b1) / 3, 255); - c[3].SetRGBA((r1 * 2 + r0) / 3, (g1 * 2 + g0) / 3, (b1 * 2 + b0) / 3, 255); - break; - case bc1_approx_mode::cBC1IdealRound4: - c[2].SetRGBA((r0 * 2 + r1 + 1) / 3, (g0 * 2 + g1 + 1) / 3, (b0 * 2 + b1 + 1) / 3, 255); - c[3].SetRGBA((r1 * 2 + r0 + 1) / 3, (g1 * 2 + g0 + 1) / 3, (b1 * 2 + b0 + 1) / 3, 255); - break; - case bc1_approx_mode::cBC1NVidia: - c[2].SetRGBA(interp_5_nv(cr0, cr1), interp_6_nv(g0, g1), interp_5_nv(cb0, cb1), 255); - c[3].SetRGBA(interp_5_nv(cr1, cr0), interp_6_nv(g1, g0), interp_5_nv(cb1, cb0), 255); - break; - case bc1_approx_mode::cBC1AMD: - c[2].SetRGBA(interp_5_6_amd(r0, r1), interp_5_6_amd(g0, g1), interp_5_6_amd(b0, b1), 255); - c[3].SetRGBA(interp_5_6_amd(r1, r0), interp_5_6_amd(g1, g0), interp_5_6_amd(b1, b0), 255); - break; - } - } else { - c[0].SetRGBA(r0, g0, b0, 255); - c[1].SetRGBA(r1, g1, b1, 255); - switch (mode) { - case bc1_approx_mode::cBC1Ideal: - case bc1_approx_mode::cBC1IdealRound4: - c[2].SetRGBA((r0 + r1) / 2, (g0 + g1) / 2, (b0 + b1) / 2, 255); - break; - case bc1_approx_mode::cBC1NVidia: - c[2].SetRGBA(interp_half_5_nv(cr0, cr1), interp_half_6_nv(g0, g1), interp_half_5_nv(cb0, cb1), 255); - break; - case bc1_approx_mode::cBC1AMD: - c[2].SetRGBA(interp_half_5_6_amd(r0, r1), interp_half_5_6_amd(g0, g1), interp_half_5_6_amd(b0, b1), 255); - break; - } - - c[3].SetRGBA(0, 0, 0, 0); - used_punchthrough = true; - } - - if (set_alpha) { - for (uint32_t y = 0; y < 4; y++, pDst_pixels += 4) { - pDst_pixels[0] = c[pBlock->GetSelector(0, y)]; - pDst_pixels[1] = c[pBlock->GetSelector(1, y)]; - pDst_pixels[2] = c[pBlock->GetSelector(2, y)]; - pDst_pixels[3] = c[pBlock->GetSelector(3, y)]; - } - } else { - for (uint32_t y = 0; y < 4; y++, pDst_pixels += 4) { - pDst_pixels[0].SetRGBA(c[pBlock->GetSelector(0, y)]); - pDst_pixels[1].SetRGBA(c[pBlock->GetSelector(1, y)]); - pDst_pixels[2].SetRGBA(c[pBlock->GetSelector(2, y)]); - pDst_pixels[3].SetRGBA(c[pBlock->GetSelector(3, y)]); - } - } - - return used_punchthrough; -} - -void unpack_bc4(const void *pBlock_bits, uint8_t *pPixels, uint32_t stride) { - static_assert(sizeof(BC4Block) == 8, "sizeof(BC4Block) == 8"); - - const BC4Block *pBlock = static_cast(pBlock_bits); - - auto sel_values = BC4Block::GetValues(pBlock->GetLowAlpha(), pBlock->GetHighAlpha()); - - const uint64_t selector_bits = pBlock->GetSelectorBits(); - - for (uint32_t y = 0; y < 4; y++, pPixels += (stride * 4U)) { - pPixels[0] = sel_values[pBlock->GetSelector(0, y, selector_bits)]; - pPixels[stride * 1] = sel_values[pBlock->GetSelector(1, y, selector_bits)]; - pPixels[stride * 2] = sel_values[pBlock->GetSelector(2, y, selector_bits)]; - pPixels[stride * 3] = sel_values[pBlock->GetSelector(3, y, selector_bits)]; - } -} - -// Returns false if the block uses 3-color punchthrough alpha mode, which isn't supported on some GPU's for BC3. -bool unpack_bc3(const void *pBlock_bits, void *pPixels, bc1_approx_mode mode) { - Color *pDst_pixels = static_cast(pPixels); - - bool success = true; - - if (unpack_bc1((const uint8_t *)pBlock_bits + sizeof(BC4Block), pDst_pixels, true, mode)) success = false; - - unpack_bc4(pBlock_bits, &pDst_pixels[0].a, sizeof(Color)); - - return success; -} - -// writes RG -void unpack_bc5(const void *pBlock_bits, void *pPixels, uint32_t chan0, uint32_t chan1, uint32_t stride) { - unpack_bc4(pBlock_bits, (uint8_t *)pPixels + chan0, stride); - unpack_bc4((const uint8_t *)pBlock_bits + sizeof(BC4Block), (uint8_t *)pPixels + chan1, stride); -} - -} // namespace rgbcx - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright(c) 2020 Richard Geldreich, Jr. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files(the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions : -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain(www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non - commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain.We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors.We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ \ No newline at end of file diff --git a/src/rgbcx/rgbcx.h b/src/rgbcx/rgbcx.h deleted file mode 100644 index 662f512..0000000 --- a/src/rgbcx/rgbcx.h +++ /dev/null @@ -1,246 +0,0 @@ -// rgbcx.h v1.12 -// High-performance scalar BC1-5 encoders. Public Domain or MIT license (you choose - see below), written by Richard Geldreich 2020 . -// -// Influential references: -// http://sjbrown.co.uk/2006/01/19/dxt-compression-techniques/ -// https://github.com/nothings/stb/blob/master/stb_dxt.h -// https://gist.github.com/castano/c92c7626f288f9e99e158520b14a61cf -// https://github.com/castano/icbc/blob/master/icbc.h -// http://www.humus.name/index.php?page=3D&ID=79 -// -// Instructions: -// -// The library MUST be initialized by calling this function at least once before using any encoder or decoder functions: -// -// void rgbcx::init(bc1_approx_mode mode = cBC1Ideal); -// -// This function manipulates global state, so it is not thread safe. -// You can call it multiple times to change the global BC1 approximation mode. -// Important: BC1/3 textures encoded using non-ideal BC1 approximation modes should only be sampled on parts from that vendor. -// If you encode for AMD, average error on AMD parts will go down, but average error on NVidia parts will go up and vice versa. -// If in doubt, encode in ideal BC1 mode. -// -// Call these functions to encode BC1-5: -// void rgbcx::encode_bc1(uint32_t level, void* pDst, const uint8_t* pPixels, bool allow_3color, bool use_transparent_texels_for_black); -// void rgbcx::encode_bc3(uint32_t level, void* pDst, const uint8_t* pPixels); -// void rgbcx::encode_bc4(void* pDst, const uint8_t* pPixels, uint32_t stride = 4); -// void rgbcx::encode_bc5(void* pDst, const uint8_t* pPixels, uint32_t chan0 = 0, uint32_t chan1 = 1, uint32_t stride = 4); -// -// - level ranges from MIN_LEVEL to MAX_LEVEL. The higher the level, the slower the encoder goes, but the higher the average quality. -// levels [0,4] are fast and compete against stb_dxt (default and HIGHQUAL). The remaining levels compete against squish/NVTT/icbc and icbc HQ. -// If in doubt just use level 10, set allow_3color to true and use_transparent_texels_for_black to false, and adjust as needed. -// -// - pDst is a pointer to the 8-byte (BC1/4) or 16-byte (BC3/5) destination block. -// -// - pPixels is a pointer to the 32-bpp pixels, in either RGBX or RGBA format (R is first in memory). -// Alpha is always ignored by encode_bc1(). -// -// - allow_3color: If true the encoder will use 3-color blocks. This flag is ignored unless level is >= 5 (because lower levels compete against stb_dxt and it -// doesn't support 3-color blocks). Do not enable on BC3-5 textures. 3-color block usage slows down encoding. -// -// - use_transparent_texels_for_black: If true the encoder will use 3-color block transparent black pixels to code very dark or black texels. Your engine/shader -// MUST ignore the sampled alpha value for textures encoded in this mode. This is how NVidia's classic "nvdxt" encoder (used by many original Xbox titles) used -// to work by default on DXT1C textures. It increases average quality substantially (because dark texels/black are very common) and is highly recommended. Do -// not enable on BC3-5 textures. -// -// - stride is the source pixel stride, in bytes. It's typically 4. -// -// - chan0 and chan1 are the source channels. Typically they will be 0 and 1. -// -// All encoding and decoding functions are thread-safe. -// -// To reduce the compiled size of the encoder, set #define RGBCX_USE_SMALLER_TABLES to 1 before including this header. -// -#pragma once - -#include - -#include "BC1/BC1Block.h" -#include "BC3/BC3Block.h" -#include "BC4/BC4Block.h" -#include "BC5/BC5Block.h" -#include "Interpolator.h" - -// By default, the table used to accelerate cluster fit on 4 color blocks uses a 969x128 entry table. -// To reduce the executable size, set RGBCX_USE_SMALLER_TABLES to 1, which selects the smaller 969x32 entry table. -#ifndef RGBCX_USE_SMALLER_TABLES -#define RGBCX_USE_SMALLER_TABLES 0 -#endif - -namespace rgbcx { -enum class bc1_approx_mode { - // The default mode. No rounding for 4-color colors 2,3. My older tools/compressors use this mode. - // This matches the D3D10 docs on BC1. - cBC1Ideal = 0, - - // NVidia GPU mode. - cBC1NVidia = 1, - - // AMD GPU mode. - cBC1AMD = 2, - - // This mode matches AMD Compressonator's output. It rounds 4-color colors 2,3 (not 3-color color 2). - // This matches the D3D9 docs on DXT1. - cBC1IdealRound4 = 3 -}; - -// init() MUST be called once before using the BC1 encoder. -// This function may be called multiple times to change the BC1 approximation mode. -// This function initializes global state, so don't call it while other threads inside the encoder. -// Important: If you encode textures for a specific vendor's GPU's, beware that using that texture data on other GPU's may result in ugly artifacts. -// Encode to cBC1Ideal unless you know the texture data will only be deployed or used on a specific vendor's GPU. -void init(bc1_approx_mode mode = bc1_approx_mode::cBC1Ideal); - -// Optimally encodes a solid color block to BC1 format. -void encode_bc1_solid_block(void *pDst, uint32_t fr, uint32_t fg, uint32_t fb, bool allow_3color); - -// BC1 low-level API encoder flags. You can ignore this if you use the simple level API. -enum { - // Try to improve quality using the most likely total orderings. - // The total_orderings_to_try parameter will then control the number of total orderings to try for 4 color blocks, and the - // total_orderings_to_try3 parameter will control the number of total orderings to try for 3 color blocks (if they are enabled). - cEncodeBC1UseLikelyTotalOrderings = 2, - - // Use 2 least squares pass, instead of one (same as stb_dxt's HIGHQUAL option). - // Recommended if you're enabling cEncodeBC1UseLikelyTotalOrderings. - cEncodeBC1TwoLeastSquaresPasses = 4, - - // cEncodeBC1Use3ColorBlocksForBlackPixels allows the BC1 encoder to use 3-color blocks for blocks containing black or very dark pixels. - // You shader/engine MUST ignore the alpha channel on textures encoded with this flag. - // Average quality goes up substantially for my 100 texture corpus (~.5 dB), so it's worth using if you can. - // Note the BC1 encoder does not actually support transparency in 3-color mode. - // Don't set when encoding to BC3. - cEncodeBC1Use3ColorBlocksForBlackPixels = 8, - - // If cEncodeBC1Use3ColorBlocks is set, the encoder can use 3-color mode for a small but noticeable gain in average quality, but lower perf. - // If you also specify the cEncodeBC1UseLikelyTotalOrderings flag, set the total_orderings_to_try3 paramter to the number of total orderings to try. - // Don't set when encoding to BC3. - cEncodeBC1Use3ColorBlocks = 16, - - // cEncodeBC1Iterative will greatly increase encode time, but is very slightly higher quality. - // Same as squish's iterative cluster fit option. Not really worth the tiny boost in quality, unless you just don't care about perf. at all. - cEncodeBC1Iterative = 32, - - // cEncodeBC1BoundingBox enables a fast all-integer PCA approximation on 4-color blocks. - // At level 0 options (no other flags), this is ~15% faster, and higher *average* quality. - cEncodeBC1BoundingBox = 64, - - // Use a slightly lower quality, but ~30% faster MSE evaluation function for 4-color blocks. - cEncodeBC1UseFasterMSEEval = 128, - - // Examine all colors to compute selectors/MSE (slower than default) - cEncodeBC1UseFullMSEEval = 256, - - // Use 2D least squares+inset+optimal rounding (the method used in Humus's GPU texture encoding demo), instead of PCA. - // Around 18% faster, very slightly lower average quality to better (depends on the content). - cEncodeBC1Use2DLS = 512, - - // Use 6 power iterations vs. 4 for PCA. - cEncodeBC1Use6PowerIters = 2048, - - // Check all total orderings - *very* slow. The encoder is not designed to be used in this way. - cEncodeBC1Exhaustive = 8192, - - // Try 2 different ways of choosing the initial endpoints. - cEncodeBC1TryAllInitialEndponts = 16384, - - // Same as cEncodeBC1BoundingBox, but implemented using integer math (faster, slightly less quality) - cEncodeBC1BoundingBoxInt = 32768, - - // Try refining the final endpoints by examining nearby colors. - cEncodeBC1EndpointSearchRoundsShift = 22, - cEncodeBC1EndpointSearchRoundsMask = 1023U << cEncodeBC1EndpointSearchRoundsShift, -}; - -// DEFAULT_TOTAL_ORDERINGS_TO_TRY is around 3x faster than libsquish at slightly higher average quality. 10-16 is a good range to start to compete against -// libsquish. -const uint32_t DEFAULT_TOTAL_ORDERINGS_TO_TRY = 10; - -const uint32_t DEFAULT_TOTAL_ORDERINGS_TO_TRY3 = 1; - -// Encodes a 4x4 block of RGBX (X=ignored) pixels to BC1 format. -// This is the simplified interface for BC1 encoding, which accepts a level parameter and converts that to the best overall flags. -// The pixels are in RGBA format, where R is first in memory. The BC1 encoder completely ignores the alpha channel (i.e. there is no punchthrough alpha -// support). This is the recommended function to use for BC1 encoding, becuase it configures the encoder for you in the best possible way (on average). Note -// that the 3 color modes won't be used at all until level 5 or higher. No transparency supported, however if you set use_transparent_texels_for_black to true -// the encoder will use transparent selectors on very dark/black texels to reduce MSE. -const uint32_t MIN_LEVEL = 0, MAX_LEVEL = 18; -void encode_bc1(uint32_t level, void *pDst, const uint8_t *pPixels, bool allow_3color, bool use_transparent_texels_for_black); - -// Low-level interface for BC1 encoding. -// Always returns a 4 color block, unless cEncodeBC1Use3ColorBlocksForBlackPixels or cEncodeBC1Use3ColorBlock flags are specified. -// total_orderings_to_try controls the perf. vs. quality tradeoff on 4-color blocks when the cEncodeBC1UseLikelyTotalOrderings flag is used. It must range -// between [MIN_TOTAL_ORDERINGS, MAX_TOTAL_ORDERINGS4]. total_orderings_to_try3 controls the perf. vs. quality tradeoff on 3-color bocks when the -// cEncodeBC1UseLikelyTotalOrderings and the cEncodeBC1Use3ColorBlocks flags are used. Valid range is [0,MAX_TOTAL_ORDERINGS3] (0=disabled). -void encode_bc1(void *pDst, const uint8_t *pPixels, uint32_t flags = 0, uint32_t total_orderings_to_try = DEFAULT_TOTAL_ORDERINGS_TO_TRY, - uint32_t total_orderings_to_try3 = DEFAULT_TOTAL_ORDERINGS_TO_TRY3); - -// Encodes a 4x4 block of RGBA pixels to BC3 format. -// There are two encode_bc3() functions. -// The first is the recommended function, which accepts a level parameter. -// The second is a low-level version that allows fine control over BC1 encoding. -void encode_bc3(uint32_t level, BC3Block *pDst, const uint8_t *pPixels); -void encode_bc3(BC3Block *pDst, const uint8_t *pPixels, uint32_t flags = 0, uint32_t total_orderings_to_try = DEFAULT_TOTAL_ORDERINGS_TO_TRY); - -// Encodes a single channel to BC4. -// stride is the source pixel stride in bytes. -void encode_bc4(void *pDst, const uint8_t *pPixels, uint32_t stride = 4); - -// Encodes two channels to BC5. -// chan0/chan1 control which channels, stride is the source pixel stride in bytes. -void encode_bc5(BC5Block *pDst, const uint8_t *pPixels, uint32_t chan0 = 0, uint32_t chan1 = 1, uint32_t stride = 4); - -// Decompression functions. - -// Returns true if the block uses 3 color punchthrough alpha mode. -bool unpack_bc1(const void *pBlock_bits, void *pPixels, bool set_alpha = true, bc1_approx_mode mode = bc1_approx_mode::cBC1Ideal); - -void unpack_bc4(const void *pBlock_bits, uint8_t *pPixels, uint32_t stride = 4); - -// Returns true if the block uses 3 color punchthrough alpha mode. -bool unpack_bc3(const void *pBlock_bits, void *pPixels, bc1_approx_mode mode = bc1_approx_mode::cBC1Ideal); - -void unpack_bc5(const void *pBlock_bits, void *pPixels, uint32_t chan0 = 0, uint32_t chan1 = 1, uint32_t stride = 4); -} // namespace rgbcx - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright(c) 2020 Richard Geldreich, Jr. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files(the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions : -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain(www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non - commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain.We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors.We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ diff --git a/src/rgbcx/test/RedbrushAlpha.png b/src/rgbcx/test/RedbrushAlpha.png deleted file mode 100644 index ed3649d52c93bd1288597e6d9d3d682c1d675069..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1386275 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 tUv}ic{u~ z4GkCPy<>H1%F>8er5?A6$Tp~A zDl$WX*G9(&<|fja!em}Sk_4dh(79SOwz!pyX|`<|Q!1d6W0D&PSP{qzg;6Ad={#05 z6jUeHSKUVnTKk60)193i=jDed6#6G1Oa^5e?2LE=9bXZ&F*l5#4;?;d(D$EA8CE?b z7&*_|3SzH!i0Ydful56XUg*0quN;DP+e^;gHRZs$bl;c%QWC5 zZK}FeiXsKC>JN_gjeJ6Do&TpOVMn~5K@)KAhp*T(-Hy+_X4Oeyq24v7oiv>u|KqdQ zZy6Y0yX<4vBvx;K`mEQyf$D9m-+SS!TQ=h>5B~gjbLKRl{nXQ~i?6zV!H@p*>w}*> z`#m#)1%IKawD|6j(b7$UE*n8NE4h>Q^8K;v1 zMi==uhR4RSCYZv8cvO*Kv3lE@6EcXLA8yqEOh#thwpwh{>X@3Gtaz1b%ylEp7(22H z2Y~Q=Z6z#9q*BZae4Q`mbzMUfMHB&?(cwdf$@hF%mLdE14}4omb>N?(gsoh@aAzU5tUtKqq|K9h0cq#0zE@GS=wDa8BX1l%$&QdW8Na;h3y;0t~m3Y z#@{{n!sESz+v}Fp*cV*B@~z)`5@+RKgHkmbEq-45P#443)BrQkrvv#gHE_fFX|!KCf610> zuK6GJty}u>`1Ysqqg^lE|HXHnf9XvRKK89OAN=^28*aS`@2Y9KyCt4F_g_zcOIL~| z@aw&swD5}F)t7!KKK6&_MbqM$#%+&2(96`1yN-9QJ7|&>uH%f%EnAor9`3P>3+9Jfz42(wN_ceehQIK zD{AXw5Fyhw22>&C(EO86WcB3`PjA{R3!$e5WF$#4E6z<_r==9&fk(tb8JaObg0Wb% zxPzhz55eH1vMmEjL=40*79*6x2sM_5tvFg02QyXKHIGH#~wG(}omL zPyu~6U##A(HQYMOTG(!wt4!$Fu*OS+mCAEYD*my$j=CEG#48hJCRLS^iHx3{D$7Jo z(y$U1vKdELN}$~F((-(w_IfgH>>&4scV9&f8Srbe*U|t<&B9X?q0r1CH+RM z`qPi9XEk?ybfcJDlQK*keDXW`=2c&N;alIl?Mytq3H_@UV)DK_aof(_PaYp{Y3q0M zlQ(?*wlkYP{T@7d-bFZ`5@<{}V%?#gVnoH&?D~{drx`Z)@6G*Tuy@mnj?SfUOU0s& zR7*D5Trtz;{e1_2a8@Gy-cz%6ZDV1@uDV_koM-(o2y2}LYmO&Knw(X_3X$N*u~3(c zkf=y17lmv*u3)d_OstzcFwuuuk{QazvQI0n(+t}Gx7XP z8!z7b!1`XM_yLn1TV`4x`2O`bPA^Q9uqXn%=Yu>t- zuzuN@SU)tZ5JpIv7FAe;s@7EXLI{Jwm84Z;8kt!g^u+V)#0jx9#kE$WQn4x&?G0SD z&`B^M1Z9{>`&g(<$yicChZ>l)2+b*n;;{q{jZCPx!I)$k<8ciu#UKU(-EKQNGrx_k z-+mwhV?1GVirbcI@--*UF=3G&D_6AAI{((Uo>JeC&cK~0VZfU#fJo@VSOp3Sj7Soco;#zBSG)kjxgz`^RLO>9$Us|46V=Z~ zVYp6)0&fZc;hp2lF)6 zPxh7*RjY8$jkk5+l^1~1=HQXWsXYj^;lymSEnZ8pSPZ%_ zfk7!yQ3B;4fMY^ym{e5(LNZX1p;nU6nMz>pg8B5orcEgNKERkR_>uORrjaO8Gvf(l zwPIz>)QApL9e0eWFwh>9G8pGhU7V7cTHQY|7}ZI#22F*)R3KAmQR2EG>F6|KG!$0B zNb5B}{1V@I-}888{Z`#;O0Be3p-@JQDeoN@EO-2r!trlE4l~bO1P3NU_*nD(wRqq= z56;tCpJ%6HKcG+;cG}U47cHcho_bj{TDIy;rgSTZWj3VfK*`e^hR2B6BwA;;5BBfr z|8P`}o>5vsM)J)8fWbN9w$XAN#h1fmv5%d8_C1&X%l8q^n+EHSr+^qke)E&4HEjI* z%a0B`Tsr)lX^o8^S%f&kLUH8Xvrn8qqpk@>FTjpN+j6@s;c!2!aNCS;>O1@z0#-QZ zZEt(`J3sYh3_bNQHvRtIu~AVCeG!Eh&0jk6m4iK_0V96JTP|pL{)M%LgA*f%J)6yq z878kwrjW86K2gXZr+Y0nLrpJ?}rj8hr1P5wbVAUE#(}>JRg3j zkTMJ{l|sG2z!X6dNzORSkz$8^SK20*sm6M1@8Fo4)?BL_D$lA9qWZE@X(`cWCrJsZdu2%L+>+W=%!3jZuW6}q$9l)F z^((=e*Jm`NHz@*e#$cKT?)>n@;Z@)JrTPAOCm!5Y89vVx%18@1k^@`K28mrD>#{Bdw>@FWh$TTWvik4v$oy z^d~BA#h>h}PCg=e40WUzPj7BHrOC2m2_YhKy^;aKg)^44r3@2)*uS~j)LNSu8Jmz~ z7>qGSyvD%ztVZBK5$)5Puz6qz(P#msd=-+UwieHzd{9E8NMNjg2;)*B@A{}jK02&8 z6rc>!x{fmvL~InmZr{^0IvWwB9ld+YL48~{%M7it&n@dTv#273_MwGI(DkOl+G;a~ zEPHg-<(J^a=hxw^_nd=&yW?jeq%yQ7W)Kk8L0$H<_p{Wz3}T5aAPKFk6H@~Nkhv;S zVLd*1$rq!fggKqr`a^T(lNo62j4Ie$m3d(>Hn3vu@{ZJ1SK{!N zwK(vLU-yjis##;z#HY`h-!WVnhOady-D*&noE&bU3=LJwx%!ONWosnK;>Kv;MdSw@ zmdW<$f|#>nL2R1QgyUz=#74%j^Zq~R+(a1y3dICd^~o$79i1Q}igcuua+%4hN>eKl zs?frhQa3t|QHUZcaA3rS{_3|sMklVg2p26qOExgh67yT=(CDOUsH>;wzz}S1XkwD$ z!a(B4vPz0Mjy|Kag|-e3%Y#8gj#d;IrY4KAmbpz}9T}LZI4A(2pcd|nW5bWSN^MtK^=Oa*jnzu2cQb>>g^~lLu#y<{9itnF zNdC1bkfDF96?_B$U<8vHP|&c6nHkGIu9h2fPl(lh=A)NhlR5dl7j|G#w}Uuv=SMyU z`}Z&Ry!#U$T#(64VC_@Sl+K!QN_vyK2N;^lS7TQE;7ITO#m#fOQ(joHYO?jyR=kz4 zd?|4DsQ?r(I0pR3Pk}hY#!Wp~+qczwH9x+u+j5QzqG+hf!lr5Iq-9T{vZ+q;DzlBp zdUo1iF(3-?!TB?EP9B*FFN%;7+~D)#87gU|4i^i$j&la7Fs?3P;2xlr4DGV0iukMjgYZ0nzGHR^{18g1766?9x&Sl- zi2Xwo#wO=b$40=9Zt|d`git!l57Yn@0d=;6CLOYTw_$ZKEsM zkUrT+FtjyeW;~6@UjEZ4A&$5I@SbL5L&yyqQ2q0E1gp9+a@QKKYvBn_df7sJ?;GC; zeJ#`kab0ALNJd85FfmvoO2!PTN$wGzD6nGKl4!c{oo{FF`^wEIrfP8cqWQWyoY#ZW z7mniQP!xd^lmR8?SV_az5jm3JaE77`VRM5*fV>(9Udqy1Nz|7Fsf>e6M-wJSM&b45 zVSx}C1`bv$$QTBi?HCjz@rwuUG%maHS~MXBGZdJLanuNfI)g!&45`)zfD`KLYSA^l z1B0;u&5dbv&gjPNx7{NS9U31j7pmK2q_--q_6VVRlv0yg>yaZNouHvXMD2#bKW)a1 z53gK0FFkK&H}3xJBiAP^BimS)U7W39Gg@1k(z|z!rZ#Ww1px1eN1^}k27qOn@E-V; zzUFq4F-D2UEb6KrVFSknzS>nL~-S32EX2y!+>N7lvk`-d@i`$e@ z4JlMwOD(AsDk361-5?z@hN=)W&5R+E5}uYi(u(<&80)+{s#W+{L@ zUV)vBV~_Mv%~g;xEVx?YvmgEd{&?T-B!^}Kg2-@Gm4zw-w4K!K3pan1kCi4cdZ>!N z9fLUY(iPBkDLnqWwb=9W-a_chZGOdjBJhKaG7^J;_C=)nlu}@fnE=|9(ph3iN~!7% z)40UobVjn?uDS8Li{i7UccG~@jgj#|Ohi6f+G1Gq>sRsfAHSrI&Z9^G1OLzwP;bY~ zW^SEQ7dKX(Q#0!$=PZ3|%i=k0#_wN!2$$abIOK-C^7d;k7_1(@yk*yG8`h5bxpj#^ zWY0?2=Wx!9VarIYpDNwnnT~zf3QeJ97%)g|4}x1i)IINKRS}6DL%loS!s>atDKUFY zi14@l2X396&b)6XJG;JFmIxrkWTk;g`VVt_EL0~X$tjw5JolVL}Sr)m02<(Pz zEZ)(~awFp!V+B;8pdyKK;G@A#P?{S!9J;C^BpSIz8G|EIKqd0w6Hx&Qc`0<3aorS) zu|kanZCkKx19EUmH&_-`J8IF@+=>m)t=GO#RAa|*-q~khW6xGCQrg#AizCzv71M+m zEYZ%0mME}gvci^VrsGOVaMMuSrl_{XQSq!L;xW#GAoOI!mGD$;SYbxrzF|7*{R+V0 zf9MF{j6*}?$O;!gX~5}gng=Pfwv1sIn;$+{pJdck?Bq}wr)XIjqy|mtO*hEk@2K>k$6yn)&rk-I*YVMZCyJiZrTTE|? zRf9c&hhDIFnUBoXr~NM_R*Iy|bUyg+fwR5fk2JXa}_j)>;WZo|HwKE$nr z{^-^3rWvPnqZpU?$q(+w;od_!U0X|*WoT_cP37D^?aAE}17qtG87o^;mp*aX%DHEK z>l=5XDKQgT%Oea-s-knzbmdJ+8HK_ReW{6QW!T1~Y0;oIsKgXmVL3Wggeo2QA%u|n z4YQ_$Z-&aq|8`%XwFYMlsaOo$;78ZC194!5!Fe(eI%g6k9Z;4e5NEo1ksbTwDUA)& zP1mpF12;}n{uaZEB`;jQ;`nvDwv|>aS(e_|v$g6#p|3RMjSEkVlNs%c_HL|94cGh+lQxF&xKpoJ5?t*2Qk&@FA4j&Q%eUXb!GGQ}9AW2U+9F@pN zTmosBG&hyRQ~4aGq6lq{4OeT7bB$?TO&}ARaRd3Wyi7R`Wu^iWOq0qaG>5>~Z}e`#k%P&3Kc=Gerq58%d`1f1xR>@S77A~Ddf8N-GR5}42Q!s1`78$xc zS&l?Gs#YsOP*ZEAdbYll0BbnbiUY74J=LG%j$78^0Bt~$zqvmij>ZOjUq&d%NbZwT z4sw%^GRFFdD8@kDoY6&*h?=WqpZ>xq;u!to#wOU@fTkmf2m`@1IF!;bI0t78oN#2N zJ8?8S_6?tGo%x+74-ae@C>4GNDAaO$aa%IE@<(6!#+*&hJqmAP3QrwAP_cw(#K8;I zax~zW%&1Kz8uOL%_}tpo&QSSsW1%>>Q;D8BQpZ)R;lZM1rt6c=DR$^4%9*VDNKw)>*_a5?WhGD$J|;w{3W=E3VZ>UvO&l7IZR4O<0h1ht z3}CcmQPW(jLn+})3D*t4f>1h@h`}X5Vnpzq#S@9ybSeWXt6X9Fm`u2{W z{Py0vm8DN!y7c4|URl4{JMq*7&gPBVk!sDLCKHEW4iQY1m1Ws9o~tOY5@=0COO`BR zXPmWywjOv1J+JMHs#78;`=YFcR}cXkS6Yo~O?#A9>lkCBAarrgRyDL{&t7@X3G+@| zaspm@>Q(&i-nIJZK&n1U1JD4<|1bb-%Y;AKqw)JKK>NwS%IQ!{q3;W~;P+4e5upjG zrD6@trjJ~EEs*yyd}s{&4(`O@;RB@ydVB8dw~TczQw4)jvQD$PvrKknM>1Q_wAS^E zJ6Ttaow4BfIm4r)UN)I>6g0Z)+95=MkOWL8iFE^e@ZzDpGDoC_prc78MZ7i>50zpS zFF+86WGR8XkeC!gcgEwC78H}p_z+ZvIQqcUX8u^7vylX|37Kq3(%Z>o%J zLk*mc282+$?D}Y}OH-->8)*R^il2Gu#ckuk-fLJ7C($ymlFPbrM_=0)U10b|Tp zQcrM$PbsBJN~*k4dQeK)2dxLCRHMYGqJat#z&R}@gI#{g1#>P*cGOb91K5m14KY0W zleNbZKlTOyc>h=qU>ML!!8A=Y+sS2M!mu=pnHTB zQO(Rxp4m06#w8#um(f_$g5lA_s#3}q4vviNI1rR7lE;khbVCOrK&v8In@Tqf`fh2u zlg-R*Y-)OCU~gqAsM-}RjQ~QKb}Ah5J;Muibm6k)@tx%&)*jw1heIEsQd2oU$V4Ec z%QE3Af+pZZ%SKsCqCXn5VvF1BvKN}Zk61)gLE6Y27%kk+Y*QqXc6+(tjhduZ zF~u%yZm*f?dJ$zZ4snx{N1;kKW>8hqo#@RSERVYDwA6h>7?o1>DWwX~S^%ghr3HX7 zt#!mXgMtPKEv9LlX{C&--u{6l=S~?B$Tkso4EQocWlw~)|M4>3ko@tZ0I1MEbKaZW z#OX~9Yo5OTyYI*8%YnfvWXuFVcQ)|IMqtNtcxCNcm;o@it`WI%858+}upHaimme?9 zP1UEH;x(wxWWh)SkpxMBDkJ!|!oi7Alq!`l5|LxZF$J4vFNlBVGnR-eqQ4$(w z&z@_a)z$?`HrACUaqE_scScQFR-TxUJP_UcysDjIhMwWXSp$G7w2qXP<09lS&Z!uM zTHAJ5@B>pY#fTAXMrc$V6;04m%eYB0Ni>l%&CLZxul0JBmpCJlV3ch&%oPzg&nrXU z7sa>`(4+B0tbKfJ>QR#$M#?mnSX!<~GV8<;QF~bu_Oa{9+6h~D`7>uO+(x(tJ@O4h}$zW%QFow}|6AbcHwGmcoK;g)@r zCt`T{u2P$IO4b=Vww%k|X7b zsZF`zJ8}jcND}YrFyiO8C1Twv1`bb@BLIoGm6_AlRXZoLv3>vcUE`T#^VY)nKo|z2 z4Q9O6B1MUaYSNBjlf`&KaC2)=9gaddxpLluQ#TD99G&0PUVmy+r}5DCP5Ec4laCw@ z+`F1P8n26dab~qxYI7wFVqC^G@%9*}LZpy1xZYcJRW@OFkl zpandibP7x-Y(vHs`Z?jjs@6t=84GL zUvHQnJO&6bf?*gYpl6an7ZW$GX`Sx0&O3jGnVr{yY$}c^lrVLm1Xb`cu)V7Ko;}0@ zHLbm>*AHGwzn3 znIsHyFr(eJSGF_jyc(!k!=CrZxKityY;)CxQRc*J-?@6}_Jchb^~-8bLo0Km5MxtQ za@cqM$0kO$50&%3`s{H_e|%_kqVEsE!~>a_vji1?xS-^r)_Cm77MQgMtL1}}hIlU9 z)%MY`-Z48}n`ZkbbCChVY&8sul!DR3r3|atV$=n#y5li(?!0u(dA_M->lsVZJN6yW z8#nIJCoY-B-txBdarcjZDY+KZ)SU6k1#eBI6yBH1SDsf&9r0=$HT2QE{f!ZTa}MIv zp|x%!V&@a1_Zqg*skLNA!bGaoQO(EK@XnJODGD^2YMRjZS{|>iSuX=OpeTsMv4$;x z+&^6gG9s9kg^yhPF5R?cyZ7Z!ecRd8zZbXO`t3(%o-pr%SNHeb?IIdo;-o&(JZE0Z z7oYeeF6fx^*g>!O(-X7le>+(vOv4SP7B1_aw=j{0nozLPonUPa_VjGU@AmHLU0a#B zbwp#`EF^w9H*ID&jTdhivE+e&Ib-F9$-%MUxBGUkwjHaz;!9EIn9F7w*6Omrq{n3x zf-Q)()G@OuLnW^Y%P=v#e-NJQ0YXMhkt!%<7DULHL9i?itr-|U5^mjUq-@3~Yc050 z9^WUTP{A;|eWkoO)1dWvTIlDNU3z~IEWZeG%WWtT2uBp65&e*d+#vOH8`ffpPLDH6cme;5F-_y38IvSaPU zn2}_$`a4&DU_(t?0>A#{Lw#Sm`iidP3CnT#m51@_gAb2x@r$LL=kI9s63K6T_~Ykh zZ~q+d!VZ-0x)U3E*Xt!SXHt6E`=BRBaK#t4urgP7i{Y0*R@px^0#b_bXhp9O2aT%r-;DI7AqLIFrPg zk;$aV^<5pf0=eFC^iSp?p~_3(mW_0~%q*{%??V?r2K(UBF{Q6I25sIW~a-VS~Er;3Do3s4G7hb~d{K-A45~+Lp z3#HFVDM#LTzSB|G?-8|62CWr{7`VZ@h^Pxhs|Z*PjcFjV$$&|WwALELkMXuST9>BP zHUEAg8y(02{WebOI0YYk=k?mJcmNOp*bm_0e;5E3=lJ%#1%9?jxyBi@+G@M%(S7nV z?0fLHxW8}DM9dXarz|*O_Tim74i;^lNIJEt2H&e(ebvXCe({|fpS|FW)o)opwliAU zKHap^Nvzqi)vtJ7WyA2`CZ4d`=GWG=Piv^jw$;?ZRB2rM!V?!pO!#%_;$gv5Y{-Ibw=S{;AJ= zV#)6we@brMyhmF$XF(t*q45+q6fVE|()T}p?_)X*MmFd8%ojd}>u&n~-M$~*tdtzY z(Qtp%fOuVFxo68xWIP zAE+=@NfFhznu!&!j11oPi_hPPM}K|qW5>m;1)n(W?Va^W2Y3AbfsK+ByZn+%PApAM zAU`yU`mQ#FWr4x5KJ4l1+cgpRpqi~s@v1*QeUX7 zr=>n3bp?uX0}YNf6-d2q#I3$v9F=xsjG47fsSkbjh7aDU0t?^#`VWPSlu}BKamIch zH_c}f7RR+$U-U@XbFsIl54-mqL@`p8g6n=yD)kE}J(#epmQbq^&kv4h0Wo?*Bw&EX z0>k91!Eg~k9h@=SNEz0-*Pm?9UNi&NR>I@YZ_$(9q_zRD8jhAljV#k{qNTADjvze$ z@NVpVYEQK~Rh23Y!wV6LfkaWY|J^n#ZIld z^#fOZ=j0!J6Te!xEZ9+SE*AP;S`w#-tP?QrZxES$+jVcHWwYIg`S7K?RzNV{efO|^$RxJKR z?}6S=XTg)Lw*B2)B({!3{@0FgX*yKNm#61tq>~`c36W1qIkp|BNWPp4#hQRra>ElRvpeWDTRu(-btMO3YJwURNajUPVH&ayt=)+W%Xyi`XTeccm+3o{*FQhD+kNP`_$2ha_s#blY?U>Kd-hmeckf+obs;Pt~j3l$!jv-J1O7usk5x+ z_iw3IO_}VT4pgJW-2*UA;Ja`I-3bT~A=k(>wA(Ib0jK{>?I!Ti+B) z*k7&$7?l3cFJmwUi#S@zSaQ?SGdIj@o2GAm;=#}Ci^Pw{xrzb+L?N1Zdeu@p@tw<# zTe##MAGit^f9fN@%SpX1Yhp<%<{TG=Vq!vwR|cZ!(V~h*rItc71}XFyCu-74Nkx>? z1XF0`CYaHYWUQ{yGFCanR!OB+aA?O@jd+}G;me6jpc1COm%B1-NGyw4V+@THEn zrtfAe{^z4mP*p=^IRk^DR3f4GxNLjG{tz?tx94|vqdzF1tGyPNpMC*;^_!>Rni7+RLHJP! zr!9{1unQXwp8MmvK_2AeU&iM6zv&PfZhb>A*(abSCX z@=HZ6_Ebd#1|VjdFt`DWI9d$0a)F(?HSHu@UK|^_Vw}sqMl!mSN;V(Y-1LJ*>4uuk zhkLhpzP~rac^5Mb$K-}Jq)IX%6&E+8MVahC&b(AYc;eitt%^DPw<(8NP3#wJ^X)WsOQamcUR23nW zq*h95beT2;XL5H~9hOp!COBW0V5ZL*n;mFX>p?$L7SS3~7|IaMoN1b?7bjEK&Wxqg zJIlrJDYx*^;UIh{65_A+RKTeFxJ5G`y!sOt9>0CxK|J!ni@u*LTjyVN8tXi68dSs~ z>Rl{oUxd0Si=RLIdkE=a#>{SP*u0@)wK@ry0rhVv%ZXhRMG?w-B0v19j70HGVFmxC zr@kgVw}D#=;+oa>SBg(~LiI(Yp#elv9u*Ki0+vQAZZ2tReSg-_UkyW5>?us%Ff76z zu89cX3R*yGw8mmfx}D_5ttdoXsoK*L_4P&HEq6M#nRlGJs%^A9hMU$s75WfDXuYfK zM=!uK>m~FVIk(bpbF+^uI}0h^5h=CaXZkBy)0%5)9do4|gl%L4sYGom{V`t#O9MC5 zRV73gU_%BZ4>i>j*EWG8#V5}( zK6uS)4CZsNEDJ;KB&NZEoy_9pO`D*7jrJMM=pPwIqBDt+{Vra8aGfVSxlt+krN|Fo z`fJ|*rsn{R*wOMuzkcydAlL@S+w0pd|K=&D-!d*4KJ(`%mL3dB1II$22BE>U7SuE2 z22R*RQj1WdKoCZ~rUflLc5+&&aDU|Yxr9;)de{O_S{83K40Fb4soGa#7*@=nT28b` zk;(v!LSUGIGD*hFcXZ84>=+!V^o5=-D5)9gWFQ5LStd$as4*s)!MV=NXw_rG!&>Hi zcSbCpN?E3gf=Iej7}=PuY8|sGBg*%=Zq8xcHWVz2vAC}xN>Xml3$ezPV!fx;h%f&- z9sB=~*kx?NnadZv)^W;A=jq2^QB!>dG<0U=1y`J9W@9NtQx(Lg)uF4i9lfvYMsKkU zGhxGbJ(zKhvD^eK+rhK<|JfH+H3WrQLf5}bN%enk=f5c`;YYuu((3g(_SoNu2r=94 zNTy^iRo;SV;gT6Ka?O9SDGQM5V(6+O(i4X$jX?fkV<-auV#h*EX?LNpW}jEih0uW3ueUczA9-m?X>ihz3Q?IEXm6CU4E#qrlhVz~%lvGesIR=OnR8GsCq|hMM5#Tbz6egFG@A~Ncx~YCQ zI{W&M7_avAyBo%HeVYpf5vEPE5nl)D&X1H5eNhgJH!{rU=RsthTO+r4kOxQ!b=SwC%-h zff9OBYuqdR@TtG)LhsE4Kw~03_p3{n@17lS+_&Ym7dEKUck{&h%20bEeZ=q<0qUsO z4bx;2amI|KphP?8OBT(TeoMvm#Lj`k*O22hk5-G1d%!5Ao%Yao_aKnIFTLC} zX`Yv{>>D+qEWn=KFT$@(M*abZbk}qid+(|9=6`3)@IV+yY0Ln3|MjJ1e)9gpwVR5bDJb}U(h}8zAvA9N#fbwjd*m=uF~*$?%ABEzQUC_4>c;SVi7`O?X9SpLTF_8&7v-HsOTX3S87 zB0MSY`-9UP8eWF)b~0jK&8!Z!dCQ(Fmozk7{4f7<>Xq{@{tQ+vdfQnmQ#DULGckH= z#P~NH#&2ri)`}uT-;i6q{8+@Bo=9DDd0p%G6J*;DPxKBRR`TD+LjR8Fzu60P^tSJ_ zWU{YvZX^>;j(*z*&m>d@YG*cK@4;QL6LCy#8CBELoovjXLQz#zYeO^h$^!fL9uO1z zbFLP8K!xfK6^Xn4zW@LL9K!~YLJc?O8d@520%O(5EiIosebFh?-}=_K;jv9G;@($Y zI=o@D|8heLShn2^nBWG>rY*jp5CvPg;)W~2K}S%mDEvMxrN5}5@fK1NC8_r0s?}$- zZC*@Z{vo&WaSsYHur8A*Mp}#dRAN-l2gGvi+Q35Tr3pX%z|xHQ$l zKDq7X`BO|J>$r7Y0E&%=?gynhq5^I)18K`#mLlAmF>EHGg{SnRIT1cu2#(bMf6)+( z-M~!t1#a-4sW1lpj`gO*Ir%L+sjq zDD=mw1!z2>BK2JvMtlDDqvy>syv=dOj9KffP_tY<{~NdJ_EbTmQtMG+u$T+!&**Bu z#h=W-RHv-&APfdQB}Q8XThgtuWV`krno?p<1Ned|X7sgY(w8@BnkS;bEeXBXH&~^w zIQ7%IbnTboQqCVnbeG^<7{s!^lzmYc3_9S=i9~#*uTV$jByxTQ5=$6oCday z`Z|z@wNT%dVRYZ$mwUX)N#N^Ut)nusHsi3!M5qNgA!CEpG;wooMpKt9Wh^Vub#|(5 zd2L;`YoMH)SkiIA++Q5px^AaC`E9OYG{l|rM$6TQ+B2C4CIk03BcZxa8$6cg)&g)! zGDgW<=s!^i{hdN#L_lIjqUHe+1^W!nyDTl+T_I~-t-kNr_L4)D(x?B6ftIy9_RGak zvWA-UADLr_?FR=gK60cPSd~eSK2t1qMDpl{FCrwki4ILGC}!Ruh&P+0bDSvWO5HOW z`M<1$;mChCU`s>@qv$`60K#fA_$`ah>YmYfViUpBh%p=cHyx5*HKJ+l)7e08zYHVA z3?ht;jR!O5Pv?`x$so6XY9BOytEIY6hEd=DHvqixnU$?wdDiq0!jSYaea?YPzL2Wt3mG8l(LY(Zx{^*<|t_W+z&w_C10*cwm#vC8S`!E)i#Es4wx zhsskQ|F563H5Q+;IS&G@Ylq#6^*FzKv$UtDUZvyd*qcztW&_ZjLi%R0B zq38WV3)S~`J1zbnJ}JvKxt8%RZl2DgNTh4B=P@TypPMTGFZSL%&hE0l7ymr#cR%|% zb7tR@$p({^fKkIHsbZxXDO$9&#hteF*4}b0SNW;8rPiv~Yb))gm9}cV6qPC}QdCqx zmH+{gkY$q0WG1uE*}wbud7j@NGeL007Hx%jzh37xbIzRkZqM`Cx7%c#1g9X_hou5b zs?7HG?pv@#Q1|K&Ox7x&?(6Ki{=oeFb(Q6`G5`hXM9MnDxGNON6ha6rz(Zxjy4E1D zEllM8mV^hYv43~F;k=uQXiG)PKW!xOH;RV!uG4PgV?QLe7~j@Lw9oi5Zec>7n(V`ct^Vyso-@Ycy7xPCDX@6eFS3~1J!fUr8^H!q+F z*(Tv<%>}Jb|H$HauH9sEmR3q`nD*VxKkj~X!%Fwr>32_it(%|gGw?;S=p{*o5(*q6 zz?gve$*$mvNMuok>ii|QMot}@1~-nOcDfGDN(-=H%5Qo|!~&!cLPkj}5gZL0!Jn%{ z+zbDeu%V~tnm@nzQuX_rM#J;6#p_W>(}16<9zi;XYGuJs6J{^2K~g?_}>P% zES=lcbz=duf}`msr*yd!2_dZAu&!F~WbfRb&8yAXT(jS>Z!ifR`oZ(rgpHh&%Bf9G z<^hfg0|0QCKANW5=#RU`3^Oj}7`G2vsk{4Z=ipDfr?XP&rJv_BLkIz)WC(Nmu}iML zSUE#Em0gopTFOw=)Ffs^VvQ=yslX<$=leRw5G8MaR+{*~=e*DNjc`JtAaHl5V_)*d zmz@89KmX9Z|MO_0c1wal_#kIA1?E~i^V@<_I903O?qM|-BuOlkT+T4o^~=(P?p6v~ zjU>7^6kke_s^2KKt|d#*^jjv^_vsU=v?4^ZdtBdS1m;TE%8sFxRP#OLjY$u z$elhSchCFHkNu?k8nRNiMgXZ(Ze!1n%YS%YLhFo=&!UCNIi(UI5kh38 zt}6zB3Ze9N5k@yE@w3bQpDQfJ!6Y0ACZI9)Y?Fxcu zw>+2Q*j(FfF}|%`)2|zLatEI4`FnNej_Y^qR<^FEf7&K}9xtL?fqGr4_cs0m-0kOtKFsJ9h>~j&BUfUL?L~}i#2R~XEPRUdZR@hd z`!kxpn_&#SmUTnHFfV)7=D@V8q?>!6lYCuHS7VIO_MBl{wZY0ZewOQ@7{jh&`GC6l zF16iGU1f0o3waJ$V~kpQJ2iFo3lKm5xnP8_Zri?YD3iT4t?Ro00J6G%(V&yP=?A}? z)Ac=Bs_%TR$L>nyJ_`U~YkW7s7`p7#%|Gk)UI{-k*w5}LP{qVvA0CbwpwLiBbvJ z&y}6J@zA<_{_fS4dp^uZLPmzu+0S*QGS~lD*D_@rJFWD!KkKo(Q@LkRdzR~${YNQx zN4{9+nB3Omr1qavYJ14~1?dAXNN~ow+6?20pG4JNhJ8(nveBRQ*g4aF`ww%F%x(YC zYi1bV)SFH}f)LvFRcbv2)N6Oi>iR}=4t*goakew3r>`I6hinVd&4 zzRA=y_Q0OEt3#K(NwsM_O$k|DxaR{|UB9THKilm4nKl5|cK?tw$I0FPJX$O__NLP( zIc1}^VZe>UI~LTRd_t|)ol&;B3I21@Ze>3FgP#$EfiAaMecrGxpLhFo{aTxINOKKd zo9g_W`tKi7FVpO+S6AUb2}Rrak&0xmlezu*KG#|!{q|t~v@msTxw?mQ*kNX`{K%G< zONVQ#I>9g8mtg#8$}_1pYEZWE`92?|6dt(jU22DszT%8-aptGV_0N4NQoW^}Et#D5aZALApS zgrqsf?W<2{6{}dqDps+IRjgtat9Z5nZCQOA+S{+!engrs06gdD$!d1QFBewb7B4bv z>h8Ig{RoGN=lgq`^~P?4vI1RU0?!->`E<({Lf}lOldNRUv>Rke_J_* zQ2hl9@8E*DF;p{5QN}e7hb5|vf*ss;`HhN#|Qx<1PsP@ccko#G{(STob6~UU;m!V z-=H#FE3lOzVrNUIjp+TS2ciDJWn_yaWPsUI6}d|7zPS$ zN3=-RFhW2P27(Z9L_h-xUAnWGDo7IqECE5Mr)NLB6i53bnSfLh2qy5^Z-3|9Zyp=_ zdXPvEQUX~S5ls<>ekXISAt1rao&RE{X_tQT3%7N*M6#$>GzL&B69tii4f*_y_kZcj z(536UUNty8wY9tVM*0jUKrjY_Ys(E(SFy?fR`H{yIwb@!!hq4TG-oSQoG4!YNmkNq zO-0(fQkhqz0B0zsPk&A@2C5WIag8HDfE2)5)3yh7XIF0~eZ|&N>H3rc#xaI6Vfxn2 z&Jmpu;Di8z<@2Nfb+5~2h9OB>7$L|4jI7NRwlIRJK?u_b0g4b%f?U#D8LkHS|XAND`0qe7|k=%muMmqu{{45SlY063L#qyOH2DA*L`J{^Q{&_ zeHtbihy%~WyicRlGzckZn1H46PL(8HfKZDPQm_!oH0GA>FEMT7m#%+rv?Wuzkt0+< zfItedxF%nCA4}&;|9sCk{$N9Q-_55cr{2#Px1YW@1&}wL(O60_F#(QNWBIEL;6Gyw6wd?u_Cln}NR_7_kKrsS_G2{r{_U>1|M!mG7{pK{& z`Z!>nQ=or%*=z30DAmOXSX`O@B=uct5?$(qKt*{1(_AIl)e@X$zm+lLqCW^N9`VD>Nm&nG@p%B3%t zgn&(1cb4FdP9(BNo;vg=yZYC>Kb~87AOuxgjDmfPQm`3^j#O&TVza)FVGJFa++}|9 zlUwesVwC~BKqWo`yfQ*iM+B6TkSG=Z)#q;Q`TQMUxsUom!T_-|^SKB@Ko9~92z;SV zf9bBfek*ReV;~X%NKywl-1E(EeUC?pjnv9?It4KTpl7cep@d?KVq~W@t)B-$(wTDJ zoW+7jL?8i`aI6Y(5-lP?P;kskkDfgBHh~~1Th42J-#<*Gf-U*XO(T@AYd|#B-_iCS z6nL$NPagYKA|*>e`9sXws}pJwL+`S^pb?vfUQfgnR*FSQ0y=^&3qu(rMYEKR)ZEsA z*>{BvSV<%5Q zlq7YGFa-dxIUZ@#teuS@ZY2m39V43p(K~X*v(pO7z1jS)11NAL${39Fw1k|}h0?p3 z(@PbX6o_7q$oisbpKrxr14g8eYPzmVB?QHhQn5h@bX%#5 z!XTQ`h19c_J?h5Mn0yWlz@QY$hP^R^Nq?5}g7F^=F+TH|t}=jC{9JG*^u-7TlT&6B zVhSk%uMAuQr9dhPu@n$U34ijxKl;g993KlnP0cHD*iNUlLae$ZC?IEI?JNHyl&Vyt zXn)!=oD{)bh)7Bjk+>p0alyu|muXU+nd{_%R7n_yf@5M~jA-b)^IX?^GmL2qu6w^i z0Du3#-v3l4s22=k5Uvv4!4$`YBnBmAJwbY+WMX4no;*4EnNa7}aH;fx%>}2wt(5KC z)YtV77xoW7uq%`Pct5j^My+~GB}sJG_}IHzASYre>KI{2BRXOMDkn;{OjGZxHCy|A zDSm1*MouVLTsn<1t9agR`ZGy3%bt4#oKna! zI`pRVMx!;^)H?~rKw#PCXM_M-vF{Bj;C1UayyG2bjn?+A9S+Xw8o24v6NesLo67!o zOQH1g_m-EGD`k!j_T8#LfCmwD6Lu*Bq$dcF0t~I#Em;B&0alaot&pLgQ5A-!70!u6zHVzA09?WpIO~5?XM>B*041oN4ZAM&VIKBn;}-l^gQ; zix&<(`PFu66u$Z7lOF(V;>Sb4%FVX6~*L%w4}LUlfemH5K$l@{>~x&b zGmO?I1bPg8)c7%>#gc80v>Vn))-XqEo;S7109Nt55dE2inU%H#XWA43MFf;mkO<{2 zjV~VUQRbc$<|YLNNG} zMI~a;kkSz*B#Ojz+R3$7BCoL|@nMQV-`w7PlO<#U6A3-p)HNqgo_rtISRsSx`oIkj zVX0s+-}aiE#A0n*`=%16Bx72;Y$Q=H#g~rSg}qsX@M66>TaR3ir;UO~WeXuhFvjTu zq3dl-hQ_N)H@9VTmrgeucSkENp3e-WJwwPTO)C@$9=U9I?VKRUguf%hDPjs`&nXj1cq?ZR9rw2CHYKGVdinqBAzZ7|IxLv^Xu#wVH=t4105x z0sP!md;$y;AP9p_=}P!**}11c0Y=O7RAW$!C#Giq_>!}?T-c-Vd2&UPV}yWX0t{h5 zpg^m8&7Hk#K2V!H^^b#=aaDwPa&+RT?2~Ahj%d4%NFi&On=L?@v$EM6w&zNJ9(sPg zC!6c!2-%U0WGZFvo@y*qM>2)~p$Xadu`ho6k$>6uTbLpq{`DL=R`%jxe+W`ZPykT0w9(&x-5&MQ zb%T#^MnFdt7$P8*0*(nNgyOmsY0Z;?n-H7;)%5u= ze85I3-)*J#1}$%Ft?gX7sZ{=NRUr=_TAaB)!}!Lwl)bC6RJo(0)O}4QN%ngyQ#>)o zU||aD(%H8sO0^C)Dz|Y2u%)Z(mf3pa>o4^ENmohq=MSY6G`wj4SHF4xJD8_hSRepE zfDizvGsCq3Y6RE5bLzy`e`j>tB_}-Z=KB|xE*4V83YMp%2t*)GYaMEFsYx)hn_&dy zBpxA!(x|WjwwFtvb}dtyen3xi?@QBu^NyiH;p$|uR%0Nc%QD|+ia1H>`nDrsbh98a z^nlj>F!Jx!6i_el695TF5%86ob-h-Iu{uBir~xP=BuG!Hsd>Nd>K@dY#=BS|D5IFC zh3x9bh#-O(BoHMMC$Bo^>@Bm$C##-Bq7eiQsawv``qC5Ju|_gN#>ajC{x)uG^E`K7 zf9(=ni;}3; zW|%u=9M(px)U^fM+2U3zQ;BWSj3Ql3)5|Jw7rWX!KlJd__?2>{fJsUP4iMOs&E60b z92{F(`pY)1581lWci*W~S0z8=yysO7U==_7fS0KpA}K-D-0^pA-}O(M1;5IN1e99# z_9L{s5K5{fmo2@_2o+qI>ORL%vQr@h1P~-3A&~LRzUjHEW<0l%McT$g6NkSsoN4=` z`Rc;$hmIUySfg2voL_uG3uE5^Rn{2lYDR%SQm}V0Ldbw+orM)BAyg{>RhwL#Z;3E; zBY+xGG6|%VdZcJ5lU6K})?DmYNFo!Bpp3z2S&ySIBsf_NqSoQs!jlq90F?k%Lau2m zy=Q4=>8WPebTLq%7RgQ?KUKxC46#P-Fphmc38Td*y0?R9Lqf=8`?@uMhFy2D*EFvx zV6v?zn||x&&hG2iW;C#XLkWzw!F&nX+ zx9f-$=Bu?kyG`p=DT577x9WGl7>IwB0sOq}e}tZPH7Nk70sYPcQ%5WBe97)l^(i{S z3Hg5L4kL)LnmaHt{?@sm0b5g!zLDA2BBU4s01OBSrK}2SykW7-CF?i8Wp;7#=E1c? zTbxko<8JG~*=?P<5n>EmN~$#1H=;0TbvsUGUA9!>4X-+6XLA{haN0C>04B5<29R@1 z#R2IO6F^vEj0IIlLPSX5D=C3@q{MP4nO&g+dB3mLJ zYlh+eO>5R{IygW5_`!PRuNYth0kE^$+x}u8oxZvklRbTmT+RgW>!K{+|KXKo8 ze(Umcw)Kr*^cx7|a;`r@kVpXwN{k)#TJ=+vnfWy-3oh1+{~V}@Y%S!!am~wKdeXvC zVIqv~7_V0YillzufkVG{`MEp)DO7Rop~~!Ro8>rzsdUlC7-uzYCsjfrp%Rkd(2+vw zSm2^%Wh}sDN-4KQ7!B*%TRJh_-C^k6WkN41Gu_HlZJP~{CJ6L`KtpZVA~+V|w$6^5 ziiwCb8nX#V-o?y~MaL=j*x6nyiao)R$rP1bA|a#L4=L9U&Q9+$88z2Ag<>%wF(Kfn zD6W+--KJwy!b;MM&pG!4ryBL-+ly0s3Bp=}RN`P%4w|j~Zlm=;5z}o&&9V(sFN01q zARwuF$-O6P)tmcL>8p#t20_!UeRGrVMY>T4gJ{eSql_MgqU=}~W2AHwqp~IveF*a_ z+q1?*E|b5rZe7^U*{F%hN>2XM-vj^z3M5P-^}ydh@}0@Iyz-Ji>y)qy5Hcy? zc8W<~f>rWRbMb>?f!{bib)xyo^=r4a3EnqeYuxha;jzcD1c(Vu9-W>1#zkju|A-sK zW7SANCXUKuwWYtE6;gC-mL{w9@wBCHnp|v5xJoI<&{9Dt0ulHvlWH_aVW)*9(gNA) z;M^L`7T(z=l^C#7=M)IFokW!>5YPb%I)Z|iL{Uv5d9YIXSjMnyQ@2uX{cnS=;I@8)jM=#6Gz+JMPJ7rZbbhDvIJ+B}KHp)b_?& zr54|L^2o&!aH0?rDTLeBq_fvJl6Ljz<`tF@8HzZX^Sp;>kOXBXvv;A|9gT`8u{+j1}pXMcFWmvyt?$6D#qg~ z5ka@@T#_Vl&5fd|M1G(6vxF5cE_Zz{XPLY2o1WbJ%xpxAF`PZp|FQ1wj!Rb=z>C|* z4*&?H0{Gk=U(-7548OS0c}EGMZRU!Nk5(7~TQLcc0%{=6GACx_>$}!{(NbcdGn0DF z_P+kFb{VOQrsL$^V@bSpvR0iLw$pH-o%slgqX+si?kEW~q@+s5+}0;@452irz7vxt zkDlG#d;MY}_npQuwlz*JKWE#^*X2@Ot*GTTiJ(X#!30Y5lu=A2kdzSKQ6fyG0I8jY z&d##LiHc>=V`p+hTADba$k<8=K_yTHdb8zLo4&i$pU%HyZgFvfA&iDG-EI;^^9Hk- z6e3YlnL4*MrIZqJ)S`q(q2DNIrVRqcv#wXK6NJ*3x1*LfpHa|j04i)K_Gj;zKK0(Z z6jK<0rWI=IH>|yuAL*tN<#dv?Wi7jSyj6KplhRHb=Fa)0g->rQxBa8OP@5iT>)LW~ zdgk+>(acih?r&q-t|80$HGvTstJl6$V`#k9s6VjYNMFmSRyZ1ZUp*Ozw?$D<%h;*W zg;wicUqQ_m@ge{~mu`=2r2L{c53W5izOeY=Z!Iod^#%lqh}uV1HR@ z1YbTpTo@td6<))e3SGa;jr=hQ7>>4DAE_y+9y|Ex`0KWxv$>p*5sEM>YWhV8A@G!1 zJh?bq`Jb0v{>j;e%BQ-rxzYeLuAGj7aI#tVRVxC!Ar`V+vw#`g&@?mU=;^GHHX{+n zDTGW%vlK%Lom!fisYiiVBMDD)o#&}eGP+T6h{iEsUZQAMfiuH*8wU%PT?iFYQS1eq zGKEgv4;vM))lgyBA_$>Iv$?ToUm<=>@ahrnOgqNS1`ycieMt2}Rt> zI`+2tYU3W$)cXPv*9^i79i}-l%=9bH=^ps!&x{>edkT_$XG{W$F$`r(d#D2NlVtJO zLi5HM*Z-x?7+meO^wS;?A%HOgMhS32VWg+yIuyr?k%UErmrHe*JMRD_LP0f%KEJhh z-~(-~z)f4u#YbE9zwkf;!5A#gAyxu(#8Npgd38Ppj0 zvBfxk$VX7a1g~!cl(U4gSuBS`s&o*_no6R(5=H=HGBS{a{S51Cd;+Y8YMqNBh%*dp zCB$)WzLc#-o(x>S*6E}(hOX0Q;6`5Hx+oFKBuwVG$rr-FJJPHj=NilQSaynHjMFKj z;OLr7DJmO5;^$IMabjWVzH&aZIjPmA3`5UgFRo=wGvhVgS;m+_2xhTJqEN`Bu9T{I z!F+c%-D^{(H3*|8g2uf?!q+Ep;u%WGzHGVI)wq54(&;~CgqmC=c$k@278u*vZdhxz zC>Amf6OHRROi3n)lgX4}jR+-@wg}3R5`H6zClg9UUCP5@9G+T}&R@6CtludpgHz4M zKXjy=%WXo2e1+x~q`H4f1m8iRAY(bBCmOZS=!6vVoS!8@1sWxpvTp3Ii|D{N7G~el zlu0X*%RZVM*SgA1YRAdi(p?B4NNYyVeBd3D&#_E-RRj2?4dnqaN`Vjz2m_FMV|GVJ z;d6bKzDFY%C}1E804V?|C4>O+|9#@&KC`={cuu+_HxMLyi`;+?9$hr?l~1VGZXQqq zNqW51xV;{QK};wcpE?!2>#S`bEhI83nf65)os0~0mT&SkE>9867nWvE?>+C_&H1`N zZ5c+EA*nl*_qFQoJ*O*``5m1dy|wX)hdOil(lBUXVjVB}t`{o_Rv=pS#?k;@K%u{B zC!JyKKgA3C=mEjFw5X5uGdn7B=u z2&|Y&WK`oqCc2?zEk<<8l)-e}rj+PJ2|+L>LP@0%!eNpGi3k!+ff7=RnV{L~G_Acn z2G62YM;Nmu2;t6ShyG@^<=z>3-uUKp{v!oO&&|X!<#8w@B}_tDI*uckA%xmAV~rO2 zjdGOa41;9?1U0Eh)C4@<@LCV_+UcwPAQ+Px*C*WSr`L3Me=M6yy(~uHRb_mjuHtbG zz|QE_=y;=kD*@ePUtWp2eA-8o$yb=l|7(=gV@3a^%oTydqmP$cM zGd6}IZY3{(aN(*3@DtSiZo|0ww|4IQr@4jskJm*KD*!-*&YfkZ|Ho!0`|H!K<{hq* z^MDX6_tTfAiACHbyfrgFZ}c#-@#2BCZ{9aK{kTu{#>4;ojm{34x5paQfAM5+YDcN_ zDhm+IHET-+({k2jvd&zy>5sXMFB_con24R*@ZE=P!ir*XF&J!bADj=|))E3wGqfR{ z;I5pRULQ_Rj9t9_yqycv({m}^urivaajBH4Y0NT=bQ1dE)-~(%)00y*p@d360p;AZ zESB!b6|>o5)`*(TNY?z>R<)HnJynOfrOK2a`9aeQD+VQc#!hD^m*yYqFq}0ZBf0

vLN+owZ?ler}N?jD49TiIOrc*+!UTOgkNgfk$KMOC$*q5E`0p`Iyj# zL3tC&6N83zbsT4_k`2NrtCY+jjC2YpatMWX%gTAJ)?8bmFnF@jIM|Z%B;l-3 zZ#D1f&E>B}B1(k9Ue$BI)0@e@Gee-yC8U1LZGGHL#JGW>lr!y}Cz{oNu_$Zr(alSU z6yQlY)dVy>)@t142@xt-mg*Y9ur61;vJ&`*W&`iAQVO~Zd!vqV=5*ja@q!R=tEB#Y zuP#Oibh=!vr*RHG$S=)K&))vmZ-3YHBac4(I50vLpc6GOIB|}XyUdXAEAt}y`<4)K z8>U@5h6)dsOmpu{%llSKs{MxTT)l>C8j9rE%7pcouix}a*=qQU_2xvCpi={x+?zT8 zsrEvtI5Bnl*l zuymdhQlMrOdA^b&Nkov>bO(b{lyjpQL`_#E5|m18!nFRro^^9Vz;U;6Yk`^Pt)bd3 z6aLLpudse*V_(xay<%`iekYqRG5 zmvt0BThbV0jA-;Vmv4URy?^tUzx!8vf8&da1de`^rmCAWt9czdEq%-CUyoH&gmu}zs(Ug#dgNyUu zixFVIRrf}Qht_=I!TTOI934i}`744bo~p%et1FW$#F&tA5yiyT9p3U9o3TmHck+01 zv9lmCmNOjm>DlU2PBv8#i}g7a%NPJaGjuD8gV=4=E0V=@&DjH1Z*LoC474~&!b&}w zJw01F9wh|k8{UG@nd3!?XHbo5m{33R5~74=B4X(n;||j(E0nM-aFkL60zYh0LJWd{ z3n?K6z={BuQpz^d%IiQNrCFBiN6mU1d7%(d+HuOEOyaSH%G`LP_1zMXo!gml0d<>8 zh#(!1bO=%wM~EasV3J5$N~Mc|=e2OkDW9q=jRT{W!L>e3#&%ZY+dzsWij%1{r5lHA z`(=&GIlEG zg|3_8rnPo(I9;pNAo9J2V>l_sFrRDInu$V85u`JW86tpGAX+J%n;PM?>bW&av4JH* z1Obs!${-QGCuLx3%t$k?5s-i>;j@j}Yyb*4!CWOt$P7I_2MQ<#bF-CM6Nj!B5zLb~ z5r9xZ0caEeF$JO{okM=pPdrF6HO~uUN|XmMr+_47$5|gnQ7c4HrvPTVq4!#pYg19u zIOx`HRD?hd)AbHzYv!WhuBueyl{k2^o$1>g%GS)r@dFJRAM-^bDIs8D3O%N^+u^+D zaJ};Bcts;9Fs*wymHy3H&%bLn3J$4Xa>w6`S_44OB>a{4N+}?KV0%x`O^#`8d~EF4 zSAKKD))QPvuSN7Jqt;q@%l4Oi@{4!h@xRaN>RNl}JKv@TQvBUh_11isWjn7c^?u4p z#LlJ=V!Y+<&*qD{%TlHDf32vYf7Eq}-aqQ?_I z$!clC(RHJbV@;|=9Xolf`NuCkf75npT=n4G>^*Iq!j_J%btmG`Ya)dfW@eL-o?bvI zhF&ARbu931t|?FkH_YRU3!#ccpaFp>i6cMu!)!L2wTVWk!m6!U>PAwDBuOHJa*a~T ztBdoHqKFxUFoPmy8#eP|6$ynQ5JJj0iKOefhzOcvObZ~yo=PZ)1PDdCLI`51f&`Qh zLPROeupkj3)iiV3bt`oM;21LlVayW~VlBjmH)wm;) z0tm*C#*D4EQ*WyT-UAbX`+$(o*8B;^U~3v%)c}482p%E)bnpD92WG4U^%+KxmZH2y zH{U8kZ@#asv~g~HYObXrZ{0xeH75@o{MO!cFTCR3$M)Sd7}FtvaPP61`P+u=%!Y2q z%GRQ2lNU7S1t;{WnVGL`EtSq)uRDxm$_DxeO3ivb#I@#PTQ*g-?lKk(>pU$W=C$M+vPF{j1Fow;7i^MWYGf{-W- zYYP=ouv6NSirK+N?JhqKI!24dVbQABJKMVoRt%8Nq%sr}UTf5AT;qn2NZF=oOjqV- z0};m&C`jTcSZvgq6cFmn6benZ*{HZJKNbnX1Z)XP*AND(M9icN^XYW18p<%@*iK6Y zAXOrjih&T~i6qnji=5*W!zlLLNO-L{@qrSZiX<|S!aiq4Jx-!_&W%ukIxsu+)nY2O z4kd~!40$93V+bRiaS%#D-EARCsT5LH6A2X{m|=vtQc`dL9ugH%MYzyS`^j4Uh6x$n zZDLyJ(X_n@A<2`C+J|aF9x*_b&dOx|!~$8a#nGd6P*Z_SW_8NbWd!SX_Vj-Fq0`e> zPAB0}1a1OK-887abfOw+r2`v0{VMf)m&KfkI0{Ffwrc-D|h zj9}%p{Fy}G|E>ang;?&(Go$C#{lj}FAAREMzjg72pX9zw?m2Yq^}8;(?~(=(@MN1Dmf2QInnU11W&^9%En=jBV?sk*z6#-hiU;q3m%jW7UgN*AcNun;%> zRx`BpjG=J|YxSiyR<7W1L2(oZ3qcZtZCK4DfwFGX4A*EbU+#O~owtAHnqR&2LYS!S zI~vvDoHfI}v=uJSx{b=f+F>VdxyjB{PTQK!-EhovKQWbvWL?K#(Le}n$1!lML@Axu zIc40^Od=qGiHWJFwv22X6p08krj-T&$fVN6jFZmfvIXh}QOnSn!63n!l2k{SQ&3zf zKuiM6*IU)u&<`;oOsNDgD2b$yAVop}AtsgVF16)^6vB4wB0&hzBn}E0yE9Qp2`NPu zaWvt2m2aOq@t$piLvLVVC@2x zmN3eRB)COs<;i;Gx*EjeX+rusDSu^*ad5Cv{jfp^N|bILcAVb`0)NaEYP=y~Tmd8{ zs&6~TG5>r^uKi=*IyG_LJj9b{3V}+9^qrSVeY6z@hoAIYHwRJxLm0X-A9`)?;QqDw z!XJEl>eQYYueF*8^k0$q&v0sjF(?I4w2g-^TsQcExk~jjp@h~lm&c%#0>08`E>LoI zKJ*?e5aZI7~2D{Q+ z%YN^%$G>vUS=)Z&(bHo`ceM2sgT-dUhX`AolT+7BH+ek4H>fl`pMQt4LUxh>yqafHm->f)?q#BBOOKnb-7!YoV@jHHx> zd@db?GCWvcnCP_ZqL#=A0iZaFBfyv{1PTMlO08Zclm|e5C-FSi zS%CmXM1g2hT$v2q&svNP6uEw0CuSE24Dm^?bqhj(yDjI^6e4}Ip?gnS*EY6dan!}C zrVDBAY%6>Y#VGuCW8rrKrIsWpKo~;-lkV;L!p9fl_&Y~htxvfi!<<6quXgqxSd+_N z^WDjlmmG4NUx-)p0R9UzfR*7GXr&>CgZOthfpO*Q%Kg_>mX;n_#4v{8*=7Jm*lbBL zGab1Pmk@pZ?!MttF$mO=iHY%vp!L0(g9rHQE_l`M|M&GfKfmSdv$m!39qT@L=NI0y zbHiD$pE!2n-eR#dl;YeV+^`<5E`HLaXh#YWb6ueW@r1y{%*_1DckdcF_~4^Q=Nr|f zjRU>gg-FEl$+i z5laGs(~EP{x^3m8QXr*FfM8zty#|h@S1Pr&%~h9{5+zX(MKR(ul_(&I5WoqM!+m}B ziIyv-8nvTk+bRdGR)unAB80FwV^T>ONdU;?@?Di?bsnMRu7|BKaTP~qEle8sx|R36 ze*M{>ZJjv2KVhPT1mqD2CKW~+!)SVTDyEdl7T{#sa}TGTw4suy6(9h{d7dRQVwlhh zhS{3u-IF)W3)(5a&=g6=$EbGP_x>)HveB2#yxsM}{ih@Mn}b&7szwk#T1R5ql*)X0 zx$9r%s?9Gw;?+NxARPHpG$=+;#AN8=V*A(UBLD6u8;u*0QgU~({j)oJdT+jGYT{SE zU77#Gx)hbwD8PRaFFsi*uz{!Z^p}YlJwvt68Cu`Dn}#2LVruGbjv_C8MSuU>78k4k z=2A2jDFGZ4=*?tykK_s;u|;Aw5KN~De@)i)lfGhyy=7=<$D?CM9v>{W@0gl6etPr9 zvtN4Wec$?gXHVODaHHHz?7}6zBWE8te)N02ZJmRhVD?aD;cuSuy<0S;_EN(eO#JtGsLTE5$8%jMb` zV@4PUC`<%V3P3|halq)QrP(Id^;{PsqTJTjGp0)+Vj*RW01~B?sQAqWK@h)Tq?@Tgn=C?VAD&1Bwwyi)y06~Xuh+rBmy$>Nd_ zPh>#$jHU`7I$f{d+Mse;0r4tvydMKV8zLJoC>Fmu)pGye!Fu!KYc2cD7xfMP+oAcH z8@{zOdmDo-4H9b^PdKrJnw6{`Bb+1L=HwyKb1Zpy3tmY)KHr3Y5{wdVTOD zL0=jVT3_qQOi{9 zA#MaPU9W~Xj^dtFzW-$CTX)P%{B8}!Z`fkyQUlo%UF($WYS>Z=6fOaQjUDZy-WWG-=2E>!NK0a4fV#-Qn6I*Y&04bB&Fymm3#a+jKU<21WK@`ajRfi zjveZzuD2K`ae|h;;;C3lqLgZ7Q>l_4 z_zi&(!9s={ureq$03lotqh@z1-DcJsb8EZ1*UeWdwN@P25@V(#1Qx~$5u(C4RDcP9 zltj~bE*8Q_FeV7$s2+uL0mep6#D{=T-4)^l2bu~g@ekH3?{_#K${W_pj#TR(PB0|B zjJyJXLQ}+t+8McE$j-g9>bc*Gbw-z>`2M9hIvh(`8)SUXu0r-RQw{gCfe5G0A0GMI zsb=j9-cbf|9|3ezw&nWQ{_3&Q$Buu~r{q*D6>v%* zqv;S!v8*9*UOjg3Q0tC&zwZx<5IXfjgmxEub|%w{yImW%{`d{A{nw|CkI8J`Aj&;* z{OFBue&?%rOhAtUAXJBi*_rVCO{1CWiHW&lU-!sYjve{)TzlJ|g0C8B&W*I0vX2Lz z_u%}@Sht-n^k*_1i?wR^aUyT8)LYq|YlgN%r3QnYJB~F3A1yHU^L_8$ckwg6?;E2=jr#YE8hg&Y)?9O~Wt;1EtlVgc z{t`-+nAQ=Yz0d(yn>e$*{jw)!Ctpmt?z*m6$QAuVL(9#UZ&J-#&1Q|bPA-b#FiGO1 zqphuDskXetEh9y=LPs{0>q+O+drlmyp0RFgadLhxwm35sG>B5#XCO5&T{3K8LrF#m zA%qx|u@q-aLF+IOaTqHtOmaFj8|>&BY1CWu6%oe~fn~*s9O~;GnV4UguP4${K!$Ne zZDu0TibxrOSuSyNSsp6IrB)i03ZYP~M!|90HhMUKSR(*~nc~)pkf3_FUipix&DZA5 z)b>%Y{tZG29k9$RZEp6pM0C7lny=_G)0fnO*0U{6=jP+&{!o*uuaeq!H~ahNl}ev# zRF{v946S_qbfdNF!TIUeOvJ&#SgHT-&-ed}&;RdI0P=E}&j>}7v8H-@Qy;oz+lF`k z-s&A6d-l}vpTIQug_irHwn+6vHlO#knq21ex$i#x*ikLX75n#}IN&ua^3n|(Hg4%C zy=Ls#(fHlxzLMYet-Btb>@Y^Ivij`enHM9oat+LS9RrTZ$0nymwwTYStIg%jYuCQ| ziK$aBH7r@^P3Ll>Qxiwh#ca=^x!FfMipBN0I0{EHg`x4~^07&i+%;LNoO$-@mEA>8 z!?sPg(eheBl0>%aF|>U1RR zeAhJ7sZ=^Yu`s_V04}6Tv_vR`)S=Y6<$0~1j_&MaWkC?BSS%94I7d2{=IaXGmhu`+ zsgpSCq_a^JNlIxNgy>Wz=PC=wWDHj0s!qBIVm7DXL%RT8#sWY7}lwZO?H{iWqHC@*C9_W0#BWaqkEQRGA@+xFD;gCKf|)m z7Y~cOv1M`#DjfUPc@qb{b{~rNl^1nL){Hs6em-2l|DdI?|(dp{n9ymGEGV9UK zPn~nc`;vxt({r`ucPOrK?;n1A*K@m{K2~LFf0NSDK&rmKyXl=*4>whA@5JcL+7(^d zEv0rgbMzSAeAQLMKYIMRI}WxMx_1aaQa_FMtj~Z^w`;pCYQ^PAJXwxmTS%5T-#MlkGOdx zfTI|(7s^YM`C`7yP#QVQb;f6>j#A4=d$ne;vZEtqrcxbuA33;hu&up2#fi-m)yB2b z5uxmdx%ATR=MEiMOeoDN zN?ffabq$jcO|->K6(n)uFv@H~Ng|c@l?Xs-lMpIuO3g%CH1n3zC4~r^3e8ik>OZbZ z72g|$(aDAohb_)KI;pvHFqOLARB+oZYf~B|(*PD{b+T(R3h!?zIolB@UGExN`P8aR zq4$ZUg*)yn&%f?evmH+Ub|(> zbi7=Cz-L5zL{Fdlsk(0_ne=NG?RCn68?lQ z;;|3^_FJy+m~GIa>Q(YEC5OWOZ9tj~Rr1niwRNc5_qZ#ku}sTd6yp zea+PJ@{5Oc_;*V|aNP>aakljh!mBk&paq$%EKa8_H`C_2W+DXfMHD%Xm9b36>f{z0 zO4&~?Oiiw8YwsvA(QYI$!VmFpW{IL`WoMLRZ}ftk_6D5fO%&a2?gFCg!_ z>GJYIkj`fEVIrhZl1E{vnPKvZ-%2!~9c~y}3la+@rIIk2GOqj0E3#kt*hd3HYi3fD z1VSJPTGC{YLMdNSsx>7kqLI(IDHg_2O%Wp7(%CkbbIY=5uD96P)$%<*l8Ih!EHAYc z+B=>(_`+PQ;TYV=IhM_HX@{5u$T*Hp;wZ`5mT3`ABdxUr5kAxYavV*@wqbiwd?IZb zYoI0Ofs^B{`d0^YZSNd!*1i-#Ep|JZs|^vE11a~)l+p>)O2>rIWu<2)MSS~Gl03tO zP_OGAceMSF}cM=1qk44iW?gMoAQ zi&>QaGg`&3H32Y6;TYzKMM?E^-JYO5mmfNC_fO_N`FDT$sSjLy!8@;6`%3ca!NIrx zR(|mP$4?w9z2%B4)<3@M@v*aeSM{Daenf9iXIFgsJKLV0 zngw6K6{%NTjeSq-A}m@Cg`+HXd;weE{pQ@n&vs3ij+MQ&ir|mAcFcV!o!Mi!PU!eP$YNwNYDexRtUUE49>WEVq&3rh(b!u>X zq16l{rSi<+Ii&0Y`?l&&G^`fgTxz)~QJ~}-!|BqTo|9^xCer*Zh=Q%!+s(Qn!^>wdWzCU&> zae3$9a|4GC7w7)!@4Sb;ecQ~b$L@*F-?lzoI{zG8o$X)Wzr^tPv4it(KI4Lp;p@&P z?T)g_d-q`|G|##9!ykF)`#<}spS<&i-+1q<28OpkvTxr+acyUQ=Aj3ccE0ZV-1O0- znBfVWSYlIK7cTA_*|BeNs`Z^?N4}KHx#zELHKCh}*l^8nvbo2eYic3rs-Yo1wtE*= zY~EBVq_ak)Rnr`VR2CLa7+TPLd&kg``LWSWg|?3Kx_d7>UMZ)_NGLUVK{r}*%bInW zRwHyg!sa3BJ zmAXqWmdi5_m*<);s>RI_K+nG%6aVm+s_@@#A$b02^o?wA<`>6MEaV($f~96NhLqYQ zT=(bNT-z{N)oZkfrm@XTW2Ap5JH5CNhGC)zKqw`Y6Q(I4NfO7)j7nDOXzQ#t8dMRg z10gC<2t^VFnM|r95=v(rCtC{|-tbWW@N%uGJ+0d{gA1)0(S&9h*IW~A5x@W?oHEi3 zBOOyB5J|@T8xxubn=KFgfA8y_Z2xtSGO7DEF+cex_f5onqyIPns$c!B|37oXQ+gWU zlu}Se!Px2HGmJBE({LH1V2m+lup;LyXIf?#;Ut}FPoI0{YM1>_ZD)^wEi9r~XX+KXfgVUuOaUPJ5My4QIz~H@^M(J0E;#;_l}3 z%{$tAet7GSi`!@R>@C0O%~nezJ*&?iUX5kX!*6jLd7!U=Q$M8uN~CywmL=+g9D zu~_N|wa`Q<)rkDCsS~xRgwidqyrQdXg`y_iU721`8tR<3&aSqY#>1s9XaDS}S|eyR z9n*DO({Mpd*P=C4jvmC7+6#F z690QM$N#`J=*Vwm+TYY^D9a|G>8#GC92cgruoQS&1wyV|vzFiY_|uIHH?X3;*G<_D z^OztLGc)sLTbb#GSawow8)ecITC=7XYEC(KQ*9(~F3Ia|`EBzbKl7P6%j)Y0qJ%+_ zI82f$MTAtb4k#!yZ8PVKNErsRwNjR!NH-#y8-x%E3YVMU3d*)QaTzCpP&!D2UlDNv z5T=Ooo0NOAe&Zp>wnuW7wQ{Br-!)EJ_n({Z`f6=?dADubD+$0X5Q{;<1Vcl|NhsyK zuj#z$Iz#hG^w>h9anGd#0}nRCaQ@MS`70|*k4vqf)W3g2>i+;D_=P`({7YI(DT8L( zU>u#MZRK-aomXett@BI$*~`H>Ntl*)VwjFks8_AcEmfKig{Ja{R}8#u+xoS9WZe*| zwHhX;77+UpvZ*XegE?$iF$674Jn--yeC-S0>`7YToDkx_76JS+2{1xn5Q_J0+?M?L zD{taA{NpG8e4NYsuj^cU-$&kbW9HbCKf_(4hnAmMuHENJZ~O<>eek1>HXv(DXjG@L zIJeZ?zVqx15`hJ80#mewlG%o?&SBj3R)Zo}VJyBj1aWdPe&%O1$^R~B_1+v>#vaQL2&@zmQN`HA3Cz?g z%L$|0i(8?z?bMOV($x0VtJY-d%{XJ_Oev)rZ7kJd0y3B_<}CpM%IJ7=sjiihj8P6D zBr zW5>#-%x9CtES9=5m0Bg%l=F;$NL(o{dDE)wZ9jcNpOHC-oIE-Pm)fx+WT_gqJWysN zLMqOPxuUnN=lIyvvSB*8L@5>%4TBH}P~}hq7C=msQ>KZIDU0gD_W~if234V91k--7 zn^~m2gE>RTg4Xwzb#&;=Lf_wxRp!4|u&kXqN_(Ubp=lT{CyXRoYG2BRG)y*~#6MX` z#O@Roeeb>SvVXd3&z@aRl$YMrl4@Ei1*P?WH&^~uR{J^UFNg9khxCl*D5aTFZ~nEb zR*!u8j0;w0F1}zpF4%en4A%EAp*dlYw2X##7!TcdKUS?8#1qfHfPw9svFL?3ery8c zM@}K}6PVfrhXDaV3V~GCz**~8z(NXlKJ-lT=!3g@5-PHH&w+JI zG}AV^n?52$2m>E9oyMLQ4^}q}uPfGtfWNpLY&rKV=dqvMfBd3XU$r`pB7E`TA01iO zH@IePu7^fJ3(7QLItEB0z!QPqO&hRq^dQQ$rrNOc3L3d47Vo*Y*<8_`nR)T}6wR`B zFAlykHyVeeQC|$ zNbm8nvGGDSRa({6ooX-jL$BR{WO)|5cHJK3x5{R7utwW}x6*%srL&6!03#8So*6iZqjo`~b`HMN=^aIEX! zzIpQ>+`j+d9gnwK@A0LW6Y@0p|06+vdQl7m2*8cg`*#hK581BWwRYpkw|DH^uyWfu z>oIc98sxGmC=#Ft9iUKfwT1FCkE2I&jE^m#*2R$CIS4OnVehd?9NjmH@>m0{r50o? z5e5<@AyBb^CKOUBrKwcIoh80zpbt@EZpfBf0`j;Gj*AA?V z#~YOob%$7c=dFM9uFrq{Yu-Q2A3i_Ovb@5wZ$39$`uz{CIJ;n7eG!h_yBG77r*QGj ze+t}p2Np>PQuC3J2uVGPjrNq;(=h-T9L@PzxT!4Q2RN`aAvd-UvADY(4?cX~IEr@n z##FmSxCuAy;>6fk?V>BL%wu{MbGn7aQxj5}2HSqt1%Nw%Ll68&^nU)Y`7^)$=4!4j zQ;cFMJxQeK?KJOx=8=6HiX8(zgwv9dvM8n0=A5Su({MnMO=nPPG}PGQ+*D6@ad7+a zX22~#H9SzRk>oNkPR#==2jEo}aOCiQe>P|}M>@JY*KgQ>_k91KckN5-$5t`xO;>H$ zu+kixZ)DnX*(^7)V)X!?c=j1JS!qTgB}k<;<0*?b<0Q5Ra(1?u$AL$Wo_x*O7p^Rq zE0~xX3s?g5ww0`@ByLQNu+-Mxgi^ssb1qVqqe*zI!!kB^X_it^ z#7%=3ln_Xzs6iMM(NYmYRFa^OPBRh5IAhZ$`uzR_BIc$PN=Ho^dT+hu+U_%Nd^_HM z>CIE0JA6lfUCiLU=U>tK=1Y6hzq97DMp94BJIa?nI4A%`2yFu8GSmxofkQRn9ev}P zkw*to4!(Ba*awbA;q8%7(^4u(^{*X$`d0+_f3cze{OnS2ep+I4GtSmkYX<&d?fT(! zhF1?G)0KnAA_%IGvt4wA8rI1gI%^(S7(=8vDl2TrjXel$hRR|M%actkEj8ga19+_n zt-6OW5($@-+onxwjRw5H2a{B1^BL_hkc~rwB%A5PlY0+E4?py%9eKfjEe(LZ4E|qs z0QR}5oi}dS_Oun&<j@F2wE6c+YB+w6M% zn=+65^OqMq78@ISR}_Ws!!%9Q;}|AkSUETdCsn|Gk3X=Kwpr>GYtDAj-iEQg&#R6V z{dDi)y}lrX@ZllnTaP@n>)M?cUUQ7jaA zz170l?5S}(oi4W7IVa_~Mx#{;H}tNw3um5#vi*8fV(J8fK~Fb(cf zPTOqD>|M8h<<~cES+_3Jn?>NoXs8&4B*6}|4IPUfdIF7*D2zG@=6fBq23;U)BA?En zQ47#m^sq3!h{#u{*6IjFA`vShV~Hq=NFo(63W$_*7ZF=YSVv##%UWrS)wynP9 zRhR$%a}WM3nKb2tV}bX@dBIPO$Bi?ec=3h$orj-VSY2(j^=}*|YQe%!PuyGH_Npu0 zc2BZ;r5e->Z8Vn3@S0`Fr6r{7JhHEOy%p_x7;7&6&2%ZOJDw<`zqf>pX`}9ih@kP( zsgu>bX*eT2D^pVobFFm7cFGf{&^6dc!ny|$36e-H^}=%Vy;oho?(XMyO|0!7+OVT% zg}Z-gvL=+4TE?+hAmXenDZNIPi4002VwagH@>y&*}ePyrj96;oJ}q)MX@9z z7BW^bmCdGKEe#g3D>nCnCl*F1YL8L^iHGD}E!C3-}E2<%=0s*J2bEuPP!y${6nl5y9 zlEqd_8wMjFW;}ChDxTdpHU3ARegDYd>)(lQ{mwr$i@x1Bd}^xF-#xUlJik1Vanrea z&}@o~Y`^s8GrJQ$fj4~c7VJN`>oq_4-nXtVU9=4!`Nlu}^cJoe!2?Na8dJp#8HAcjEP8M zs)QmU5rlIF$96#pfn`{bu>hl-XhldqokcSe&gij|pB71?e(fUwN+}FNab9Qlv837f z%AwHzMoX$P2%uhO+n3t_zyO?AX#2wN4UPQnagY`3D*a zUSI`d>(zaIZz)zIucC-dFI11;@{ix!F}A)RPhEfG^7i&rK}L~kNFj9?28C2xdc(SP zv^+6|_F^y4nT8yj0P9cT$dMyRWwU5CVg#NSnrYW=Cb6EMUzpgmdecy|JQHo-d9ih1 z_ak0Iwvr1jz9wHibr6)ruv{0WmBFa+@zsYO+CS9Yy;dx@=4}8bH_X0#X9+?G*Pw=G zgb7LIRCRt{5kk|Po5hryH4Mwh3obVP;fKuDbI)Vxv8Te+nhv|;rr*cz54}I^8|t(z zZeXUqgw8dCD5l%+jc3mh?ioNE1@%Dw&n3Imr}j)}+vh$sDG2qLoSn zrB+RdAl77_fp`FrCUmHsvAjhUBL-t}ET9ZS2T`O9(*$A_S)A8=;>T-t3=HSHGuU_U zv2lY?l0?#DX}hiE1yxXs3ED8$ov~_oc4}Ij|H>hL?WaEga2vpWEZ})4eFUBQb13v) zx5mf4;)%s$P)10`F7 zs|G)n>&%_!WzH$6Ov11}wjwrt*J z)n}#vslAB7q49sLEYXo5+wAOK=B4NNP z#6~F6G`rqz=N+%R0rJpM?7sger!Kwj+Tmt#2n#>CQ?t$#87LHSWML9}j~;Ej`pPS_ z_dm8vdBR8NhoM6`)(;K4hbJe(zFgjDE0`?1u^&fjRW#}Xfdxn@k!eJzoSO8vuiNA< z2N9;r^IDjIl}VAH;b~MuxutiQyTt+?KJ=nrkE2j(C?CRV0M$5=$Ay;Vd`JFOTQ{sO z&cAR(a9;pIlY|lkQmSHGfz@j@!KH3cgEUz$AAJ2E-axGRa{P&a9@4 z6Stf6+kH74I(X{I;r{OP+A|Wj-hCI|`e$!IJ@8->f`K%{Uwrsp1W6xGP8T~>ML+I82$PZ0R4Gi|1Z6m!%d^j?F|>b>Rqq9 z;SG4{k>~NJw}1ItFFMiRfV+H+fxkGnt>?Vy`T3uoNW|CI=8Iqco8S4XZn#;9ZVvv$ z7_hp8<1amj@89<2J<>&+VrjktCT{-zUH#9$`w!zYb_|)zCyztP6hs`MySE222oVP% zYO#mzH7l?*HI3MdpeVs|vzZt+H(bYoh!X?`LD7nlPTR=tcm=%a8H~QLAERUAN7_1i zhhb=gNGSc%oTKbD zH5Ce4DG{bjRJ9_JA4YlZa7Hz(zBWshGH@Il%O|E#loUff-FW7)XQC2yj6`ZQr9?oq zHi*^^<%ywXm81y2@ttq${6GHgOGhlhCAUbLQ4l;0say`K?a~L7VFgWw_BNDMKTUCj2CxN~hhO8&?f| zV^wG8n(5Jrnv@BLYgwKH!rL+|W?D1Op@`B7S^-isgAtQ)mUq+Cby9#LU;v1ws5YAL zJulH(6HOV_aZI>r5TyyK%gfLrfmQ^zX@gP@%d!AMP{`#GhLJX@M#fE(rEu0;W zlPLCo?NWeW7=Hep-RlHEcPg_(Q;7_8*DLMPUw`6?8&;nxFW^rfy6f*5&16^hbzJkA z58awYUoXD-#joJU5B}gwL%sRepOf#;|M2jU56)To==J^Ue*A%Vyq6#T)Td9bzv-rx zaJwPT+k$4}1iYVq1wX!P&ylR{W_R?S(YyYyKaK}p|N5zs-jRMIMbW6#MPH`K4NZ~C zq#-R}^wen5N|K~K*XE{EE|iQ>Z#FSJFo5b}6{U5ZIDX;~^7#}x%uWbmW45+{x#@CH zQK5?CILN!%Oo}K1*ECn#9q@{2eC@HH?q50Bx4GM7OzRLF7AOG6a3KS&EM`!`D1yY( zkrdJv5bHOsw=p>~)7n=)-`9hrt% zPZcuRu}bAwqDWOU@N+NPcHvNG0eAiIzLTH$i7FkYL)#y79P&`1Sq9S?)@Y*_jYxMSagxaI9%edG3({a+pKTbH``-luL@ znp?PCB;sG`0+bM#jKOBCj}q`mV>uL}E?*uG&Iv(VDz()D(ux2}VeqV$I!SXr)SpVf zwlkZ0Llnnx*T}#Hr?eNgm}HV@s!b5nFbF{4IL_%6bCg0Vr7dm{NDY&jFquUZ6u6;5 zi9)&7lp;v9WjTz1fm24Lln~-{8p9YzoWzK{5MdaCQmPr}y0g?lZQDWOM_68NMx)11 ze4)Bf`J7DT^sf~G{M#mnpXX=4@KO_?lu2#9`O@?E|Iw>2#ZT|J5BEN`|4FJ0{K+-1 zKTkB5@zAqRA0H=*y%^N*k&1zUzE2)Vi2lk#^!?~I2?C$^kk-axmEkj(G>iYa& z{mGyAfA)j#dEU<(eQTV2`t|R5R|X4dRHnz#ws{jC*z+u2W!k`sUL5@HKLy2N!3h(A zTCLXHapet}x$)!Zu1G|E4wB_MX69xkp_KX}6ohkLOuM8&P0)gkSb6Xh1+#Ae!OSd( z5ZHI>SR)aJ8PO-U4}klM5!}24i4pWCG36TrJ0>8OTF9A??+$+cu`f+ zz5NEf>WYs5h5|tG-M#OJgB_(Xf)|8zl3E=b!^VR)B;7%Gp`0gF=@aoNP zDyfqHbOQJV;D7%6<FtyT2Hf^s+N z*z&t?9XSI;8Q44V0`49^aqRB6{wXSr(X^&ruN)b{?7h6qIplw?dpq^cg1`Ed}wOZD)i3*7c6iHtub4hM<}%LbfVkSX~WWhGELOuG8Cn-O%tpE1XN?TI$j-i zdQz(|y2_e4@+>OVB_*}in@85NNCsF~T0%1c=4*@1SSy&8W&55NYQil_2mozBlD~yP zsS7SI-?`Ix{JCdENHtq(wTMFvta;OA=)3iAuovM3A8XnRMU;S!e(%iZMSw3vF|FQetUgzTDN_ z)9yEdC|azKODU77MBH1E>QI+szqXCDolMFMSIS|OGARkMG!Q5ON`MqIAfUAe6;`C) zzaZm#6s0wjuzZT>zV2-HwL#Dt&F9kFqLx3u!Y#CC3}Nluz9BVo_DXdA?t1}R0*D1D z1Ded@g^Anni9h=)O1VuK*kNL@r-Xs_RXF^@BBl?|!8T01^6Cv(zv*n8yXD$H_N$F& zh*Uyq2v5rSFiB=KNJ2G?G^2w#%NikCBbK73l@^0e_WFWpomC^^_*CHESq{Pj2?cNO zD%_awX}{UYI)kmSWe`FrQ;aaqpm93Ph(xSSY7y6Tprk?~5)})f5}8P74Q?{Swhd}h zN(f`9*IPOaBV`$e&Suig;3gW4rcM$`7@urU^}eH6YpF90H#f4`MPaiot`G)zL z*scGKDTn~byYAW*nqPL?o8S9)%m(7!FX6t~7pKb0^~v{Kdfj<#T_vd5MeJ|Q;_HX^ z9@`tX-d$z7T#Cf`*N&|IJg?U)@Bf28?!q*`_*g#~JQ{qemp+obg16?gm@-whflL=0nUO zLXQAC&RBy3&pxl0qcHJ>kR~ClkS&-Muc5*u(zap2;hY?<%(l8@%APW%5hfv7l{0b8 zfu{j<;GW;V87J;}NK+q>&_olhV=WO#Net6Oh7uH3l|Z{(ta#N5n7t!Jn0t9#1oD9CGY; z_L|NPmryH)AW@P)3k3!O#yBJ-1hiHleiiz_Tom0SGznc!yV@DwXcL)bn$isCT_tXr zIZn)!X*xZfo!Kc8VPC!OpNeY_%y`}pxZ`vYV%itJV&{Kbzj-wly)u;ak+F&hY8v&L z50Qirv5zz*=x|b4S`P5TpFVU>BvFf!xGXj51|^+2ZuDgtA9A$HQ>}T*Fh|mcwYH_y zcr^;1nTw*`4Jk*3l+XZD+0>3gSN`qUw)EAZNZO>57L+1FXiX`Bn{tuPxDc^|CO{N~ zFsY#}Za`6}de9Jw5-?0|I#EV}jnKl#YMZsC$Y`r9uY zdc-fk<5UtqV{ij$ldQev#&eH!2!Z7ns(9x3%$Mes+zMUwE_gry--oI<#pDb(g zP~9+E6pCNQOW*tZzxkUr^?$w#hihZF>)^AGzGB19i?7`F3c!$VQy8K0W?VQuD*mN}VUwt)>H zefOI#xajr4$#MUpp%w1p(h`hT;B7kl>J)Ce5nGrIP}n6KV0rA zwHNehp$vv$;KbZ?AZ>1?Y)<^BsVv4ca}C}Ws#uz)X&NaMkiv9zsgY}I%WmAd75koi zRC`h)W)vzRifXN4f)M~&$0j?@+JdKcJ+6X|4%$3EtyNc+l*gv^*2~T&XZ`6PBl11` z!>mJslzLQN$|M2wU)kZIWv z)fW843TlwwKLV0(1^BfZyn0g;rDdTl zqx%LsjaOfLHQxKdKYL@a931K(bZwr}jW%KJu3?U7tp%gpU5=yY=0x;ZHHnWZO`re~ zOF1pHhLjSFGvrIT*LL)m{>X66HDDyOT&q(p1>uyzv`lbr0tE0H9&FdqN^7V@Xpuw` zlqkbAKo}#oV;Y&XOSIGo1A%(2qAe>0#yKo*Y9$pYqa;ZZD5Vhk9&FboN=cZG4b!&J zs<)I^_rrR*@w4Um%BPf6dwwmt0olv-QqCBZR@jouU3BYjyzO&W{rzWFjXrbG`OCN7 zIR9wv z&xh`s3Z_5jD0AnVSM2z2Z|NPt(L;x7lPXZu7xlqhTZadM_JRJ?>NB_F&hLJwoaJe= z9VTeb%4*w062(|pUQB!yKodn$E@SQ4H0jOf(PrfkONHfDjQL7SO;+bam%DafUmqQt zn9$s0pw!SN)wt}6%jr+=yHl~WNzXZR1b6JZTi<;D_sMM+-Goh-z7Y@KcaM78O*heR ze(g5hkTEz2VNAbV)~0|Wq*Ta5P+-&6O>lANqDgi;1Rh*u*RKjF2$VOdsJi5fdI&^xoHv3A|i zfVH@^r0anPlX8T%L3{%U6QQkEqC%l!FJ~p1l0en{T01e)p@{1VmCHSbyQ0IetoCd= z&0N>qH#c``B1#^dOoGRJ=rSR|hE1#ge(Tl^t0~ct0KC9QA)N!41`h9iLAS~kBqAi# zwZQUOtqhtJ9NV~L{T4E}=O8d!_82k9bhA;ZiRAc<5ckYS{_Y?VWomFc(K=)xJW{e2 zB}rLGb=sm14a>3ma;5BLh0fx;CDlVo5*1y?=3x*Lr3k1duq+eYG~jR(#OA0snpy|} zB@?BU(pnQm8Dordnn}5YLBk6p5T!NaCZteWN&&_wpebS8KyA6KbGbBeT$co)k3=Rg zw55|o%7y8rC%t;}FG4T8|5w(&{HqcBPJ5);%PYE=X`o)c

eAote(;;qMWc51_HFO` zlXrXsxcq#;rufbcZ^j#H94{=5#Xbei5>7hO1@_Y9$+;#^j1{Z4wQtGy;Jz0g4tfej zr(9lchFXzo&?1qFDK|LFrA?!|m?kOaKuZM(3L*&7DI1w$5f425lrmk1q?`bt5ODcQ`xkUn3VcTpx*M(Oc@9b6Qb3G)l9U| zO0)JXNy0>uW+-Bc00hlW!mR>hmO%_XFGabgu#QC1{yxZ^flprGX*19N{V-_Sbo!O^OA3gmW*(km9 z|JB+2Vb%9Z2pD5f5B=JhqN=s>RNoUQ0rR=lwxaw~kq99K@0)`Ejz9e9@4x@TpM47; zfRDWY-MIaWw_aOL@}0TC;>*T2fBe4s&~Kf zCo2B7S)97#QGETDkKOvt5B~ZaZhhq2*p(RE`SimNUU%NUOE0|oW%S^E_u+d_J$B!w zOZQ%JWn~86KY7ai(<9&c()RPWy?R?~!av*Y6yb9J_@=4NTMqompQsOg;1}&3$L_x- zAvw$iOq0>77xwx$Y~B4UyQ0_|b~}UZ{EdFMq|&mG6G{ z9_Ra>NYl*pa?K<>d3I%y>(#RKJc)Xx0!0#BSZE6fYcShXhCMkAcoBlt5D zNUcS`J+Km1Uwr<~P|D~V&jA!5(j2tx^?0FmW?+R$w*V0tDrDyI2!SIvnkn= zFjilP7jl2SrSqM#JOEBWk) z9yBZj3HE%CeBVc@6qCs^*sS0zH3T9IlObDUPzp+jD-}3xkYp*=x*dwEWrUG}rverT zi?b&ezp{E}=|7v?Jn;WJz~o<%7H-_UpBU_n@z5aHf3;lQu{wo(rvKIiKc+aom zE1&zs2Ma;rq!xR(O-;V?b(7oc7i^pY(i~5$uHf!R9(^z@#bXy$s^iz+@VYU~%wg%V zM=@C`;r@TVv$H~)I{o4DjXU;lpV@yQ?z;81vxgT?Kfd?U3vasSynX2QI{5pqefhqA zBbuKpm8+FfRL)kGPVe7(>4wd}^LzNfD{ub(ebj!>sPO?RML(^gC>%5dF~zl}ZG~k|YZ_ zawz)}&GB)Jh6D7I6f3pjKs?}&Sa?KM+&R7gv~itsG&L6mLWG8qCDyhL6SUP+VI}(UQnmCdC)|X! z)`w$|5JV18N|KNgd6q*-1uyU*Ll4TAh~g50C?Gl)7CT*l00h!Up&chljx0%_^AtiT z8(PRiEB^V4v0tA8WvUKI^b{_b<-~7Y>)cW=pKILC_wnI^C25B^oyT5(6 zx#O9~KYJvmKVG!S+=qYu9k)j-BYf%Oe}8*p|3$BU-=)`M!$*GwTo3T4ANU~t&%giF zulboVdux-wc><)0|xg*`j2TQBZ6iHH>8{aveQTobFd#gifapd90 zpZ1Bwl^0*V1DBtNhwr)@U%3CyTes}l_sZAqxiFkm5x#%uQT@p2W6wg6bV`JwrgYEl zJ-hqH;ZGmF@0S-OJupyW7_kfYlq;XwDgAJFDXu9Zq1d`%uJgiLX~|hH4638y$fiXh zD&?|2Dsmx(5FQaXOI1wQ>f|dQaW%y9N*kjhM`|?pvXnY$ij>zmz9k_5Pa#wer~zSF z0b^wxMGvc`0x*o=G@y>>kXC_6VQ5k(D0N80)IKdt< z2Wd%BK2fGhwSlakW9`f`2ZkY>g#aN614>MaD%KD2PzszjIWJqomKbAW5H%&luP^U{m%mC0*{;l)i)?JJR(bIxWKoQ)U@9c!QI>7or_s@AN(qg*fF zWQ85i^W3w>ic$~?PX$zD8PZV)zwn-)rN8`}&$%Sk9F_w3WuJm5AQgDX@*IWLTq*ge zR4SAvhKJn|>okW0!@+TuW{{pFW)`k66!<=xtrialNoVCu`}0|n-QtXW#Aws|H$j;F zYp+IJ+Hl?6#C@OsnGbFF?pMEom%sjX7C(8@+K+AD{|{?}-d7KD@6G~@066t}U!Q`>L0}V%OHG4JiG_dx4sdkG$jOaOf*{{XNQNJM za7Y1Eo#3iuE0jVal&eg&{K{MlKk@drVCnEt-16l+@$9ivhRBgLKx&OknW&%VQYuBB zAa-CV=P)59heEhaDYOf1QfnjuA{HJ6Y#1!q2ohGYpy@G;Z`pvFU%_)vJcHr#8pyJP z02^!B^OXpNA|pU49L|oi^|9K(hp+}75tuCu*7HY77~b9-r?B3{lGZrY@1Z~FBZy0o zp5kPbKwFE@_faX8XwdDW;(6XuQmTW_xkWIH08=Pct)k>y znZ#TOYI#D{3!po2?)Y++9ZZcragHarDXNsNX-w4L)|_bU&+|h0e&C%ra?-7%9eonQ zB2>hCE<9h{`|Sq}z$`sQQCt$`N{NIg7zzj!F(7y}%(>g{Ig=YANfed?8I(c{x&tUB zsZy(u(Z)zpCkEZ&EyMok7Mt^U^|&FSAV_Low?_k1)wg-u4i>!YuI^>vKw=u@Bly$|IsKYr3P56)J{K2#qL;@4fU@2%&#Iv#oQ(6eSZ zTHHIm`TX;CZf?vJC6r_Zn4APIpTW~#ybHUoyBfd#AAkLhE!#F-b+pqy^J_o#?j7&> zKmOnwi^?4=H)=0`^Y%+Gxqjz4h%!2C@uzp+ z{^0VUv+#~rz2Oa$l^7=;e!RbL&)#a}`#@nKxQ54j&*3xQ`s%G-tF>#Q7Ed*#rzp=7 zSgY+YTNy+&R!4xhz5jii+xsrTe|+1Uo*J{Gyipo!L|JJ#TMy?0$D#8qpJ*>RKMFhm zq=YOSJ7Qy9&13P}U;3aIyzl+E@8^C7XYagUkJt#~ES18Dj4^Noc%g@aGIVW%oC$hh zVI5Q995gdB1xQPr6XC4Zuu+6&Bc@hs3`NE`aq>i7HjGvr%d*z+rKA;OU@Ik26a~7v z;7&hrBWGybk3YTncD>x&@mTP#|PU zhJKQw7-`mu+4lvNA)pI`HOaJUHMB>7wNRQ+6Fx!$yi&;VY?(|=au`(T)bUl*S?xGu zSb{)GNfJbSu8*I5W(pzTGl2!cf-rIheQS^#!wige?cR>3o_zMV!$2+gffu*p%8j8= z6P>~6+rv?Mke$g0LM6FbNQ`MS*jk4+9BTlcbKFu&?0}@pr#DW$t5&OST3cSDtSAT) z#ExNffjzsn({qPUxwVy5Ql4UFh9G9;`w+f@A1ZD%V{#Te=nT2v9l;TZ&h^TBfg%w| z*JzBf5F+h$Mh|zE*ZvlaN1e5gnq1?51OWY^CjkSca9(5VZExJVzuvU~FQda_@6bJnvj?R1m}{iqRV{x_tZObuR&4x*yN|`6qGTUH7som5>xU z3n?h@Jo1TLqa0I-1PSM%JViJ%vbb`~Ry=X&5SBU#ujm}cX%G`4<-sZj83#BbV=dw^ zgcAZCYp{|H;nukdEXjjn=E>=CF*a65UMb<;=Z|4^Z4KkngRqvJG02^BnIl*!U;!bN z#B!GMlF_c_1#VVKS#}^2OvX6?5^XYWqzFEULQQ0yg>!%u5<}LUGQ$d@n)0Yz4iJ}0 zuq3cL9J-ZW-f zFo+qEuW|h33GvQrUWMNAMK;7ptwoO<63NH`S2#=OdZ59{|XDs;t1Mh(Tt;>I+7CQ{2}*J6 zV|Nt!#&Q44|NPzCdk#-!LJYT7>hHQ@_PkAdHg3Rb=PV9A_SjQr`pKyuIdJJs`*-ZY zbB{b`m%LnFoW;e7te4cQ%{r!Qc<}I}{a!Na^}E^0o^$4Zx#7mE58iXn_b<9|*Ts(= zIdbCYYVYW~ZhG~#hrajV@h!VH&u`hZ1(B@buCM>|(sI6*1k$O-C~IGL)r}XS=Hq+! z-M<$3emJn&$iNRnsbr&Gm*0K-u_tsSsuL3v8}iX`sMB;{3Ox$KsM^o7QN7uiJ$rWX zL=c5_C1o6WGKjrMnxa4{2q+F?7y_2NtLO{|*tKH^a%-`0`ZQLG6g~v@Z{Ln~uZ@Ml z8dfud-Y7v7h6sEgY%QDtrvS4t!~j@0-m__w81xf9+3TT~rXsyAJJhB#s zECLc3vgLvu2g2hiPl^US(r_3!&6yCE*0%#uNhqNiShg9b*0ChAjsQ4Tp6`)Yjwmsf zN31!nRWMblVsvWJN^PZfphah>?+O?Kgc9pL3q;VlVNXg(3Eq0%glJS7wD9~Ht5}dD zaFILqS!2uel-x2iON|m?4szBawoO-3cz@_jiW0*csi7z8AhBsPX}MHnc;A}k+n zuepVOS6C9{mpxP`>&6egcKh`5my>RO8(VS2YIEejCi@u9y8rncz0G!3KZ+!=cPCvI8mCH5H_x=8G*spnh(AP!ox9Vf}A9~`xi!R)A z#m64H|2IcosT-+aF6Ml0IvP80?Sad8Joo&efy?t`veB4GR{Kj{u1C%!c}yPpj_lO* z#CfUCinS~ottP{cWbmAf)q!2Rx6e(^0+kq@GYc3g;LG=a%W7hw?0Sj0QLR!Oh9rRX zArfXJrhr%WK{E{`g3zk8FjI?h?C`S?g0Vap;>=sLr~}|smLg^6!oYW)U`)@?$kn{S^GD7&YaKiSZK_pyK8{7F)8ipCb*u(6VPp-o zb8rMWkW(Ob%vKQ)D#>LbNCL7f6e*H|0|t}8+;oFpb;AvKLF)WqJ&T)hI$bs~OTnmsXDmlyNF)Sc35hl6 zTg@lZfm?Q(Pp4_IkR*0h=c-`#gbe=3eQUY?>AiD%w!h_NH)8h6D}YOO0W$%PKXe@ZM^9n)fkP0-{uyI8-2}Y* zZ9t9iv)A5)GxvV)H^--F{##Q!2uz%~$)|80h z1px*tLv%)`^pj^!JeNmaEp9fZjJ0-|bM9*{jIml8E;4e|Pm(SrrroiH8EL%;lNAb7 zvQn7H_og;i$EMG3O>HD{w0L&;x%sj2*-LhuKUSTX0Xzk}wt}agdzxE~22E_(fWu42 z@!(^Ran4L(7@!h{SjjT3dJb=X`s*}0a|Vb0@{2g}%u#fg+XyQm;;C_*Tv$NeE92O) z6Fge&!LkMnU?hR7B@8KdqcqKCCuT~uT9p=7*Dz>zSh0X}4u&NPqmdC&*W@sk(eM;% zLctot1;P1{?1&LSh>AzV1mw(QNnq7koXT^gQgF3d#?>#~O@H?3yRl{0q#mqhgiMR3 zRG11viYo#2JcX6vko#E9H!rRd$W8>hBUAjDf=|5l8@^-aJ`jKXMq@{j)<4}and{m#cY*cQ(=88>Qw;TX2cqwq*HXsIa4|w+1K8Dga9>lgCb3iCz{SxH))41g~ z{|ul3IMT&g!xS#I1gyLCrvBmAfZcml{1;F4{~t3H;x1-eI{$MHuF z*`m{189`$xq^xUXM#3v>rj4OO=2>4BNg{+%8bFyMk=9Fd!=&x{np#>23#ljsJOy@z zb!Rm=Gg8DQDVss41X(K_U{2?$wrqG}=UlbZFW9ia%~!mH&cERrZ2Zw5gF^{|9X|21 zKaWRm`-;oSl3|9E5;-&bLa=p?1u4plf+P{uqX>~>R7xeZlLXy7;}ni;!31)M#rn>< z)LNGiTj>azm^>v#1WBpRkr9!T600Uh9(f2_6>iNoXy=~I_%DC-X^iwSy!ItO;d;l9 zvxKAsnl|s-MkxxUxdS=HfmC276#XG3?H*iOa78F6wj=?t5MUCJAoc|@!$OrK8gGnI ze`S^DornF+8f|DzqmyMgH0apAUuV@ z19F|iWe)ZnS*KJjBN!FfUTr}p8hLIo(iu9V5z6HWeB+)6?8@q@a}E;Df`lZ&aGp|D z3XylS>`XgN4)>fnlR54(qYc6$k!U;T7C{&SFaScMOkbG(Q&I>;Nt?x0o*rf3I|yst2V5GmY^dy>!Fo@eB6t#lHEyK+?g9 zCm+K1pE`u$aF|HTrUJkiU38M9Hy)L%t+9Hmb8Pw1p=V0lDpTVZ|JH{a?c^x*r~e6$ z4^Cy3C=L%TpFI2e%dVXspWcq%#&NU{A4T~55+dD4!}D-rd8yDf-#^(;bcG!cSu>^C z$cy~45}qg(Ty(ggrQVwD!ckg`K&6sg7!J|}TNDGweM2OLLv`F&^@>#NG20baEceS8 z8{1H>MkYtRri|{JwC|klGLP!h&1u#|ZpNbzzxM-}f89?)D-Rw7;D9fE><@A0=RSio zrH)%$KqQE(LLv}~Q&SjbMpb#L>OhK!m>G_UnVB6kmqkNP?uMSxB5>%@()u$)WwJ9`NWJW_6fz=Z$ zjLe_}385spz{Al_7mgjOo`)(4c!D57U;=9*Q>rWa5C7?X>dG6g$6Ma?(>y%Bil+0a zoENA;qF{z`;E75^=fzb_`Z4;&5GRKTPS^~h6(c9G^gQxC2?+yFDUkHwdl537K}8Yj zQenPU!E`BxsCY<}z}yA<@Y{d!2|jUpX*kM@WR#lTDAPk{UC*&wCZa_lLXDFv93v2%vVfxxi?PcgeGlcQb~W(vSM3;|F8e5^0qQs;!H`$G``r4&4N zAhCY5iG*hu+Ok_G0iB}(DO&FuKC?O`o*8V{(AcL-~0Vrqv__wK{={N zLds1Ar&G1@=E3xAGD@>SRF3K!I{GvMzcS{O|fZW)`J-iA|t zj^1zpyEcG5`|R2iuRS*UHE z#6+&FOr{mgn4?lCJh^P$@NBXiWTDlLq*sbsmGLok!Ati8wm`WQ;Z1LRGZNp&Uw-m$ zaO*9%yHJB72#l;n-)I*~2?Zhgx}a5OV3=76;z$Y}XUR1$AfE*p;i#(%1dccs0{#nP z4badThLFT;3BC^|i4+#P93Ynfe96LE1k9j8Mj=U19HOWMDAi&JDdDU|zT8FsYzJja z@CZ=l09*=je6@qsBnKSBR|=7o2uXqj5SJy_<2t|Zr{5_)`}xoDnX`+Cf{0wML6RXL zVVF6SfF?%bjFXZ`3MNlDRO5gTT)J13#$ptvz-VN!w%Ug<;iP=qHRjavDvAr|Aw1is;<8H0?4?EC!Tu_!_f$V z6g)fLqNp5N3Vf%iA?nQ>Gn<=u>dAuc{MsFK+il8!5dcpq zY_629xq#GrKl1i>ziRj8*GX*NEU;~!5QB=7eWZs@awb>lyZ3yXpZ%*ZJoIpK>e03* zpMfVrX{8ydygiUu3^j&JAuX5!r+p@94KN;glH!g?h)$!w+8-0s(dXJC++02M_X*E5 zWWb_;%N;Sm3h|9o4jQaEhGUM=_Z$8Ks zwVq@k268rlP`GOU9$a?8h4{N$ZgWa0Qi>snkg=svUO)vN8{?dk5<&>J!cfWgD5w(E z=Rr5T>s7eqqL*U2Jc*}HpTPI;`94Nx6J%WtV+p60Ph(=k6m%xAveLmbk3VZoVw^T6 z2Xlv+4qIyvT5F#%g*|SqZG)Ww!w~TccHB6JAwh%y>^YjXlv38MwF=-mgIa){1B=+f zDrY$aFeQZ8CZw2`iYi#&ixGq&nZ|geHgBEwd{2mGvy9o97DzDGx@#C^8HPy);Uv1f zRadH(M5sa>Kiub|&#uzSQlJ0D3Iqor2e9}<1cFGAFF=M7N`>`>(*hxp7YUlRY;EjB zlNg~Cs1txqwc5{Z_N$lw-mm`7qznjyhrfyD)B(`j-+-bO!Y2YUU^M6>n2w>GSpT<5 z05qU~<#+Mqy?5D;$<4KIdu#B--{0!Kw{ZN~HbKnHOmBP5Yu+fU(^J6GS=@HdUBF6~ z-+2DMKo3Xw_|p$|JI-=Y=!8v?ZSYFr#g|++d%^F12&lJ!0Km!%d0N2IhQISK?(BWh96~8!G7WY> zRPySa(CMuq=`#ka8O|K-;PapS0zdWGbB>9H@&rnef>#RQ zM;;3$*^|B*cGI&uH-~guJe(!Paa-87F=pu4L5OuH%FZe2i@JkT!Yjh4%V|6-}N=vo`cC9>vM@bcFfL#nb&6uq%VyMq?P1y z>50tur47m+thJfeCKV8@Q|k)tVzx96rm{{o8LcT#HCgL^Pyk-|$$n@K;D4BfJZFtw zsB4OUxoU~mf2X8Cq`djEQpW?5o-b&VbWnk#ma^O;!J!a5r3Da^oNrpOtz3@xSnE=D zx@bn#iLDb;(=*jNmX=TF9nQHZip-?RV7gqXn|{{z$Wblu%YpR0K|0L4LdTnAt@zOo z{mvLJzYtg&02>=XZvcG!)A-EoUtV;=NH(^pl}gp#V6f`IIDhZn`3IkV^7Q=9U9+dp zEV(pGT$vQC$?Y)9P*@{0DLb%vl6f9FHt!59+T9{wOo8J7h6(Xv2I>~fCXlF?L%G*0 z?98+mT^>V@#ftnw2=oI1)ojtq>Y6LM15sFukO}iq39TR?6b7rhKuUysJrn}0fwhcE z;6qxyj$=2(S_xzll(J<{N|13#or5+8H7ME?m$5O7koi9DKeK?7rohNC2LL9*h!k5` z=gM0C!fT_4?TvEB&s!^_ng0tF5G`1zVY>k zaOmM@5Xpecfx>0`E})Aqxe#76z{bmV;p<fV)6oP>xDy4KOh7K!0Nx70K6Cv{a|4KLQq5mc}@WMoG`qI zYxX<@QoT zSQx=jG22$vVlHqdYH7Yj>V+4%JNcxjnxR?R$haq{|SOCnvFC9B>2;W6c z3^cPT$coSpB40|yLdZ_i@ApTewE-B5Y|WB3hZhTTcLvuE9LFjQ=2R5SXVxvYv(X`T ztjZ4csW7;vBxy#mi~(7;spaaLMuNfNQo%z~uLLtm~81_S^N6~MEW0kC35 zNeB``V4yV?ohB89m{bA6ya2#Rt>c0jh9u{qhn@nK1_M--pgMW*naE>?U_cVX2Vqqg zIH7Z73{*&=6?!O)fd$ZI4HpGGzj>B|Ab{odfgZ;U$IM!59(IPV9EPlz2x$SCY6!!S zp+_zd#7aRI8rC@>1Q3)wF3-)gr!%T1D|)*281A-zEC-ae(SzG^S+-nRi)-LMbUvWLaN2|WGm)A;(g zoX{qBmB!Yh}{^{KH&xg;eh3~_X=%}*~ca3{}* z)(7n{at;LnBPX!tG$+0Q0>z~$A|fK;3-}_yTDuKo1*$@lX2&T>TFesU3|AK9>b_59 zX5lQuBcf1B_+q_=Y^A`^SY#xS6d54E7Q%&NRh;SfptFKnQAD2B6iA85Rs$=Y4wLWG z$Qm@JCa}107GxRLSa_a9ZMungqK?evEQEpukQs}@7*f7M(oYZ=u*wP+#&K3;+3>zo@p$89hV0SuXW=o~LXU?_wbp0no$gqVot0p2N<*cZlX z+s?gP_wGKhGnm;jiBrp`P-H2}Pd@(q58C}71Z~s5@Fv+0RRE+? zFMf;2SE%~pz?ezq#t?67$l$<)YVGL;oHf00E=GVtLWSgn)>*zlqkeCg9LkMeFzhk_ zsxY?A>!>j!SSYYCf+$qZshSpHKuJB;Xt9vUJ!M|HZP#nZ#_HjT-dgeKnZ>U^pRayO zF@+_^tqOVb+rrYz8@0+5k)zzPO<8d-FGg!Rdum{_!x3SsBD^h4QnhX6N@GJgtX1LT zx=SvP?tS2aL2G)lG9E+-g8(|!Foi~DG|F)VAtibS=ni`rP3{H;T(u5yj@HnRPC;hOGltq!Ph;7cC{$ zaYq{#f>2WmQ%X?<63iAp334RScN)vOz)DfT7YY?mFpPD9P@D^pR#HUDqevZM6FF16Z*Ja>f@?ju7my=i? zICmsrb0j5RtdEaf)0mjJ>bYm1|HWjGEV6U;An-3|=Dl!sJA)@)cID-h_kH(!rc??< zb3CRX^eG*s7!6ZYYZW-QuA#s*93Dii?1}Vi} zp|Fz#w$JaKzJ7k+%y?-g#?s<4{J?`P4C1(gtk9^I%g8zj25SXBd+#wm`~1oeKILB! z0P)}1dX~_?hwXo%JCFpSF4eZz?!V-@PD5*Af(qxif9gkkU$+ zekth2L9lNkbMvvMrW@7Lgz!a}XByG9=cxo*wD$aL^^qn5@*t8ga$1S87-u4RG+-Gj_yAWX2(34PStj z2&^L*kg}-|+{qKkhG@^sOnB+$^QaY8QCN+W$vU#@(WTRTWO-S)c5L>)e(3SjNnwhO z%|^4xbD89Y*Ed!b&XNF777}BgLdb#)EUdL?$`EBZW>2v;4y#sE;S4z;p-8|9Mi|GO z=BXQ`xeJ3xCRs*_v9R)7{f_}l3@Lz^8CBs!TMLpBmIPUy4|!1jT~Lcf`&K3`fo!&z)T? z*D7;o&aU3#ax-L5raYxQPsCEHx^qVPg60CIop3xS1U4%Y)0JwqIY<%#Vv@duD*5Y) zXbFnON`yd?2$Vb5@1RG+(JFznK_`1=*v<~R%pFgXbb){&5oL}!gX0l1FTT){d(IJf z%$%It7+kW}zPOEt-8x2$@n1Xmh{$uynuw+WZb~J03dNU?&sJ}`@TFV!ZoXg^MI^AW zwgNBmk!CrHOe6F|urP?ohYAF;VGffj9Q@*wXg{+8U6>affc@_@{k{XNfv zT8{_dOEotQZ|59~E9)ZITZw|*)hMjbB0z&ZH=c6O5B-W)jasS_M!Ug35|8yZv7TQ+S9dwGVV!&NNw+M|&!@}ekG=h)<~a9W#G!Xc1S z1>^_TTB8Jq0>x4y>}0<`zp^w-|t)NciT5@Nn5gH%eL$& ziQ+hklQ_YE2>}A65K15v@^C278HQe_)Ang;r*!7bbm(PDPdjCLXb-&(?V*LCp#;b< z1`-;A0Vgqu6P(0}?O3*DN!Dd+Uw_xN)_4Ap>^K>E;nu);=J(fr9z9#q-fMlg_xs-W zgV=VO^fRKUJ~UL%`&qHIQp0Gy9&9XCFgY*?tpcQ(!IMb`pFeqQdEeZLA8RSs5~hmQ zYRnX-zG|#+Tw`EJYvkh4%dHp^_+S^qO1p3@N@&0j zsFP+W04W3}bI#;q6__9)L^B&cVfeaU5ksWtE=69nUs`!MUKmM?x05= zKZ>a8x$0<*;w-a@87d^MkJLCzQd5c|ll0QLekXeq|3K>#Es0OB$8MPQ5p*v*RfD5h;2whe5*>SbH&aTMqCA4j`uI69Cj| zjdbB_i>yfVOq`XdR%yna{IZRcrO`?SfA)oYJ{NARU-kaC{Hw9Ur%&P&_ug~z znDqN~QQD8ZfvO`{@}tle#T(N_@3R3@Cr^bHI~K67m`1}A>AXPZ42)v1tGb2(2RaB7dS}3EY(sODoZKyeKA&YBI)=~b#l?E0`#DNt%q0BGh)$XpLRT^}u#_m-Wxjo{KJ|&aT^RXJ zNZ5}&7P2xtQW4Ew0f%mDrSs)}tM}O~bw{j4tJjSWpYNX01siJU8Do}pUBL4ifzO$B zJx|u*^^O(;L{uW8QEO~S%#+N#3oI{U#aFW8QO{SNia@%mF*s30Ww?yWXrv~lw;;AH zgo6>1EJe{aQ0&2F4%%7-G=PWiIbzN{y1>%4vX#JW~_V0(^&G%u>@$b6V#NRoE{kX4^tvT zV=D5xrpQ}HvMxLA^0+@fQrUXt$VjkVG;H6X;SFQsz!>~W8AXw!zq*QqGn7do12A7? zm{0mRmUPmSozBXW{qFvmr2XMos1-0xU*=cdcc~YZ+uC+}R#M*!!g8%Ta@CbrmOlHL zyFM|m?18q}V@x{C#kNSGOG;09jL8ysayqKL^wzyEssGizUuezsdnZKePB>5*>K2*K zvSL!R4hn0rVe=Rjn&jllvg!5{$_t}H#l%*~XNDGrg@D#uD_X<};0h7+op3C|nKfhp zq{bi&eXOmtBV=iTkk_X1*i#TsUA_U-y zCr)otYVY;qo8A}trRu46%eCYF+0ZJ&bz7c`w9m7#|z)N5@9| zQ_Uqgv#^5Yl`hJqvRhhOVIm@>){#%5ywZrWy|?VHz2HSxqP@6^t)pA;mw)h4Sva{u zp#bD;;RpUgY~{XIoZZomElSH%=z?BfWgos9+NCc6Ph%|_p)fyhLZWF?a&kYu?37#;6S%f`L^q_Swedm>W z{PGQGH*;Kc(ROrO3FeQ^VvriR?&9n4@BYni$EHy@P_N!ofUlj@4oyQBc;yO zm+biApMUpzsu=Kr$BqH57`SpPu(5{udp?Jc-ubB~FP+?e>8>lT#Kvj^qypq;mT>yS z(>Ru_7R}X_#Vf`(Z`!ea3;41t0TtuazAvB|X6QF#_sH4hQ(;uCC3!!Y>-6W(QpyF` zwyb%4H7^dV`rg82Nq+Ok|LiY+9B+98(2nuBAN^POi*J18;U@B@(r$Vv$?{_@n3HMNhEeigk3w&Pc6p%UJMu3E7ggR{gEQi$P+ZSRO%yB zBaL9S)pGOw7M@NM(Ywfm6wsGz=*|qr*SYuEaBg)edf@nZ#&m(4nbAmKYMKL4m zXD)7brQb`*5UsWCoTIgVBN0f>m$}Z#Gxi~ZKx>e|`oznd8jY1AO}icwoCD@N?PJVr zKmsDtW%ffO76cgOX+utoQWOHtluO=_7X%Z9$+y4c#v95{&duA0A9=iJj1C0X?zx7Z zc=~BMdwLnIr8dMk0npQ0^#wLlnj5ebF%kK!C}2fpt>7z%#y|~kxb+rvQj0r3cTarc z%-lzl+}x3w;t>(dpI=COfzGr!$KjZ)bB>=O&socY}p1l2Ur8BwGmWwW8|l1u(UFdFCBXV2UpH?&-PlUyVjftoGxvs4qo+} zKl6)2wV!+g+NV$Br{4I6{@m#kA8c8BsH_I3wllr)ZP)F+`c->h4JlP&9(xq4GpFDe z20a48i6PkBz=%VU1N#r$_f)6XStUPr=OTe7u~kG`D-Ix% zF|iUj&8$O#)GgbwiOr3-zwE|6uY2_my$ma@K0bHP*YMd-f1z-NkaG?saICl}jBSd@ z(;{-v)B3Pdyr3A9n>N*d<=5W#E1Mrb`~<#w-`8>c$)oU%gHMdy34}EIQkdcK(fF~W zGk;>OyVE&24q#qH)~9(GYa+*MtG>>crD{zhf!F5opOx01&t#cB0&Qic2~uiGteYaj zBnT5=ZUCqdq|Aza4umHzAN3}7OsJx;Qk*TQbEfB(mX;;%r%q&T0kEty1eGQjSOk$r z8+VN2+E-l0;W#6#*3ew-0J+0>WfVi3>R4H91nRN`kJdh`M$Tj3)S0i!`+|%IKKLezqWkBE}NQP3%$%HuG?Qwxryu5!LgQd zdZ-i)3~24UZfB(^DCzZkO8^jRFWNS_^{SGCn;zffMd2vM-*G#7^T*Kq(XP2aqX5NikX};Pjio+SJ)F?KFkmjHs3Bfr@;Rp%4 z)*6A$RmxgVmvk@0%ME=xx@;cDwH~IwLY`BvU;zzc7d%+hqb@UXWDJyCJW~-XQELn%zaa!fQTj% zk~NLW_3b$15yNBHYRO;i_tQtLMH2cxrOqAb=J}nuxWgcV5eFjjv`<%!ZyR~nb$hS; z@f|y-VU5LsFFhppf9a5MM#wo4Qy4=)2f&Qa>WHuSa7la10Z~ej9x-X{)AS`5Z+_qI zm+bbEB1chJnB0P$!WX~%HMBaZ>-5vJahiTH&&}OLI7Fb9$2`GAb;SfHI6_1%E3Tau zrnoQ@xNrjyD}Gk$zh3{36VX;yJWWiyNMWbeyq#GM>c9)~v>=-sQJTO3)A$ub-izLN zwVK?$30an6fGQZx8)(g~KvW5*mzU8@moUC%4DHS`cE4~p?tAb7ctZ}RaESW_0@CQj zDSYx!@gfwR1XG))@#ul$_|m8EhwGcX=x0yndH$3w%&f`HEP!L{#=ZjJ^z*tK@E;=z zo%6om%2I>#GX=~jd49vwy3R~GWUg0$u@NiN7j?1w$6of@+xEWnrRb*}EZux9{`&v= zLwxZocfWs5r3ZtIp!}e*C92&%44RCH*w2d?S=O~o>V>15re446hH9{L7Y=^q%ee2s z{f7sJD_b&~nwW`K`@L4~taW)2qd=@33`C4DX{$|S9GvyMYBSGTvCUhgb)_KX09}HZ zP>3L;$T(ZTI^!73T9;rQc}kZHyOyCCz*uokguuk)r05ypc~3DzQ6n{ZJt#$k&iBd) z15TZVwN{|Gu!`r%_fB;>{e4S|%{z^;r$Xj|5~&Rpt!|B&U!GWbx>J}Bt5EG6jiR3{ z`tfDPfx5;bCrH)v#h5|@?KxwOkRpIt#2VYE59Co4b7OZsUG^P{WzaHvt)X$zULWMA_C2xVbBtsd(>0vlsGq|S@o>gSt2q_(26)D zkqVSd@7#6iFI;}jWq9z>hos$JwQs!bhxO0?!oS5|{N*R`Tkrqw(|UlG3Hs({laK}9`NI5OoTO0GpR9FG#yog8-_Oy?A@|s zqB2T_0Y=VFRik-zhDob7|bC;@%NN$KKXB6|E7=r*!zA1m>dF3ia&b8 zTk*jD{RgX_U$SuM1IUdlrGu!D|GqC)gahi_4VG|md!ZPtx z$m%9$HI+G&cC5XtnHP6t;%1|gzo$_v|4u{n)mgV6WyT_LLI#kCl|(Fn6ComTB*L1I zfnBLoGHE|rJM6Ap_@0)?X6OMpf&{8?K zSI}1)A*i7UVVSux?nQgH4-EaxXb^0Ol)`eiH}`mJ<#!j0{9vEa>cPzttF>jMOmNQu zaFhs2;GM(D+c`Bj{40}{>cu4vdBrAnX723AZDtlm8iTjnh)b0q8sI$7(pGoA*=l_u zH)g>PgGr}J`=sl>=Zz7-d0`eZpw%ggM|4>CR3_w*JGY>ON+9t> z5Ib=(fjuW~ZLI?V3Iv9DfvoMS9}B~qeb6Oj%yy+{r@#f8eI#PUWxK20AHWtpcw9;`19`c1u3|Uyr(mR%m{IeM(cH&Tuf}N9FH~)GN;Kj7k8%|q2 zDvAP@NEESSW=8}Lm`OwkZv8(clBhl?rWTI6O!7^)h1j^OfGIlZJsx0B2o2MZvx z*5%GglYobaXkVb!F^?DlQ6*$Gq2Q)GR?|Y{=T177Xd$-tpdlP_BE8(2#Zu^9q8JrU z3q3}`&Mi@N%Qi3AIiPfuIIHKg%q*DV_$iZpwkI;%H)elq%#qxf^LOlAx_@D>{+spg znHeBVm&(yi*S}!L`(JeZuG0AA2y$g{X0?N_f8%jE{FTFbx{@j z!{X`^;y4F;9%fc%F+5tv#tkF5INXGl6K$*}1v*)Qg{3*LFDTb4=%syF=TP-S%(l+D zs8M2LGbm=%21ao5i8(y^)u)VY+uRzvM2^2MrvRJl0}{V5AdQ)?DhlivQtINjfO#fl{=a*<`{9PIiC=5xKCW`?gd z0;Lc_L5ahLptNU0x%!?6G67>u!mgPX?$kn>>|1g9v79JPojv0bZy*sku=N#}2b7u^ zAfBpPjMczX6~UONY1kJHFA4^Up@#f0s%!GgK`E-T$6JOP{zOzpxm1G=B6MtlFFy8A z`rz3!CtD!p^2_S`J99AWgGu#wU8K*6J1jiE|PXDHM>Ct8xGF zS`xLHv6A1je156M_+l#_1wmQ9gms{<-9RMp1rBbl- z(y8r#cxHaK>XX)9F6hUx#HMfqQHk?@Pjb&Ide%TQ^GL16RizxhTxM zCsfr$l|iDZEq-|WMx}QTf>BXSA$wjZ>~a7L&X}WFvTw#FcP*RZSYq8w;RME-f6&OE z>kKZ`uLNUKX+1qKSibp%FT3(*uexCenw=F0LLB|ZtUUbXNAj$lv52TJB)Z|{yXaLv zbOXY23G*wc>Lk+fG&o8)uL zVh$-09T88|*xysqYNvqAVB9d5fX>JBc+o33oHjWH(Z@G=y-~d`hUbI$PPBD9_2t!0l z%xHLiQex^j=CduhN6*CZr&pYv6_AFw3WFOSr~xPS64O{fJQfje@|E78#rmPrzE7Sg zC(DL#)R4@!tvS4uCkOk+ETkffIS}X0ecL$Fg;>=3d#9AA_cVs9x4-OF*S~gb*9caT z;LOv@c<_HdZ1a`k96BwRTsf&<_|mIr+r$Rs3>^^aFNSw^rZ$l3J`?3W1`-nr&s?|iE)e)fe$t=Z;Y7lO| zqA~J+ytp!W`_-lDCEIHoI&ryt_eT$Z{f^JiKYeEhf%YL4I%Ga zvyho$A#tWBeprX+O~Tr-#cp?|4|f-|KH?MgszI<@IT`but!Sp2%Z&@QcRdtu%B*2w z?k9rT0^CV$KIgNlSA4&eo1)1eT~oSICaSOyoUhZwxz=iyvworLqFE1cW zM6yQi$w(w2i@rF@Kw_;UMTF{bMPgToHAb`tnAlofa9YZpS79C2l}3d%8tjWNmb3*7 zSqXd}!U9jR5RjQQo`LQcE{TiWc*I%=&N^pfBY7XP+!S{#b?$H?_E2K&k<6JR7qVD$ zTl~FuN9(l(5omqsS8EofuokC$NA2L4@PO(7un;3#Z`}puiZa z55i_S=9ZV>qyRA?^lE4>w&l?Sj~1qD3Y*yuF+U|DcZvkNGO>{J3arm$5$7_7bJ>HjYtl}1o-n<> z3trZxROK1fVgSf!O}3t#z$a=1pi14z*f!EPU%zSFyIsIh-xNj1Q^A=|>z-Dxf8VMx zhq}%zusE$P5Nh3s{9q#Vya`+6t!}S(q#6V_R)W&aWX)y72s7(eJI=K_p8C*I+`BV@ z%s3JF#Heb2Qh~yPk*?;+i~_-kD>2cQkkm92y|v2x`awVNLSo9DfptJ?3MgVko;C?N zYKgTyYcfkHF^EY(jsWGcuumWsfritd!lkw|80plDv+$Zruio&~vD21JHya9kH(9Mm z9(`%>DB}PzkG8UTNag%o%LhFtVoez$t1Q2e8sv zMZX(EYlXBMV?$*Fn%zEzh6gb7^eI`H@7U8%&RSboCkBZv>`@}Rn~3kW#yo6u)BbLJ z2lV}H^d;>f0&OliTMn2itJa+M%2vEGXlsS_#Kz&_w^1pWBBpA$*MG3v z?;mWY-Gk!DFzYa2uU;($JB0v{f`O#Dpk++aO7nCfHpL1FRHV2uR;s?Kto*&!WRoOP zvevepQh6Wpcd=mq>7@4=!_>CU!D4L&qU`C-jWBw#u$rn555MK;$&;B78a3?=mYBj} zM{0)+_==rZ(BB??6sxe-7A`k%;+&&^IPln!Sh6wE{j19Dk8N=YfS33}6({0lkQ@-F ze5SzH*7rRVcrLfCWcm8nja>fXAK8wdeEnPSnyH^ZULCk%(_FUFU0i5Bo@Dke<>+9^ zxtnT!a61E~es031b9rX$X-)iJBdrc9qR?k*gv7fvei>(z7Fs4ozu!TnTEg{v_TavIzl^2%MK?S! zM1D}B)plEgFvQGbr;63NmUWr2B9e>XjEH;{BKw?m2klyq|GOv2_x=1-w1C=~)y-hShG2N1r~9dmg#}@kg5rzt;pEX)0Rilj}1ptpF9U zszl5UBS^T5Eg8x>ivX%UNNT)1p`wuyGJX)`eQ>O4ZYogF$)spr+lvR+D*=vlZzX zk(za`YDBaY?o6#*ahr7+?uXmdtKC3Y!&i;hQ^zx7uG)OF@ zFG}Bey4U;jRhus;rKT^L82i=M;_@ZT%;b68PxDp*8*kdWAx=_rq+TD`x^vsuHFNhL zdIZ(Bde`s2Xs6V3yycp&V%N59|K}LVn>W`QJHLAL$+;%WotpHYGB_o;=}@bm3W2R6 zgiIvqn&RHr+7IV&hm3RQcSLxkCaS)FQ`O0>6JhDHS8cs$>V<<1&f^@9^_t24#kr>r zr@aGnS@MzC*!@o2H%0fqT|gSZ6e+$1gg3HM*8+$jAXWrb(YWDNFF<{=f~wZovF$QE z@bDoFY#G8#YX(6%0MY_+Y+zy_Oc_^@;Gn6=Ixdi4vh|G#IRdh)+|g7D_N zwCm^o=8s=svmC$u?q7K7!0O!pT=Dg>SzA=tSX1`HTOsxu3l|W<2%vIS53FSAyE~>h ze9maJQg7Q3MgJud8DO80WJMl%zS}rCQC^PYem71(d1~(L2Z*TG2*ZgR8Y917_VS6J z{jK*5{_)@4kB|K2XE!=iEc+r?ZHl4~TpZS}qcllZdforAO!(tjxCgA0jlNQQBdzuZ zq{c*CoQdRJWA5mi;?C!$w2B!+L5Rt)a?=3lCbs5>Qy~4&cP35_ z#m*egjKw*p@a^0)BH9I_o58qMd3uL9DQQoW4uF@uZV!9I8d=)L^d&nmbM$FCA1 zBhD<&qFSz_y|N1D`xvea;_M@Ha?Qn8(y^nb;Q1N@;|=Wp+SgnrsZ306R7o$D<+Dv0 z9vq@>FOxLQ+~VrF@iVgvCsxjWq?IQJ3wEXrJDY)0 zA%Z2CT%^y$+CUNwij+VF4q>V()fU<*1`8vFTcc93kaI5a1r-9V)%jPwezz1(5BN#;lW01s-cN1p5lhqK|_mFe7J_SW?2bB?RgWv=S_u5Kb0ii$BQ_h(O%FgV~9f9P&# zRtUA43`o^O=3ODHDa{lD&<>I&#?GcBvxUeZ>)e^bxx%b>3I1L~U_Qs_+X=!gAi9M; zzJ$RQrCDv5s^dkk-Q)NAT?`CV;9$^MX#$=@b!Z5S%^uQz3M~p-#y8>Q%o!A`xwMvA zZoILPvou8~>C1*q-g~St;O$Pdq+cr2kpgcW5_Ek!69V_OAroUm)MwFZS9^F00Xlw>{w&9|LB z5NFw;jHOptyDTEcSl81|G&6-Pq*-%Vf;ZuLdW@B>1B9+C4yV>E#CbO3M2v;ZhQ#AT zVf3GCVfc<#ocuwYXZMx@@1}^=u88>sy)6BTDDT=#WTBI#zcE;;y{ehUf4-V$`~IQG zxVco`A2PkTZ~`L$uQAh(`5vbfD2C@ho;r2cnT3UqoO{nu;BVer8~ns*xpw8J&z$^; zWn(^k;osnOJjG+igwU?5YvaFu#mLA@Hfqm5(pgNu(e3tUi~dX^?yv}29_bK3qYw#m zxP6I}yHjUo5@WudR34EZfQh`dEmLb^9M-wEU~Tu`b4!MG5O5N}jca89U8_7E+Pq_= zwD)z_>sGIgEK5-z96}r?h?4}KFs7$2M{~7{LkAB@s3KC9F<7s`4?=w7(I>30d_Hyj zBsOf?01=XAt7*b=-597{y|l9O zwJghz`M$TsF_oln+YMy2Q{;DAtzaN6OJuBbEr3v1yO24%kUP7a6=oq9mlh&tGI7Nk z+XQgyWG4?a8L^re3d47KiYMbFy)(0J#`lBiauD2_^m}&8EcNJ6r`P+K zue^y$sdVdN-2Xsqi$nGwsf{<5s&`P4-C8O|c_&FVKx`D>x01x~27t{I6MIh2&VJ;Z zy|=9O^i@&qQv-tojr-5e-`331d;hU%&u8ew00R?Dn25BVQp5&MbV=)mRx}CdF>!9z z!5&TphuV2|D7WT&V+iL;0L23kyo5BrNr(R4kuBwkH@y9ag1OcLIz^0aTehHiwuLiK zFCg#c&=QEr1qKG))h?Q6n*ssKwFpIK&{}BYifgat<42F7$O<8!o$^WGoQ*1x1myso zRzHrHlGCoRM<6%|qQk^AWBTcl??t!c2i5^FGXlLf794@<5p<;_)EL&m&LZj03IOGM zjiG_+Yiho~LqJyLV$wK$vSX6RD_$`DiWls;?WUVna8A;ZsQflj6fX38AI$7OEoB_94E(7{lDE|> zQPxZHPdb)&_+D`QbhkbAPdyh;shg+Ewf|=@45LHMrT27<`N((k+#}EP0_|POB4Yr? zWNi~}FLn0*v@rAEPR;)hU;qHqZeqTk*0oZ!Gg4}-9Qr%8)(vA_tCRE( zt|rOB!kAuRU7tiGAXUjpQbh>a2|_{W5m&0@jcu&e-(D|Qu8SG%JkJ)Ed+mK^^Z4Gv zm>wKV)$=FE>w|Ai6gp>DS3lNFvm-fE+Y$;Q_EKYtbCDYWE+m_*%`mL3L)V}QkEu~* zy{qo~w+BjJPb4K{>|;4_IuRVotUcB<*`dBQhXsH~>gPqHMLgYw!5;l49* z_q_rXB!Z2#fe&U`abPizKVtuhNH`H;W2w47&XT+9QR!XA7W)kFR!^vCn&S1nBER=r z>eeW|d#XC{w}JAiPjy#+aW&8W^m};^LeGN&JYLh-^GL)4fW+GQ!ntp&BXEHe7$;9% zOT@R5!Y#_v8&n0@an+@;xxuL;CvoxArFiP-ar8Pdbl}0*0$>s`A|!z4`xLi&9L0i!42r zc0WJc?|y8#$ev6|R*0xna$G4pTOX_s+*qzuc6XEb;C#P-cfTl38$w(-S14u}=flbU&q8AH4#3;}EHDG^HhMRspr>`db96C%xFPtMWH zzazt7o=}0m+gY=h6yGwiv3BvxZ+R&{^xz{{np;NThe)#&WC%qsgMgqtElH;j0HQq2 z)|hp@KoSrvd)k1=IBOFkS}2vvkM~zQcZ#?}V%(AEC8+)&IRL%B5^R9fRLQwYK)NE% znut|n^T^20O$;_(JUTKG&aSNFkIkO=kBi;jz7*1n34Kcx7tXeQpj3m}GEp74b!vR< z-wmkHKQ=r2-yUl%{Z2>GTp~8MSep`b&H-!v>2U&7z&z%$Y6Pq&HBlqbYNsbON&p*c zW;2mvi75^x&dp@vmK|``I#)b*g7LWnPXY17NKm@H7DYdi$Gv?TT+fJR=d$F31>CGz zpNJzO4Ef>B^{{mNT(|x26Zh>Q!<(uDf7*)sA7tkGXjuO3*koVy1@G2g`1J8^bN6?Y zu4}z>SAArkfejvOt-d!l#h>B_@Hv+agw@I(V~WXgqw>z`Nc6HIw|>79BZxxS)W8}i zMPg8-1)MRmu9!mSozPk)XvDgl6sKa{s`9;Kei$4|JH374++lID{Jee6@Are)I=bN| z+wRR?JT~#~$3};KWbW+3N9UH7K2+qU)q*|ln2|VJ7-ylG;RLYjHMeHMW!olyHEVYc z=V>;(lq3i2y5g#F0weBOv}5y4qDIO0rvt4g#kmwjIw^`H0FYZdyT&K5-}1#Ov6?O^ zJvCG+{j@W7VYS!$P~iL1D)1*);`n2ITRbZoXkrXS(d{0ov4yzz0s9@)yql}_kInZw zw=>h`iKz1599&NuxyosE@?_k-(S8>u>>{mixps8?kBclz54W0s7(4qr-)k`Id;EAR z@Lnv|-6D|J>CoRSL?HwuPT-0HI48ZmMk-;Y)!NUjv!ql8h>^lB5z`amK9o7TP}O=@DTr?DX8FEmkv^+U$Ha(O zO^=o;KT#NSY&PkB@Hfh!1lNmnqWT@2SpdY@y&%C<0N z5TMu&IKd=N4n@N)n)5Dsf)2tpyoGd3z5_-iw z7~%#8ltwnf$ROKgt0a}Adfdl%@Ao*5J%3b{tS}Ck0TUbFpH`_#Ro_+J``vSXXYb#B zsa@V!0>TkHw;`j@y0XdupbG#iNVE*hr-0#cZ>)K?ypS;gd;^xiQ;ADN1fdX%H5D95 zgg7ddzPdXa{=3YY6OMfrlITo^@tXlrUdTu9&rEsZDOVH;n2nP=84%8oviBPAz9rAU zse{`BsSckXW$yw2s0YEVkq}FTvB%mvdkU3SrMp^y(<8~`qC}~1E3)A#*R1D zbD0bz5ln{BE&FTD_g&eTxciD$`_CuC=oU!?gb1-zi*r%>mV@=?hdTAfJ7cL95&vPH zO@vz9-WV5bm@0#eY75iw;?KeW)C{G+B0Zv0vse#gI`i_*93t2N)HNvLP!NNP^} zWunxPo!6nH+#`i(AR@GMc-#K8`SDl>N4`z>QN28^-+keyf02J%PoMheD_+aLf9OVg zRS>@~Qflt&-LEmm`1U(_QZ~MNVIm?ZAyhkxZ#$4S-glre`GM&;eWQFDCpRL(qzZ1@ zo7CUg4&&RNNz&TWXx&Z!z^00&T3Se&_otUx2Hy@y5^!sK?!k*c@ecmk_MZN}DE{;- zW_GP#H#K!Uk@CjziW_SH&pLBoAVRFv(MYI;I8ZkO0AywL@r@$?$kPp%X%cEOh~A{6 zm_MHnKUmslrm717pc#a(mr`}shJ*M0L)YxBHSfx*@~(|C|HwavMRg>p-Fr>ayx|k; z=l}LRyC+g94qZJpbKqi`e`aN~`?Eb$o%~isV8$5Z8(W}4z)Y=n`?b?E)eEL(2D=-L zcgE^#`|$tJLT^X$ZF}p@cRiD*{pHx*X#OWH}4w|hX0F~)PkVyJ6TMwdJchwpn_4lO5Fw=Tq;~tRw0=jT^y0VkckgMm?tVIvgNY!1 zV+9o&2K&-2es?!WJ< zAYGUU0vHR1V>~-f`!Kw5B8+Z{<+pd!?`-JFD1O`1)deP^=q=CETe&z9MvpEuTfK=W z`ZxeAMM^;+B{aeiX2Njp7w4`$$-nRi%y<4CAN#%^D_=&z%~L_7lo(qDV?5t93L@BD zZ++ulpH3q~fDmi1DHrs0C$6SMcd=eqCqZ@GGDG$Dg{?C+29yoDBW&+dBb zLpxKEo(`0db2D-Mozr3Z_UGc}5hUQ6`ox=m`MbZL|HX~3;$(cfkMVp1B0@W<-SPEe z`d^J&5Z%&_lG}IEf1k@pbkLrem^iAH9xsS7o`C5Guv>Ipn{bOTH*Uuxg zwSMe-4(|U#DijbA>?95mB4`q;h4hQ6g_zjF~go9zF850hbISo2qK8I zhVxH6UT$>P|56G8k`U@rwj-tDueKI;$e}L8d^3#3O+m*5Fvc^9oz2%R%D*_fw$Vev z?Fq(P9f~C)G-dF?Cd#H@fSQo;9I3y1!^^Jcn$+{O-5)X4qVtpA{oQ}vMwqwW0dJE4 z0zhR9-21?Z_das=!vE%-hdRnVue|2)mtVa9z#j!tg1{#$`vegLLcq(fyY>qUQ|*7A zDy0G`L5$spF#(M6t>5^xz3C*$cNb26gc%{00uZ*oACYX##Pvmu5K1Blh^CuTT=nU{ z{o5aL-e(K|jv1Wg^LO2U-+wI$AqJ`BWhOo$&b4)NSTIWjhO75=e*dw@9;<)p(MRrJ z0AK_Vh=8#5SrIiJ{KD}caKminH8tv zHaE^ef@*R$jysj-(;fgGd+dq#T*&iZ$r&EE-U9)Gaa#jib7SBIGt=*WW#`bx&ky?d zb{}2-#H;r0|BC>yad|J`SO*a3aY4|S0LJ*bC;d+I46!Z10c?wSh=925r+b)*0kt9l zc$rBqi6BzJyhI2A079bn;oY5s5sFy=50R3fNPr@29Gsq>QUCzF)l=RxfEEH8Qptp= zONdG!!E_ieXzxG9gh~>D5?jwp3ISS5sCxYqk+Vh;g`YpS^3$JMS^jauzQ@d$w1QZv zc{3iRH70;Dp5l$$7V&lzd))rRy!G|g_qHIn#XgBBch9t2;5|6cJEl7T0ECie2|#*= zkp@gBg%H9Sxc=b5d!`T%Yec0G>Jwqqiir~I{Ux%|L@=rK5*U*?W}^sUZ(4tgK$PCQ zkw%13Re=x$0x?dM>db}FKWSSw6UNOhHmBY`DZ?YQ{fr3_0wEz%dKQ487Da7I4@;8e-H4aBEKW3(`DEBou3hggMQB_qBa5oA%O!1fvB{QF?hC!s04si)>%!Q zj8<3IU$%Gt?of)|$P6JMfb*8Ne>ZPEzEKZ@rC~li!2qC0%uNL0)gg-Zv<{EfndT$) zWD`#bAosPWUsWmyIx|!Mb3!oR&|;~s!@~#&0tf;UYE%?w1R|hklZdTo!WiFLj9aTd z$FQ@}J^M>1J#C9?Up-4lp#aAo95YA&NI*1)MVTX@5(>du1Be1Vvmr^!u`dunIqyqS zN_rM{t*n;USI<4_tt-7CQD@Hu&@e&YVTVNpyoP|PCH0Z7@Zh(k0}zUWG)SYaEl>T_ zD_{MUjXZ-t{Pg|%2i`2RhY=D(YM?r6T~+jo|Gr_&u`Hl$XsXkmJpdt02GNVVRdLD# zKwU@s&t~1@<9B~-0X(nGeSobQdw~$pmTFH;$~Yhigal&yV@ugbP)HCHwwpqzP!Jek zAVjIaLkiHa&TeS{TZ=$xu{C{z0Aq<5;FgdW?n)bnBcab4<~3k)N(fPtYUYYvv+sD* zcOAW0M`$a6ND52~>sM8%=7~LMDRfCxe)MlX`G)`e*-w8@;mw(CJwnwPX0x&wb=NjN zxvSCq5fl_&tjZGxxF?7}0YVxDi={Jb5&$$&D!;*IC*$0LF#&w%ha#jbs62_1L&GvIb<6Uw3{P_<&_=PY2>O`6z(LyAe zM57c?khf3+ZtGabHO9$l8QgfwbualuO^AaUs4WR*=7Q*^zAMY7(ueBC+xdz19nN#l zGH-_~DV9JX5kVwXJ1g=P2jAGN!0~LsF#$aH2>||np1tu7N^jxfp!dn&{lNQw3`YGm zMHn+PRPM8g88eQDnxXS_gR?AO!7%KpP9FGzk6Tox+p!! z5ed+!1>r*V4V?aI5U6pyU`znd@y)*-&qvz&8VM8%U_uar;+*ZMBFJAnyEjOY_Az)6 z{A4Zw1A`z^1fcdswJRr4E-fy42GP7JixmKXRLF%vIXnRXFyEYbdyEvX_p^`fueEL;Wc|-# zQH>1SB0x%8B$g&>@k~tyiwFW9-dOv!4E&lv1VVraX^;25INKY1L?Fpto6!mE zrRM{NFi~nIlCu5Hz8?xnjR|0kXMEFd313@z@U(6I3nF0H%HVV0fdL@51Nhqq?*HV# zo8_V4?u9|OH>twI0st)d|Bnd9z+lniR4sjVh?Gd+G!Q~^FV8}z_Ksk<6*&+B5v3qe z+tJT7Q5%@N0W1W7LR1;OD_Rh~isNTTR)>D(#-$eDWW1?{vkRk7<%N_}9E z508&VS?|E^UGLZxr#J1=(MxMm>Vs3${{-WxvF^=D1KcCV1WEtLs(uU>qe2 zh4-g-?$g&ps8qAERWB5xsR+}r)h7Mx{eOrE?421Cz!=XMcFcU|J!pY25d;ea0EAn` zHv)FjZ5f<*@HY>f{8z`HSiJ*10(pinub%tk#oe9X36SQ!+uF74pY)eKl40kJmZHtf zRxyT|v(_?`LTu7yO1XEHVdsnOR6-EOzyyfJTzaLD(yR9FdEZ-J_TtAXQ&j>XoC(ug zdd{4Xh+z%H-k!B5E&D*vMElD+x*M2aw_q9fjzVL&1!1}Lpv1^|#maQPJB$t0O? zC&~Qf8o^hG3?r#vb#3j>o)4kKF#-Ieh0*G#G5lV zD>atP%#c;ZNri$gmc!AWTK(;W07xD*a%$KydIn~8mc8`|=uxJp2ZQwzFcW}sXy{SH ziUXF-Nf~PoVACL+uZ+1^0cR2*eDT36YVAPA^Ko)@A%x6J7@q5m?i%*<`vU-g0OA@c ziG-pQs6a}oNX&U=QzP7?9E6*r;r+EJS{xX&VlOKWy8QE#t`k8jWV%TN61zx}^I`s<%Q@x|AiTi^U( zhTQF5SaXV0NLoG4(t&pS z&UgLP+rQ92LLv+iQ2+oKV@>Yu!dg|`>yRv>lzY?WO@Z?U*jgc-LPQD9*+8l(=Y7H6 z+mjD|;j}4=EO1TfiDj#i*vimKwMP{(fFrCzI z41}09-W7sG3P{Rtli<#2O!OpqMoOu=)}3Y$ELgS~00R+)m3Ns3fR<46{qq;@HqP}t zduXAUTbkbWTN5fg_*8udjvl(=6W4V*A9SY7{PQG{XiNa#rj0L%wmb0PrO+O4iElv2 z3O&IQ*+^qSlYTo2AmGV`&&)9Le(fclg}3LH*Iu^k(ElDFrC-Uq{W+313Sgy>KoNqF zqSNnY_hzTheYjWJV@U{c=rOED`7$V>2BkSZ-EPz?6!wOh)_ZXMF=(b?Eg)zMW(g=k zf(L=FUOGDI$U*EOCCk;29S6Wo@aP7@uhl%x#zNH$KvDCeDPXH$Xv$KRTeF^kgfD*K z_7_NB-ycfV9@z4f0bT>x(nD}Na}l?7 zk-1uY<9;E&|LDHGe>y>8v0GKA9FZ|qwYur;sXaP4(hT+C)A{JXSZ0W%f~CpHf7Ky> zJ$rATN>@1krH5ZT8upK$%d-2PH*0geJ)e1VUkL#M1qdXNB)2R1w##(c0}{p#(WW|8 z6Cme3Fa$zwTMPK4wcx={MYSkGZtic@CqfqCmsijI;VTvo{aQ$3QULDs>MIfvboQr> z+XIKGCP@ikTWV|zXIx1(n@($xvTL7NUA_M!AOC+odSUazS`-8egd`C`dhfj=3`%xu z%wX$EFP6p>BuOV8+Xf88N_7GhZ37OF0d|MctpN!cd2k?5mX_C`FvEPkd*6Ix@~E}8 z%<`%?5Trqekt1pS)@xK6A!KWdY&1IFh?2woB0uGT%}&39OAD3=LK2WNwqJ2@{!d1$ z=l(Jb)Pi%qY=_ZxIlFF*Vs0V`kIaVgty;<5gb0&DFU~ibKO9C;ZU2G!-&L3C0y{3n zOp?BA#JE~{|GepLJSKo={Pag~-UBd$5(EHS!r#`(<^TY|I__1#MYrge2c!Di2tf&^ zZJ!=NZWZ~c39T0~&vWlgp)EMgn4TVGcfDxeyd;2x0OO_(m!{+7hy)i-N8wB&)I10j zby5pL$+jXvl_n@Q2OvDc+Q^3|d*7SX+=QT|hgQ!0Zf;=tLRsF+EVz!MGc1cU zlTsaQAuOg+9SEgr5&$%UVBwKL_oJU$UVhzY9)9@x%LP6G2)o1NaEz*Rdb4{M0>Txw z`Yp-xAf2prmT{2g6=vsgk05Y()6k0?h<3{U6es3rOX~-9QXJ>Bz zt`}VMnRXQ441gd5)f`pjDZ_03zS6(7RFx1Q0A$42E{M88py%_dSgk3XtxJ8F2!q+A zcI$!Z>9+!SAjcpP6$_B7Yuyj)#>8UgoN<>CKtKX!ljNox>}n1SgaB91O#aTKR!d_7 z7~`9^0EiG?d(%sXZ@TIF&o^t);fS_-=>u&M1RyvB^RUf6_Ts&JYV&DutA(xRnF0`a zOPwDLi{eBH6*NgMcFm}4DX|D3;mrC48&^I=1kgocOOvk}2i;I=-PH1k1BRGrS480~ zN+o?o-ScI)Xj+~h0eX+N8@b3dg+6S+7mNr22x10{K+>_dk7=FF(L zDd~k#%Pg~!^u@K!$7XbWDZ`3pDbjuRj1Em-_#lk*qD7{GF(-w! zuzKO#f6&H4uNd9m3ZkW{nf6<+?(BY-B!W;Y#oI)Ph#&x9Uy{CB0EA{#EcY2tvE?Gs z!MrtQbwY&;;V83tS!Bzj;U8|=@{4nE?Uj`?-F?$DKfBTG-gkL^03yP^dhNCdMQ5cy z_$vnt2b22E53OGK*>gpCd`tjid{c0|W&VHV)MLN@rH4;FU@Fsd;J3aH07RDzT+;=2 zikyMhyx@g@(1_&`0=&G>U!yQ)r7X)~TZcEE9c+GicaYo${l+F}F2w%w=p$sS(lU4@lxD4y$$B&^nEXUqn;Q1} zXDb1!3+~)pT7PY&I3SC*KgjOOy4iiXcdOQM1^}Rxns(p{B5GLcj6{S$ZfPPZ;GQWR z-5AJd7NtywWpPR%hMKUc*{3sF-*m7&`_{ZLk6s)O?`_KPnt(Y(V~Q}17c=ixcN(Pv z0HmZKWNwz$u9VEZnvg0`dUj_tUg8)pRQ2^0) z{=Og(BpT;OqkGq~0hAXv3UX`(62MLr007oad7@(L4$bWTu5(%Ut|NO6ya5ql-BvK; z7&`UZ>)Z8srk$iOl0<10P@Fa!9dAulQ#zRp!>c8DU?f<}NBuoX?OI?yXPp~nwyKP+ zHYK983`ObLDy^c^5-q7Xm}h3IglIbNvfcI8 z6ft-Y4B#r8rcqR6o4r7wWCmZW*Jpc!?CfTlA4@zKhX4~gcxglHr5e*b+bXLA&M(Z& z{!8HyMtSuZ1AzBz5C9a3keK1BnVI*dL3p@yZY?YF6C-2JDt6Db*445G(`oHSLIec@ z40uo|R3${wM@a!8mMDvo0cxJxInafm$n60LUSrF$NQ^6`fV5VtHLt7(&COxITQAK> z0|E#Th(fNL^8RL{Axm~AG|D7%`EpH$bzlzyS@z4(Fu@?U0zf0AvVq}~&Y=k~ zXrjPS3Di&(Sx8KzMJyQ{q-m=d^hap0umI4l@{#nyZ-UJ_GP>1B9~`L9vEcIykGOopoM_>dh>@T;^gKFo11sf zMe&VkpyvBkv23^J9gGQJjBon%=Sx99fKQ)Y{?((M{j~CB`MJ? zz00OlbR;3_q>`>|#o-O3JReL=OujKtYL*zJVoVS1+54}nvRXN}vH4-o3?UITN$%m{ zaLrn?rlo48gdMcT*5hcwxaZF-f-wO+qo@Cqt-38ccr?%M2C#5-SihaNRsPFQnu0ld zXywtt`lxG`+U-4cplb*b6e7TOvdVHf`Y;u~K=0w~#`?LY3=j9MIk}z}!voXP2U0}x z-aF|*_J%{~_xqa)5eXSNFEZ)DNrDuSfV~CDTo9nlOm(tWt2F^UFnch}76=p}he;4D zkgt4a*W8^R!FubfSg4L*3=<{7>9l^sW2>hhG~PH51e?XMFRiSEAW1^#C{3q^#*Bg} z+CSYrDIf?dJJmHo8!Zjwuof0hB}tLgqB^E}Rs4Nf4y{ zVsva|tL2zPGZAv007GpYP3yP@))#~R;QqRhi_U)N8y|p*YAADX#sm5FNTMxNi*S{m)@pd?{@Vxfu#yNle z{wsbI1;hXVLeQmrf3#eVMtL8tvj=J|N`Ynp;8HP=_goCvuUccuNXyR3+J(FKO|}0; z?#=3ES&jBi&BS#OKvk8uNH3i_b>@?j0}saKl7Y1nf%o2d>oO%|hm2>1D4qA#Az6?@ z?wy^zvokkyhw;^*^0v>+1%L}!)LMdgv1m_E4Vl9N~+2SPPc1S}gDNx|3 zC^BPAUfHV5t77Cl4~w!GRfzb+p!a`;TF*;Q8i=%#VisAz^5%s<&Vh%TwqAQk*la4f z(2}$mI1{(h+JX#q#|wm8j~@LDGQ-GK%bF?mY}g6Z>&5V1CWHV*d+*%LFKrI9dkcha z<$WdqE9m-g9R8 zua>6gRFm;qLIm;vmOX?(AO!^llP`f_udKtKD0-s+nDY#=VB1MhwnrqhP0szEsPUt# zZ0@_^;QTy69G-TY2Caou>yVAirKYwOU^NH`w2A}pFewsgtup~qQz@})RF&Ldnr}tw zurcN8Mz^~TwrYy1YFDmWcPfxE1szvaUBTe7+h6Voaf<~DaoxN_y6@mKD<|J-I++jt0a*)KPrxi zFr3xwQ!c8thSYO92s(@s0>*H@(R@RLc=6EW#B103-M>N=G}kM4tS@P8!??wI~5Wz5fE%83sv41YkB_Jtg4Et z7{ay9*;^z-5)tkFk?XHNoq%auaK+=Uu-EP0dqWA3<%6M9wt`h_Kfjq}CUo9{De^?p zJXcj;074_G)ujhFS#QL|&I!cPEEhDtHVCz_?$) zO$Tu-7=6iZLm{Tx`H%?1%(+whlQx{rdV`@gYaYNMuxcgI(P3|Jzp_r$jGqVv%Jtsn z{bgmACF#_lD*9!4DkjxYhD%36uH~b9mC|ib08_R2w!GhaTrg{E%vvC^iP>w~Ps3jHmSViMD$7DX|sX$IDFr9WVnR z17t|uN6)XqE3Vl4+Pb%k&O4Am;MjpjEY23AyEoYI#ok)+UAy+qv`BSYwe%)w47^}| z&mRVW>B)`mf7p|zS_+kVMvlE}ZWPt02BtKvFpQOVE@1+1ZC`60MNyQ*D%8y=0EtM- zbEv#;f^%*HyFtz0_&8eoz}0z}81f&DW6@2nj#;#VsF0x8R?@4XvMhsiC1on-da zo_h1ghc<^V_11pVZA~>cfe=kwR;$L@)$?m>e+bUnIEYh+Z2NhBqOR4_Mlm|p48z65 zxMnR3YEN|gpDhJt0m)hCINQ@~-I!|KiUM^YH|1(QikI3+eDlKGt{-}|zkb({#M)+& zKRgjdi!7Y%d3Wlos{~s_>ec(NIOPV}%6H`29dF@p0gK{RM&Db1@U$->p3I$j|)NyJ0$!w@8BR8G8T>9CnR8xmIL@v%L!!XMz}NMDyK#@BUAJ z;eiLfa(3mH7{Hz>h946e0jw)F2L0|#z41e3X;%hSRWySrn5xyML&ue6mr1RIKx>T% z*i2H`5+5N9h-QVBt~1@ zI>++t&R>1gTbE}ret8Tu@0nFVYLNit5N-B^F{5soXBrIbi)wEs(9jNRx=qQFVJ@r? zHrpJU*tzEMi)(*zbl?0BZXhh5@z!}S{d{v`CXg!BD4Q7}K~+^gl6o`S1Yt#`*rW{~ z)B+)RpRQA_@?le|*s|fMaxNw@X$X`CQ4hRL!!$b7GgWDki`Z}pj4UJu5!0*}Le`Xy zGzuhAk`NGlWi$xzLaN-keoL!ZD;=)q!>mM0A<`^VRYsn`mgVY1G7&yL7<|GrTHKmQ z6ikNEQpDJv5MoK2f@(U5*N53!RhgApmE62x%VRN88`d{Y=_Ht1xw!F2#<0S`AOdV( zF*)&e;hifzn65R)jdN@B6O(VhVsh%1m2C6VL!cFFIcsV?pWAB1SnQh1A~G=vm?3d^ zSK4^ZXD*(3%gFzI*I=gASi1hmwf8=k6NZ@mm;k;trWC;HdiUd}9)9TJ4V}HedELb1 z2buk46MJ#H^Us#om6hfclNPTyaP{i~rX~=~#01SqskTG1kC($g%A^W6dYgQ7cFzqF za+-qNm{aD@FINy-8CF3F*Z$&qhU2>}j^bke!bMb?AIP7!Iwm zk_C8c0SH7xs>7j#xF(eo!=ju82??WD&b#TTt`jB-tSdA!B4Mb7jMno}x3qRuGcqG1 z5s9f<@_o$gJFUq*5@Y9Hl44YnSJl96fbH-VQ1_DJl`z<-m(Jvg?n)M zk;gx3yTem{TVT0#LhO(Mc$rEupEz${zHc7tWz|#&;gx&#{QE20)4v>`OgF4QUI4+F zwTr9QO-_f3Z5mh?OzNnu7(xS3oG*&utFL*{%bXxs@2{723+?sM=u-o#C<25RcJ>^6 z$)Uv~>%GnMjEvGb9t}qhoHG*?EDG=@X2pCv-7 zRD{IRa?wQ}yA|V7?BKE#=#xfB}1VZrOym48T4+BX7vgZ;UY!<}^OVXhO zR){qPm|WL6aOI=bpz0cP$^+O$%62DBZ=DMC%^_ktkz#*@s0|4rg-ErOvnU`A7*anR ztt#v7neOJfevu!m0J@4n&PKKG8|GOrM}Y(I%Y!06K3}iDZC88xwu?pasV@7Io2EP! zXxSd*#Yv@u=Af!pocE9j1#?mzepzek-&cA5#ChkBef9fY4}$if*Sq)e<&}Tk9p%qi zZNR&+1@KLu{CJrgaBgG$gD*XF=uK~Y!P39^lb`OiXviPrPp*q%U-000)aINR+%FsC8_ z=k35*SGPPnD$0|6r~tf&$TPbvD+c+fE2AV*D6le>smd~I*Xpwx5tULhFN#5$CX)kO z73`eVL?pI43S-57WSKLvriv8=%CcniSh>()PrIJ#W#W3^0fQUqZz|K{IgeZ*} zC1F_i3|s*~1>CpJ7hrgVhyuNHbGn8ny65lm3>MgfVjo8A+h))^>AfqQEqkGqVeXxi zM0HeHKi}K@qeIiX-($GUW}EfB8&&?$WKg@QD9e?pFu5rtAx3DkwLJeqg_Nh=QP#n`(`bzykEN5KvcYakq|dIuxf1pIxwLiI zTeo(u-}~6(z2RMB5%77W_CNUnuro*tcDno`!Z}<0Nxjw*GZNrWKJ=l-6ycSTRDi&s zkS>J-A6+@~8=JY!FP=STZhgTEzdy0qw19KQmXkl?%TSHPe@}C38OOR^WsicC+)=+9FUPATYSR z$OdJZH9}D*r9f3=a;QK>I$iU2U7^HU7?bkkW<{ixXHk>17&vQ$h(zR}S$gn=6O|kE zc|NMwt@mD$7T&oEy>|cr&U-gx%Na4Gh@$dfHhkqv;I0%H0(n8+`%aurZ&U@J9&|qp z01%RFHl$u?spyClsu_})bq@MH1niZ?!(C$@j8IQ?i~M+taatQs8{QbUHp`{&TF+Sv zaB*eW{RFeFa)dR7oX*!vS=3o6fReV|hnLQ$8pGs>%FNg}LV*<}XP3ZjKNLT72V z^K18CJokUD1AGw?FLiEe>Yz>R!2^Q;A#-b%pWBuzj|t%EKnSrtf}5V~)3@E+lXg1% zB0$eObMpM^moHx2*qo7p7Ty=Y2)x~^Z_82;k6g?~_vF@9XM4T%>u2^t8*p)wWI3aP zYZDah5;$9_Mt7HKj{t z6!A{q!jO@#-G6BR@~AtSY)#(Al0Z8rYk>3MY_+S=yg6ZN3D444yDp`g&_cCy1^E?| z)4${f#i|sdHYoCQ9O!gp?Q&hvLJ~#S1VYVb=vFUe{f{YxrZr~m+~($gTzBr+`D%0w z*xQ;`iyNl+QlM0uJVP3Wiy>n=E$Qf2dKW(WnNk1Ft}|vw$I&F9oz{=6j`}Bn0oa2b zeFqE<856+Q-TYg%<4OwHGc|GRm2>U4MN(Yq?JtDbYFfzv&H;Sp%<0=(?U~lgCOR|C z!ZkH*nOPH30c{ukfI};tvXKgd(dHVws4;a%&3fAqaykS^kx*_reDg06-}fIN~*+85TYMYQ0hP$OqnJR+3VtxiYrE&V+E zyag`Sz#WgmXdxt;l|)S|5qfNvi6~5D&{?m_-ma(@tsgHI3|FnbCb4D{OKgP`G&)X{*NPv_TQrfZN>iq zfN{&5a?EfJ>}LmTA$Hy!t~K8)wzC4SncMZJ(}MOWfVe>J_7Kqf=VI!p>v`NCN%NQfv1lB&oH@bAl1OT$W@p>2*#VD`J zayYW35kZg?c|O!yPfHXO1uF60yHM+RILI!>I*J65Z~!2Pg!SkO22P@=$(~(RRYk8T zk4Xm5o}B;y&CHLSJ?$RpZ~k7dKe$gY$caE5ZOQP;>00duWt~CK&X}S=MquNzNQl~0 z65VPxHkYk1L1FExCkfX3uCcxw0!>(ikwdCZkFt-)QFK_Ls52oLq|7pBidn`wn7>dK z_e;cvMr;y$aLyH>)}2$m{s%XlJAJw9*9yV~UleP7QyIq|6pC)q-GYcdPd1eX}#a*O%BI0>J9} zYWJpvt6s^>oS^Cuu%!Q&y*G`L^t{Rh@4fHxEwM*NX62q)n^dK$l1g?-mTlR{U~JhI zAl5cuI5c=XG|)}kFf`2!Ge9$RvyK@U8V(H5-Ovo(25fAM4FY7m$+l$6)>e{g$*Rgd zBQv&df0sKys$`3So-=38&|?dI=X~djA93PGMBL}T_dfSN56G~O77++ubMvvU&Ajuc z8&lJ*IBEnzJywLUJiE}Fu0>r#jsgcZ4&ykk*Sn>)MlrgI4G;-Ymr74LzNItYh0a_I zK`)w4m_2*)gEZTZP-E`dHHFe3P!)cOdW$7%s%C(79g|=3Dr#urV5)CD=Thl?j z8rP3?rkY2*gOnL6BoSuJ+smEi+pKj50m<3ED?T~jXx%$iuYb8g$TIKNbKpKR*qYX> z{XBih143Qv!vcM%b+Fh{Vl}aLZQqs`taqQMaAOoOUvItkVlw&w06;7yghcJqzcBOy zUIc*uo9o=l(jRvu0wDu4z_6-57s+7t=33|5R^s3;WWK@fF(6!Ts2rFaKDD*;Emff6 zDNj6AxqEe>PJHmApR{lPM{gasLCluylL;_*C4*L@IkmQPwYqodl32?)Ns@jgP#BBVu*k;%0A*EWB!qU(StKF6_Xe4*0EActq4MnK;@VehhZQ2C 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

u6-uWva*#SpCmh4w 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

RUIcok-8}OeA$Fq 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˟(ARsy2H+yv$WPl%qSBO)jW3DlqE;TJcm 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≻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

    !}V=h7~7p@xeU$)E1F}7?Xu}wcHTQ; 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%0AAY-EZmM0|FXqPwbnhqLLRHsbQ@GFE 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⩾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%0AMF_VyHZJ{fQ9M`T~r8{@;!1M<=e0qqF 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 j^}cd^$FZAu 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 diff --git a/src/rgbcx/test/bc7decomp.cpp b/src/rgbcx/test/bc7decomp.cpp deleted file mode 100644 index 762a3d0..0000000 --- a/src/rgbcx/test/bc7decomp.cpp +++ /dev/null @@ -1,429 +0,0 @@ -// File: bc7decomp.c - Richard Geldreich, Jr. 3/31/2020 - MIT license or public domain (see end of file) -#pragma GCC diagnostic ignored "-Weverything" -#include "bc7decomp.h" -namespace bc7decomp -{ - -const uint32_t g_bc7_weights2[4] = { 0, 21, 43, 64 }; -const uint32_t g_bc7_weights3[8] = { 0, 9, 18, 27, 37, 46, 55, 64 }; -const uint32_t g_bc7_weights4[16] = { 0, 4, 9, 13, 17, 21, 26, 30, 34, 38, 43, 47, 51, 55, 60, 64 }; - -const uint8_t g_bc7_partition2[64 * 16] = -{ - 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1, 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, 0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1, 0,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1, 0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1, 0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1, 0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1, 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1, 0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1, 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, - 0,0,0,0,1,0,0,0,1,1,1,0,1,1,1,1, 0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0, 0,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0, 0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0, 0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1, - 0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0, 0,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0, 0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0, 0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0, 0,0,0,1,0,1,1,1,1,1,1,0,1,0,0,0, 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0, 0,1,1,1,0,0,0,1,1,0,0,0,1,1,1,0, 0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0, - 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1, 0,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0, 0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0, 0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0, 0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0, 0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1, 0,1,0,1,1,0,1,0,1,0,1,0,0,1,0,1, - 0,1,1,1,0,0,1,1,1,1,0,0,1,1,1,0, 0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0, 0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0, 0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0, 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, 0,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1, 0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1, 0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0, - 0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0, 0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0, 0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,0, 0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1, 0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,1, 0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0, 0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,0, - 0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,1, 0,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1, 0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1, 0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1, 0,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1, 0,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0, 0,0,1,0,0,0,1,0,1,1,1,0,1,1,1,0, 0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1 -}; - -const uint8_t g_bc7_partition3[64 * 16] = -{ - 0,0,1,1,0,0,1,1,0,2,2,1,2,2,2,2, 0,0,0,1,0,0,1,1,2,2,1,1,2,2,2,1, 0,0,0,0,2,0,0,1,2,2,1,1,2,2,1,1, 0,2,2,2,0,0,2,2,0,0,1,1,0,1,1,1, 0,0,0,0,0,0,0,0,1,1,2,2,1,1,2,2, 0,0,1,1,0,0,1,1,0,0,2,2,0,0,2,2, 0,0,2,2,0,0,2,2,1,1,1,1,1,1,1,1, 0,0,1,1,0,0,1,1,2,2,1,1,2,2,1,1, - 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2, 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2, 0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2, 0,0,1,2,0,0,1,2,0,0,1,2,0,0,1,2, 0,1,1,2,0,1,1,2,0,1,1,2,0,1,1,2, 0,1,2,2,0,1,2,2,0,1,2,2,0,1,2,2, 0,0,1,1,0,1,1,2,1,1,2,2,1,2,2,2, 0,0,1,1,2,0,0,1,2,2,0,0,2,2,2,0, - 0,0,0,1,0,0,1,1,0,1,1,2,1,1,2,2, 0,1,1,1,0,0,1,1,2,0,0,1,2,2,0,0, 0,0,0,0,1,1,2,2,1,1,2,2,1,1,2,2, 0,0,2,2,0,0,2,2,0,0,2,2,1,1,1,1, 0,1,1,1,0,1,1,1,0,2,2,2,0,2,2,2, 0,0,0,1,0,0,0,1,2,2,2,1,2,2,2,1, 0,0,0,0,0,0,1,1,0,1,2,2,0,1,2,2, 0,0,0,0,1,1,0,0,2,2,1,0,2,2,1,0, - 0,1,2,2,0,1,2,2,0,0,1,1,0,0,0,0, 0,0,1,2,0,0,1,2,1,1,2,2,2,2,2,2, 0,1,1,0,1,2,2,1,1,2,2,1,0,1,1,0, 0,0,0,0,0,1,1,0,1,2,2,1,1,2,2,1, 0,0,2,2,1,1,0,2,1,1,0,2,0,0,2,2, 0,1,1,0,0,1,1,0,2,0,0,2,2,2,2,2, 0,0,1,1,0,1,2,2,0,1,2,2,0,0,1,1, 0,0,0,0,2,0,0,0,2,2,1,1,2,2,2,1, - 0,0,0,0,0,0,0,2,1,1,2,2,1,2,2,2, 0,2,2,2,0,0,2,2,0,0,1,2,0,0,1,1, 0,0,1,1,0,0,1,2,0,0,2,2,0,2,2,2, 0,1,2,0,0,1,2,0,0,1,2,0,0,1,2,0, 0,0,0,0,1,1,1,1,2,2,2,2,0,0,0,0, 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0, 0,1,2,0,2,0,1,2,1,2,0,1,0,1,2,0, 0,0,1,1,2,2,0,0,1,1,2,2,0,0,1,1, - 0,0,1,1,1,1,2,2,2,2,0,0,0,0,1,1, 0,1,0,1,0,1,0,1,2,2,2,2,2,2,2,2, 0,0,0,0,0,0,0,0,2,1,2,1,2,1,2,1, 0,0,2,2,1,1,2,2,0,0,2,2,1,1,2,2, 0,0,2,2,0,0,1,1,0,0,2,2,0,0,1,1, 0,2,2,0,1,2,2,1,0,2,2,0,1,2,2,1, 0,1,0,1,2,2,2,2,2,2,2,2,0,1,0,1, 0,0,0,0,2,1,2,1,2,1,2,1,2,1,2,1, - 0,1,0,1,0,1,0,1,0,1,0,1,2,2,2,2, 0,2,2,2,0,1,1,1,0,2,2,2,0,1,1,1, 0,0,0,2,1,1,1,2,0,0,0,2,1,1,1,2, 0,0,0,0,2,1,1,2,2,1,1,2,2,1,1,2, 0,2,2,2,0,1,1,1,0,1,1,1,0,2,2,2, 0,0,0,2,1,1,1,2,1,1,1,2,0,0,0,2, 0,1,1,0,0,1,1,0,0,1,1,0,2,2,2,2, 0,0,0,0,0,0,0,0,2,1,1,2,2,1,1,2, - 0,1,1,0,0,1,1,0,2,2,2,2,2,2,2,2, 0,0,2,2,0,0,1,1,0,0,1,1,0,0,2,2, 0,0,2,2,1,1,2,2,1,1,2,2,0,0,2,2, 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,2, 0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1, 0,2,2,2,1,2,2,2,0,2,2,2,1,2,2,2, 0,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2, 0,1,1,1,2,0,1,1,2,2,0,1,2,2,2,0, -}; - -const uint8_t g_bc7_table_anchor_index_second_subset[64] = { 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15, 2, 8, 2, 2, 8, 8,15, 2, 8, 2, 2, 8, 8, 2, 2, 15,15, 6, 8, 2, 8,15,15, 2, 8, 2, 2, 2,15,15, 6, 6, 2, 6, 8,15,15, 2, 2, 15,15,15,15,15, 2, 2,15 }; - -const uint8_t g_bc7_table_anchor_index_third_subset_1[64] = -{ - 3, 3,15,15, 8, 3,15,15, 8, 8, 6, 6, 6, 5, 3, 3, 3, 3, 8,15, 3, 3, 6,10, 5, 8, 8, 6, 8, 5,15,15, 8,15, 3, 5, 6,10, 8,15, 15, 3,15, 5,15,15,15,15, 3,15, 5, 5, 5, 8, 5,10, 5,10, 8,13,15,12, 3, 3 -}; - -const uint8_t g_bc7_table_anchor_index_third_subset_2[64] = -{ - 15, 8, 8, 3,15,15, 3, 8, 15,15,15,15,15,15,15, 8, 15, 8,15, 3,15, 8,15, 8, 3,15, 6,10,15,15,10, 8, 15, 3,15,10,10, 8, 9,10, 6,15, 8,15, 3, 6, 6, 8, 15, 3,15,15,15,15,15,15, 15,15,15,15, 3,15,15, 8 -}; - -inline uint32_t read_bits32(const uint8_t* pBuf, uint32_t& bit_offset, uint32_t codesize) -{ - assert(codesize <= 32); - uint32_t bits = 0; - uint32_t total_bits = 0; - - while (total_bits < codesize) - { - uint32_t byte_bit_offset = bit_offset & 7; - uint32_t bits_to_read = std::min(codesize - total_bits, 8 - byte_bit_offset); - - uint32_t byte_bits = pBuf[bit_offset >> 3] >> byte_bit_offset; - byte_bits &= ((1 << bits_to_read) - 1); - - bits |= (byte_bits << total_bits); - - total_bits += bits_to_read; - bit_offset += bits_to_read; - } - - return bits; -} - -// BC7 mode 0-7 decompression. -// Instead of one monster routine to unpack all the BC7 modes, we're lumping the 3 subset, 2 subset, 1 subset, and dual plane modes together into simple shared routines. - -static inline uint32_t bc7_dequant(uint32_t val, uint32_t pbit, uint32_t val_bits) { assert(val < (1U << val_bits)); assert(pbit < 2); assert(val_bits >= 4 && val_bits <= 8); const uint32_t total_bits = val_bits + 1; val = (val << 1) | pbit; val <<= (8 - total_bits); val |= (val >> total_bits); assert(val <= 255); return val; } -static inline uint32_t bc7_dequant(uint32_t val, uint32_t val_bits) { assert(val < (1U << val_bits)); assert(val_bits >= 4 && val_bits <= 8); val <<= (8 - val_bits); val |= (val >> val_bits); assert(val <= 255); return val; } - -static inline uint32_t bc7_interp2(uint32_t l, uint32_t h, uint32_t w) { assert(w < 4); return (l * (64 - g_bc7_weights2[w]) + h * g_bc7_weights2[w] + 32) >> 6; } -static inline uint32_t bc7_interp3(uint32_t l, uint32_t h, uint32_t w) { assert(w < 8); return (l * (64 - g_bc7_weights3[w]) + h * g_bc7_weights3[w] + 32) >> 6; } -static inline uint32_t bc7_interp4(uint32_t l, uint32_t h, uint32_t w) { assert(w < 16); return (l * (64 - g_bc7_weights4[w]) + h * g_bc7_weights4[w] + 32) >> 6; } -static inline uint32_t bc7_interp(uint32_t l, uint32_t h, uint32_t w, uint32_t bits) -{ - assert(l <= 255 && h <= 255); - switch (bits) - { - case 2: return bc7_interp2(l, h, w); - case 3: return bc7_interp3(l, h, w); - case 4: return bc7_interp4(l, h, w); - default: - break; - } - return 0; -} - -bool unpack_bc7_mode0_2(uint32_t mode, const void* pBlock_bits, color_rgba* pPixels) -{ - //const uint32_t SUBSETS = 3; - const uint32_t ENDPOINTS = 6; - const uint32_t COMPS = 3; - const uint32_t WEIGHT_BITS = (mode == 0) ? 3 : 2; - const uint32_t ENDPOINT_BITS = (mode == 0) ? 4 : 5; - const uint32_t PBITS = (mode == 0) ? 6 : 0; - const uint32_t WEIGHT_VALS = 1 << WEIGHT_BITS; - - uint32_t bit_offset = 0; - const uint8_t* pBuf = static_cast(pBlock_bits); - - if (read_bits32(pBuf, bit_offset, mode + 1) != (1U << mode)) return false; - - const uint32_t part = read_bits32(pBuf, bit_offset, (mode == 0) ? 4 : 6); - - color_rgba endpoints[ENDPOINTS]; - for (uint32_t c = 0; c < COMPS; c++) - for (uint32_t e = 0; e < ENDPOINTS; e++) - endpoints[e][c] = (uint8_t)read_bits32(pBuf, bit_offset, ENDPOINT_BITS); - - uint32_t pbits[6]; - for (uint32_t p = 0; p < PBITS; p++) - pbits[p] = read_bits32(pBuf, bit_offset, 1); - - uint32_t weights[16]; - for (uint32_t i = 0; i < 16; i++) - weights[i] = read_bits32(pBuf, bit_offset, ((!i) || (i == g_bc7_table_anchor_index_third_subset_1[part]) || (i == g_bc7_table_anchor_index_third_subset_2[part])) ? (WEIGHT_BITS - 1) : WEIGHT_BITS); - - assert(bit_offset == 128); - - for (uint32_t e = 0; e < ENDPOINTS; e++) - for (uint32_t c = 0; c < 4; c++) - endpoints[e][c] = (uint8_t)((c == 3) ? 255 : (PBITS ? bc7_dequant(endpoints[e][c], pbits[e], ENDPOINT_BITS) : bc7_dequant(endpoints[e][c], ENDPOINT_BITS))); - - color_rgba block_colors[3][8]; - for (uint32_t s = 0; s < 3; s++) - for (uint32_t i = 0; i < WEIGHT_VALS; i++) - { - for (uint32_t c = 0; c < 3; c++) - block_colors[s][i][c] = (uint8_t)bc7_interp(endpoints[s * 2 + 0][c], endpoints[s * 2 + 1][c], i, WEIGHT_BITS); - block_colors[s][i][3] = 255; - } - - for (uint32_t i = 0; i < 16; i++) - pPixels[i] = block_colors[g_bc7_partition3[part * 16 + i]][weights[i]]; - - return true; -} - -bool unpack_bc7_mode1_3_7(uint32_t mode, const void* pBlock_bits, color_rgba* pPixels) -{ - //const uint32_t SUBSETS = 2; - const uint32_t ENDPOINTS = 4; - const uint32_t COMPS = (mode == 7) ? 4 : 3; - const uint32_t WEIGHT_BITS = (mode == 1) ? 3 : 2; - const uint32_t ENDPOINT_BITS = (mode == 7) ? 5 : ((mode == 1) ? 6 : 7); - const uint32_t PBITS = (mode == 1) ? 2 : 4; - const uint32_t SHARED_PBITS = (mode == 1) ? true : false; - const uint32_t WEIGHT_VALS = 1 << WEIGHT_BITS; - - uint32_t bit_offset = 0; - const uint8_t* pBuf = static_cast(pBlock_bits); - - if (read_bits32(pBuf, bit_offset, mode + 1) != (1U << mode)) return false; - - const uint32_t part = read_bits32(pBuf, bit_offset, 6); - - color_rgba endpoints[ENDPOINTS]; - for (uint32_t c = 0; c < COMPS; c++) - for (uint32_t e = 0; e < ENDPOINTS; e++) - endpoints[e][c] = (uint8_t)read_bits32(pBuf, bit_offset, ENDPOINT_BITS); - - uint32_t pbits[4]; - for (uint32_t p = 0; p < PBITS; p++) - pbits[p] = read_bits32(pBuf, bit_offset, 1); - - uint32_t weights[16]; - for (uint32_t i = 0; i < 16; i++) - weights[i] = read_bits32(pBuf, bit_offset, ((!i) || (i == g_bc7_table_anchor_index_second_subset[part])) ? (WEIGHT_BITS - 1) : WEIGHT_BITS); - - assert(bit_offset == 128); - - for (uint32_t e = 0; e < ENDPOINTS; e++) - for (uint32_t c = 0; c < 4; c++) - endpoints[e][c] = (uint8_t)((c == ((mode == 7U) ? 4U : 3U)) ? 255 : bc7_dequant(endpoints[e][c], pbits[SHARED_PBITS ? (e >> 1) : e], ENDPOINT_BITS)); - - color_rgba block_colors[2][8]; - for (uint32_t s = 0; s < 2; s++) - for (uint32_t i = 0; i < WEIGHT_VALS; i++) - { - for (uint32_t c = 0; c < COMPS; c++) - block_colors[s][i][c] = (uint8_t)bc7_interp(endpoints[s * 2 + 0][c], endpoints[s * 2 + 1][c], i, WEIGHT_BITS); - block_colors[s][i][3] = (COMPS == 3) ? 255 : block_colors[s][i][3]; - } - - for (uint32_t i = 0; i < 16; i++) - pPixels[i] = block_colors[g_bc7_partition2[part * 16 + i]][weights[i]]; - - return true; -} - -bool unpack_bc7_mode4_5(uint32_t mode, const void* pBlock_bits, color_rgba* pPixels) -{ - const uint32_t ENDPOINTS = 2; - const uint32_t COMPS = 4; - const uint32_t WEIGHT_BITS = 2; - const uint32_t A_WEIGHT_BITS = (mode == 4) ? 3 : 2; - const uint32_t ENDPOINT_BITS = (mode == 4) ? 5 : 7; - const uint32_t A_ENDPOINT_BITS = (mode == 4) ? 6 : 8; - //const uint32_t WEIGHT_VALS = 1 << WEIGHT_BITS; - //const uint32_t A_WEIGHT_VALS = 1 << A_WEIGHT_BITS; - - uint32_t bit_offset = 0; - const uint8_t* pBuf = static_cast(pBlock_bits); - - if (read_bits32(pBuf, bit_offset, mode + 1) != (1U << mode)) return false; - - const uint32_t comp_rot = read_bits32(pBuf, bit_offset, 2); - const uint32_t index_mode = (mode == 4) ? read_bits32(pBuf, bit_offset, 1) : 0; - - color_rgba endpoints[ENDPOINTS]; - for (uint32_t c = 0; c < COMPS; c++) - for (uint32_t e = 0; e < ENDPOINTS; e++) - endpoints[e][c] = (uint8_t)read_bits32(pBuf, bit_offset, (c == 3) ? A_ENDPOINT_BITS : ENDPOINT_BITS); - - const uint32_t weight_bits[2] = { index_mode ? A_WEIGHT_BITS : WEIGHT_BITS, index_mode ? WEIGHT_BITS : A_WEIGHT_BITS }; - - uint32_t weights[16], a_weights[16]; - - for (uint32_t i = 0; i < 16; i++) - (index_mode ? a_weights : weights)[i] = read_bits32(pBuf, bit_offset, weight_bits[index_mode] - ((!i) ? 1 : 0)); - - for (uint32_t i = 0; i < 16; i++) - (index_mode ? weights : a_weights)[i] = read_bits32(pBuf, bit_offset, weight_bits[1 - index_mode] - ((!i) ? 1 : 0)); - - assert(bit_offset == 128); - - for (uint32_t e = 0; e < ENDPOINTS; e++) - for (uint32_t c = 0; c < 4; c++) - endpoints[e][c] = (uint8_t)bc7_dequant(endpoints[e][c], (c == 3) ? A_ENDPOINT_BITS : ENDPOINT_BITS); - - color_rgba block_colors[8]; - for (uint32_t i = 0; i < (1U << weight_bits[0]); i++) - for (uint32_t c = 0; c < 3; c++) - block_colors[i][c] = (uint8_t)bc7_interp(endpoints[0][c], endpoints[1][c], i, weight_bits[0]); - - for (uint32_t i = 0; i < (1U << weight_bits[1]); i++) - block_colors[i][3] = (uint8_t)bc7_interp(endpoints[0][3], endpoints[1][3], i, weight_bits[1]); - - for (uint32_t i = 0; i < 16; i++) - { - pPixels[i] = block_colors[weights[i]]; - pPixels[i].a = block_colors[a_weights[i]].a; - if (comp_rot >= 1) - std::swap(pPixels[i].a, pPixels[i].m_comps[comp_rot - 1]); - } - - return true; -} - -struct bc7_mode_6 -{ - struct - { - uint64_t m_mode : 7; - uint64_t m_r0 : 7; - uint64_t m_r1 : 7; - uint64_t m_g0 : 7; - uint64_t m_g1 : 7; - uint64_t m_b0 : 7; - uint64_t m_b1 : 7; - uint64_t m_a0 : 7; - uint64_t m_a1 : 7; - uint64_t m_p0 : 1; - } m_lo; - - union - { - struct - { - uint64_t m_p1 : 1; - uint64_t m_s00 : 3; - uint64_t m_s10 : 4; - uint64_t m_s20 : 4; - uint64_t m_s30 : 4; - - uint64_t m_s01 : 4; - uint64_t m_s11 : 4; - uint64_t m_s21 : 4; - uint64_t m_s31 : 4; - - uint64_t m_s02 : 4; - uint64_t m_s12 : 4; - uint64_t m_s22 : 4; - uint64_t m_s32 : 4; - - uint64_t m_s03 : 4; - uint64_t m_s13 : 4; - uint64_t m_s23 : 4; - uint64_t m_s33 : 4; - - } m_hi; - - uint64_t m_hi_bits; - }; -}; - -bool unpack_bc7_mode6(const void *pBlock_bits, color_rgba *pPixels) -{ - static_assert(sizeof(bc7_mode_6) == 16, "sizeof(bc7_mode_6) == 16"); - - const bc7_mode_6 &block = *static_cast(pBlock_bits); - - if (block.m_lo.m_mode != (1 << 6)) - return false; - - const uint32_t r0 = (uint32_t)((block.m_lo.m_r0 << 1) | block.m_lo.m_p0); - const uint32_t g0 = (uint32_t)((block.m_lo.m_g0 << 1) | block.m_lo.m_p0); - const uint32_t b0 = (uint32_t)((block.m_lo.m_b0 << 1) | block.m_lo.m_p0); - const uint32_t a0 = (uint32_t)((block.m_lo.m_a0 << 1) | block.m_lo.m_p0); - const uint32_t r1 = (uint32_t)((block.m_lo.m_r1 << 1) | block.m_hi.m_p1); - const uint32_t g1 = (uint32_t)((block.m_lo.m_g1 << 1) | block.m_hi.m_p1); - const uint32_t b1 = (uint32_t)((block.m_lo.m_b1 << 1) | block.m_hi.m_p1); - const uint32_t a1 = (uint32_t)((block.m_lo.m_a1 << 1) | block.m_hi.m_p1); - - color_rgba vals[16]; - for (uint32_t i = 0; i < 16; i++) - { - const uint32_t w = g_bc7_weights4[i]; - const uint32_t iw = 64 - w; - vals[i].set_noclamp_rgba( - (r0 * iw + r1 * w + 32) >> 6, - (g0 * iw + g1 * w + 32) >> 6, - (b0 * iw + b1 * w + 32) >> 6, - (a0 * iw + a1 * w + 32) >> 6); - } - - pPixels[0] = vals[block.m_hi.m_s00]; - pPixels[1] = vals[block.m_hi.m_s10]; - pPixels[2] = vals[block.m_hi.m_s20]; - pPixels[3] = vals[block.m_hi.m_s30]; - - pPixels[4] = vals[block.m_hi.m_s01]; - pPixels[5] = vals[block.m_hi.m_s11]; - pPixels[6] = vals[block.m_hi.m_s21]; - pPixels[7] = vals[block.m_hi.m_s31]; - - pPixels[8] = vals[block.m_hi.m_s02]; - pPixels[9] = vals[block.m_hi.m_s12]; - pPixels[10] = vals[block.m_hi.m_s22]; - pPixels[11] = vals[block.m_hi.m_s32]; - - pPixels[12] = vals[block.m_hi.m_s03]; - pPixels[13] = vals[block.m_hi.m_s13]; - pPixels[14] = vals[block.m_hi.m_s23]; - pPixels[15] = vals[block.m_hi.m_s33]; - - return true; -} - -bool unpack_bc7(const void *pBlock, color_rgba *pPixels) -{ - const uint32_t first_byte = static_cast(pBlock)[0]; - - for (uint32_t mode = 0; mode <= 7; mode++) - { - if (first_byte & (1U << mode)) - { - switch (mode) - { - case 0: - case 2: - return unpack_bc7_mode0_2(mode, pBlock, pPixels); - case 1: - case 3: - case 7: - return unpack_bc7_mode1_3_7(mode, pBlock, pPixels); - case 4: - case 5: - return unpack_bc7_mode4_5(mode, pBlock, pPixels); - case 6: - return unpack_bc7_mode6(pBlock, pPixels); - default: - break; - } - } - } - - return false; -} - -} // namespace bc7decomp - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright(c) 2020 Richard Geldreich, Jr. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files(the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions : -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain(www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non - commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain.We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors.We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ - diff --git a/src/rgbcx/test/bc7decomp.h b/src/rgbcx/test/bc7decomp.h deleted file mode 100644 index 3c1e835..0000000 --- a/src/rgbcx/test/bc7decomp.h +++ /dev/null @@ -1,165 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include - -namespace bc7decomp -{ - -enum eNoClamp { cNoClamp }; - -template inline S clamp(S value, S low, S high) { return (value < low) ? low : ((value > high) ? high : value); } - -class color_rgba -{ -public: - union - { - uint8_t m_comps[4]; - - struct - { - uint8_t r; - uint8_t g; - uint8_t b; - uint8_t a; - }; - }; - - inline color_rgba() - { - static_assert(sizeof(*this) == 4, "sizeof(*this) != 4"); - } - - inline color_rgba(int y) - { - set(y); - } - - inline color_rgba(int y, int na) - { - set(y, na); - } - - inline color_rgba(int sr, int sg, int sb, int sa) - { - set(sr, sg, sb, sa); - } - - inline color_rgba(eNoClamp, int sr, int sg, int sb, int sa) - { - set_noclamp_rgba((uint8_t)sr, (uint8_t)sg, (uint8_t)sb, (uint8_t)sa); - } - - inline color_rgba& set_noclamp_y(int y) - { - m_comps[0] = (uint8_t)y; - m_comps[1] = (uint8_t)y; - m_comps[2] = (uint8_t)y; - m_comps[3] = (uint8_t)255; - return *this; - } - - inline color_rgba &set_noclamp_rgba(int sr, int sg, int sb, int sa) - { - m_comps[0] = (uint8_t)sr; - m_comps[1] = (uint8_t)sg; - m_comps[2] = (uint8_t)sb; - m_comps[3] = (uint8_t)sa; - return *this; - } - - inline color_rgba &set(int y) - { - m_comps[0] = static_cast(clamp(y, 0, 255)); - m_comps[1] = m_comps[0]; - m_comps[2] = m_comps[0]; - m_comps[3] = 255; - return *this; - } - - inline color_rgba &set(int y, int na) - { - m_comps[0] = static_cast(clamp(y, 0, 255)); - m_comps[1] = m_comps[0]; - m_comps[2] = m_comps[0]; - m_comps[3] = static_cast(clamp(na, 0, 255)); - return *this; - } - - inline color_rgba &set(int sr, int sg, int sb, int sa) - { - m_comps[0] = static_cast(clamp(sr, 0, 255)); - m_comps[1] = static_cast(clamp(sg, 0, 255)); - m_comps[2] = static_cast(clamp(sb, 0, 255)); - m_comps[3] = static_cast(clamp(sa, 0, 255)); - return *this; - } - - inline color_rgba &set_rgb(int sr, int sg, int sb) - { - m_comps[0] = static_cast(clamp(sr, 0, 255)); - m_comps[1] = static_cast(clamp(sg, 0, 255)); - m_comps[2] = static_cast(clamp(sb, 0, 255)); - return *this; - } - - inline color_rgba &set_rgb(const color_rgba &other) - { - r = other.r; - g = other.g; - b = other.b; - return *this; - } - - inline const uint8_t &operator[] (uint32_t index) const { assert(index < 4); return m_comps[index]; } - inline uint8_t &operator[] (uint32_t index) { assert(index < 4); return m_comps[index]; } - - inline void clear() - { - m_comps[0] = 0; - m_comps[1] = 0; - m_comps[2] = 0; - m_comps[3] = 0; - } - - inline bool operator== (const color_rgba &rhs) const - { - if (m_comps[0] != rhs.m_comps[0]) return false; - if (m_comps[1] != rhs.m_comps[1]) return false; - if (m_comps[2] != rhs.m_comps[2]) return false; - if (m_comps[3] != rhs.m_comps[3]) return false; - return true; - } - - inline bool operator!= (const color_rgba &rhs) const - { - return !(*this == rhs); - } - - inline bool operator<(const color_rgba &rhs) const - { - for (int i = 0; i < 4; i++) - { - if (m_comps[i] < rhs.m_comps[i]) - return true; - else if (m_comps[i] != rhs.m_comps[i]) - return false; - } - return false; - } - - inline int get_601_luma() const { return (19595U * m_comps[0] + 38470U * m_comps[1] + 7471U * m_comps[2] + 32768U) >> 16U; } - inline int get_709_luma() const { return (13938U * m_comps[0] + 46869U * m_comps[1] + 4729U * m_comps[2] + 32768U) >> 16U; } - inline int get_luma(bool luma_601) const { return luma_601 ? get_601_luma() : get_709_luma(); } - - static color_rgba comp_min(const color_rgba& a, const color_rgba& b) { return color_rgba(std::min(a[0], b[0]), std::min(a[1], b[1]), std::min(a[2], b[2]), std::min(a[3], b[3])); } - static color_rgba comp_max(const color_rgba& a, const color_rgba& b) { return color_rgba(std::max(a[0], b[0]), std::max(a[1], b[1]), std::max(a[2], b[2]), std::max(a[3], b[3])); } -}; - -bool unpack_bc7(const void *pBlock, color_rgba *pPixels); - -} // namespace bc7decomp diff --git a/src/rgbcx/test/bc7enc.c b/src/rgbcx/test/bc7enc.c deleted file mode 100644 index d2deb43..0000000 --- a/src/rgbcx/test/bc7enc.c +++ /dev/null @@ -1,2216 +0,0 @@ -// File: bc7enc.c - Richard Geldreich, Jr. 3/31/2020 - MIT license or public domain (see end of file) -// Currently supports modes 1, 6 for RGB blocks, and modes 5, 6, 7 for RGBA blocks. -// NOTE: This module is still a work in progress as of 3/31/2020. It needs to support more modes for RGB content. -#pragma GCC diagnostic ignored "-Weverything" - -#include "bc7enc.h" -#include -#include -#include -#include -#include - -// Helpers -static inline int32_t clampi(int32_t value, int32_t low, int32_t high) { if (value < low) value = low; else if (value > high) value = high; return value; } -static inline float clampf(float value, float low, float high) { if (value < low) value = low; else if (value > high) value = high; return value; } -static inline float saturate(float value) { return clampf(value, 0, 1.0f); } -static inline uint8_t minimumub(uint8_t a, uint8_t b) { return (a < b) ? a : b; } -static inline uint32_t minimumu(uint32_t a, uint32_t b) { return (a < b) ? a : b; } -static inline float minimumf(float a, float b) { return (a < b) ? a : b; } -static inline uint8_t maximumub(uint8_t a, uint8_t b) { return (a > b) ? a : b; } -static inline uint32_t maximumu(uint32_t a, uint32_t b) { return (a > b) ? a : b; } -static inline float maximumf(float a, float b) { return (a > b) ? a : b; } -static inline int squarei(int i) { return i * i; } -static inline float squaref(float i) { return i * i; } - -static inline int32_t iabs32(int32_t v) { uint32_t msk = v >> 31; return (v ^ msk) - msk; } -static inline void swapub(uint8_t* a, uint8_t* b) { uint8_t t = *a; *a = *b; *b = t; } -static inline void swapu(uint32_t* a, uint32_t* b) { uint32_t t = *a; *a = *b; *b = t; } -static inline void swapf(float* a, float* b) { float t = *a; *a = *b; *b = t; } - -typedef struct { uint8_t m_c[4]; } color_quad_u8; -typedef struct { float m_c[4]; } vec4F; - -static inline color_quad_u8 *color_quad_u8_set_clamped(color_quad_u8 *pRes, int32_t r, int32_t g, int32_t b, int32_t a) { pRes->m_c[0] = (uint8_t)clampi(r, 0, 255); pRes->m_c[1] = (uint8_t)clampi(g, 0, 255); pRes->m_c[2] = (uint8_t)clampi(b, 0, 255); pRes->m_c[3] = (uint8_t)clampi(a, 0, 255); return pRes; } -static inline color_quad_u8 *color_quad_u8_set(color_quad_u8 *pRes, int32_t r, int32_t g, int32_t b, int32_t a) { assert((uint32_t)(r | g | b | a) <= 255); pRes->m_c[0] = (uint8_t)r; pRes->m_c[1] = (uint8_t)g; pRes->m_c[2] = (uint8_t)b; pRes->m_c[3] = (uint8_t)a; return pRes; } -static inline bc7enc_bool color_quad_u8_notequals(const color_quad_u8 *pLHS, const color_quad_u8 *pRHS) { return (pLHS->m_c[0] != pRHS->m_c[0]) || (pLHS->m_c[1] != pRHS->m_c[1]) || (pLHS->m_c[2] != pRHS->m_c[2]) || (pLHS->m_c[3] != pRHS->m_c[3]); } -static inline vec4F *vec4F_set_scalar(vec4F *pV, float x) { pV->m_c[0] = x; pV->m_c[1] = x; pV->m_c[2] = x; pV->m_c[3] = x; return pV; } -static inline vec4F *vec4F_set(vec4F *pV, float x, float y, float z, float w) { pV->m_c[0] = x; pV->m_c[1] = y; pV->m_c[2] = z; pV->m_c[3] = w; return pV; } -static inline vec4F *vec4F_saturate_in_place(vec4F *pV) { pV->m_c[0] = saturate(pV->m_c[0]); pV->m_c[1] = saturate(pV->m_c[1]); pV->m_c[2] = saturate(pV->m_c[2]); pV->m_c[3] = saturate(pV->m_c[3]); return pV; } -static inline vec4F vec4F_saturate(const vec4F *pV) { vec4F res; res.m_c[0] = saturate(pV->m_c[0]); res.m_c[1] = saturate(pV->m_c[1]); res.m_c[2] = saturate(pV->m_c[2]); res.m_c[3] = saturate(pV->m_c[3]); return res; } -static inline vec4F vec4F_from_color(const color_quad_u8 *pC) { vec4F res; vec4F_set(&res, pC->m_c[0], pC->m_c[1], pC->m_c[2], pC->m_c[3]); return res; } -static inline vec4F vec4F_add(const vec4F *pLHS, const vec4F *pRHS) { vec4F res; vec4F_set(&res, pLHS->m_c[0] + pRHS->m_c[0], pLHS->m_c[1] + pRHS->m_c[1], pLHS->m_c[2] + pRHS->m_c[2], pLHS->m_c[3] + pRHS->m_c[3]); return res; } -static inline vec4F vec4F_sub(const vec4F *pLHS, const vec4F *pRHS) { vec4F res; vec4F_set(&res, pLHS->m_c[0] - pRHS->m_c[0], pLHS->m_c[1] - pRHS->m_c[1], pLHS->m_c[2] - pRHS->m_c[2], pLHS->m_c[3] - pRHS->m_c[3]); return res; } -static inline float vec4F_dot(const vec4F *pLHS, const vec4F *pRHS) { return pLHS->m_c[0] * pRHS->m_c[0] + pLHS->m_c[1] * pRHS->m_c[1] + pLHS->m_c[2] * pRHS->m_c[2] + pLHS->m_c[3] * pRHS->m_c[3]; } -static inline vec4F vec4F_mul(const vec4F *pLHS, float s) { vec4F res; vec4F_set(&res, pLHS->m_c[0] * s, pLHS->m_c[1] * s, pLHS->m_c[2] * s, pLHS->m_c[3] * s); return res; } -static inline vec4F *vec4F_normalize_in_place(vec4F *pV) { float s = pV->m_c[0] * pV->m_c[0] + pV->m_c[1] * pV->m_c[1] + pV->m_c[2] * pV->m_c[2] + pV->m_c[3] * pV->m_c[3]; if (s != 0.0f) { s = 1.0f / sqrtf(s); pV->m_c[0] *= s; pV->m_c[1] *= s; pV->m_c[2] *= s; pV->m_c[3] *= s; } return pV; } - -// Various BC7 tables -static const uint32_t g_bc7_weights2[4] = { 0, 21, 43, 64 }; -static const uint32_t g_bc7_weights3[8] = { 0, 9, 18, 27, 37, 46, 55, 64 }; -static const uint32_t g_bc7_weights4[16] = { 0, 4, 9, 13, 17, 21, 26, 30, 34, 38, 43, 47, 51, 55, 60, 64 }; -// Precomputed weight constants used during least fit determination. For each entry in g_bc7_weights[]: w * w, (1.0f - w) * w, (1.0f - w) * (1.0f - w), w -static const float g_bc7_weights2x[4 * 4] = { 0.000000f, 0.000000f, 1.000000f, 0.000000f, 0.107666f, 0.220459f, 0.451416f, 0.328125f, 0.451416f, 0.220459f, 0.107666f, 0.671875f, 1.000000f, 0.000000f, 0.000000f, 1.000000f }; -static const float g_bc7_weights3x[8 * 4] = { 0.000000f, 0.000000f, 1.000000f, 0.000000f, 0.019775f, 0.120850f, 0.738525f, 0.140625f, 0.079102f, 0.202148f, 0.516602f, 0.281250f, 0.177979f, 0.243896f, 0.334229f, 0.421875f, 0.334229f, 0.243896f, 0.177979f, 0.578125f, 0.516602f, 0.202148f, - 0.079102f, 0.718750f, 0.738525f, 0.120850f, 0.019775f, 0.859375f, 1.000000f, 0.000000f, 0.000000f, 1.000000f }; -static const float g_bc7_weights4x[16 * 4] = { 0.000000f, 0.000000f, 1.000000f, 0.000000f, 0.003906f, 0.058594f, 0.878906f, 0.062500f, 0.019775f, 0.120850f, 0.738525f, 0.140625f, 0.041260f, 0.161865f, 0.635010f, 0.203125f, 0.070557f, 0.195068f, 0.539307f, 0.265625f, 0.107666f, 0.220459f, - 0.451416f, 0.328125f, 0.165039f, 0.241211f, 0.352539f, 0.406250f, 0.219727f, 0.249023f, 0.282227f, 0.468750f, 0.282227f, 0.249023f, 0.219727f, 0.531250f, 0.352539f, 0.241211f, 0.165039f, 0.593750f, 0.451416f, 0.220459f, 0.107666f, 0.671875f, 0.539307f, 0.195068f, 0.070557f, 0.734375f, - 0.635010f, 0.161865f, 0.041260f, 0.796875f, 0.738525f, 0.120850f, 0.019775f, 0.859375f, 0.878906f, 0.058594f, 0.003906f, 0.937500f, 1.000000f, 0.000000f, 0.000000f, 1.000000f }; - -static const uint8_t g_bc7_partition1[16] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; -static const uint8_t g_bc7_partition2[64 * 16] = -{ - 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1, 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, 0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1, 0,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1, 0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1, 0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1, 0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1, 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1, 0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1, 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, - 0,0,0,0,1,0,0,0,1,1,1,0,1,1,1,1, 0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0, 0,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0, 0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0, 0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1, - 0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0, 0,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0, 0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0, 0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0, 0,0,0,1,0,1,1,1,1,1,1,0,1,0,0,0, 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0, 0,1,1,1,0,0,0,1,1,0,0,0,1,1,1,0, 0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0, - 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1, 0,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0, 0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0, 0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0, 0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0, 0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1, 0,1,0,1,1,0,1,0,1,0,1,0,0,1,0,1, - 0,1,1,1,0,0,1,1,1,1,0,0,1,1,1,0, 0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0, 0,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0, 0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0, 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, 0,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1, 0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1, 0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0, - 0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0, 0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0, 0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,0, 0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1, 0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,1, 0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0, 0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,0, - 0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,1, 0,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1, 0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1, 0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1, 0,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1, 0,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0, 0,0,1,0,0,0,1,0,1,1,1,0,1,1,1,0, 0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1 -}; - -static const uint8_t g_bc7_partition3[64 * 16] = -{ - 0,0,1,1,0,0,1,1,0,2,2,1,2,2,2,2, 0,0,0,1,0,0,1,1,2,2,1,1,2,2,2,1, 0,0,0,0,2,0,0,1,2,2,1,1,2,2,1,1, 0,2,2,2,0,0,2,2,0,0,1,1,0,1,1,1, 0,0,0,0,0,0,0,0,1,1,2,2,1,1,2,2, 0,0,1,1,0,0,1,1,0,0,2,2,0,0,2,2, 0,0,2,2,0,0,2,2,1,1,1,1,1,1,1,1, 0,0,1,1,0,0,1,1,2,2,1,1,2,2,1,1, - 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2, 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2, 0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2, 0,0,1,2,0,0,1,2,0,0,1,2,0,0,1,2, 0,1,1,2,0,1,1,2,0,1,1,2,0,1,1,2, 0,1,2,2,0,1,2,2,0,1,2,2,0,1,2,2, 0,0,1,1,0,1,1,2,1,1,2,2,1,2,2,2, 0,0,1,1,2,0,0,1,2,2,0,0,2,2,2,0, - 0,0,0,1,0,0,1,1,0,1,1,2,1,1,2,2, 0,1,1,1,0,0,1,1,2,0,0,1,2,2,0,0, 0,0,0,0,1,1,2,2,1,1,2,2,1,1,2,2, 0,0,2,2,0,0,2,2,0,0,2,2,1,1,1,1, 0,1,1,1,0,1,1,1,0,2,2,2,0,2,2,2, 0,0,0,1,0,0,0,1,2,2,2,1,2,2,2,1, 0,0,0,0,0,0,1,1,0,1,2,2,0,1,2,2, 0,0,0,0,1,1,0,0,2,2,1,0,2,2,1,0, - 0,1,2,2,0,1,2,2,0,0,1,1,0,0,0,0, 0,0,1,2,0,0,1,2,1,1,2,2,2,2,2,2, 0,1,1,0,1,2,2,1,1,2,2,1,0,1,1,0, 0,0,0,0,0,1,1,0,1,2,2,1,1,2,2,1, 0,0,2,2,1,1,0,2,1,1,0,2,0,0,2,2, 0,1,1,0,0,1,1,0,2,0,0,2,2,2,2,2, 0,0,1,1,0,1,2,2,0,1,2,2,0,0,1,1, 0,0,0,0,2,0,0,0,2,2,1,1,2,2,2,1, - 0,0,0,0,0,0,0,2,1,1,2,2,1,2,2,2, 0,2,2,2,0,0,2,2,0,0,1,2,0,0,1,1, 0,0,1,1,0,0,1,2,0,0,2,2,0,2,2,2, 0,1,2,0,0,1,2,0,0,1,2,0,0,1,2,0, 0,0,0,0,1,1,1,1,2,2,2,2,0,0,0,0, 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0, 0,1,2,0,2,0,1,2,1,2,0,1,0,1,2,0, 0,0,1,1,2,2,0,0,1,1,2,2,0,0,1,1, - 0,0,1,1,1,1,2,2,2,2,0,0,0,0,1,1, 0,1,0,1,0,1,0,1,2,2,2,2,2,2,2,2, 0,0,0,0,0,0,0,0,2,1,2,1,2,1,2,1, 0,0,2,2,1,1,2,2,0,0,2,2,1,1,2,2, 0,0,2,2,0,0,1,1,0,0,2,2,0,0,1,1, 0,2,2,0,1,2,2,1,0,2,2,0,1,2,2,1, 0,1,0,1,2,2,2,2,2,2,2,2,0,1,0,1, 0,0,0,0,2,1,2,1,2,1,2,1,2,1,2,1, - 0,1,0,1,0,1,0,1,0,1,0,1,2,2,2,2, 0,2,2,2,0,1,1,1,0,2,2,2,0,1,1,1, 0,0,0,2,1,1,1,2,0,0,0,2,1,1,1,2, 0,0,0,0,2,1,1,2,2,1,1,2,2,1,1,2, 0,2,2,2,0,1,1,1,0,1,1,1,0,2,2,2, 0,0,0,2,1,1,1,2,1,1,1,2,0,0,0,2, 0,1,1,0,0,1,1,0,0,1,1,0,2,2,2,2, 0,0,0,0,0,0,0,0,2,1,1,2,2,1,1,2, - 0,1,1,0,0,1,1,0,2,2,2,2,2,2,2,2, 0,0,2,2,0,0,1,1,0,0,1,1,0,0,2,2, 0,0,2,2,1,1,2,2,1,1,2,2,0,0,2,2, 0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,2, 0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1, 0,2,2,2,1,2,2,2,0,2,2,2,1,2,2,2, 0,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2, 0,1,1,1,2,0,1,1,2,2,0,1,2,2,2,0, -}; - -static const uint8_t g_bc7_table_anchor_index_third_subset_1[64] = -{ - 3, 3,15,15, 8, 3,15,15, 8, 8, 6, 6, 6, 5, 3, 3, 3, 3, 8,15, 3, 3, 6,10, 5, 8, 8, 6, 8, 5,15,15, 8,15, 3, 5, 6,10, 8,15, 15, 3,15, 5,15,15,15,15, 3,15, 5, 5, 5, 8, 5,10, 5,10, 8,13,15,12, 3, 3 -}; - -static const uint8_t g_bc7_table_anchor_index_third_subset_2[64] = -{ - 15, 8, 8, 3,15,15, 3, 8, 15,15,15,15,15,15,15, 8, 15, 8,15, 3,15, 8,15, 8, 3,15, 6,10,15,15,10, 8, 15, 3,15,10,10, 8, 9,10, 6,15, 8,15, 3, 6, 6, 8, 15, 3,15,15,15,15,15,15, 15,15,15,15, 3,15,15, 8 -}; - -static const uint8_t g_bc7_table_anchor_index_second_subset[64] = { 15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15, 15, 2, 8, 2, 2, 8, 8,15, 2, 8, 2, 2, 8, 8, 2, 2, 15,15, 6, 8, 2, 8,15,15, 2, 8, 2, 2, 2,15,15, 6, 6, 2, 6, 8,15,15, 2, 2, 15,15,15,15,15, 2, 2,15 }; -static const uint8_t g_bc7_num_subsets[8] = { 3, 2, 3, 2, 1, 1, 1, 2 }; -static const uint8_t g_bc7_partition_bits[8] = { 4, 6, 6, 6, 0, 0, 0, 6 }; -static const uint8_t g_bc7_color_index_bitcount[8] = { 3, 3, 2, 2, 2, 2, 4, 2 }; -static int get_bc7_color_index_size(int mode, int index_selection_bit) { return g_bc7_color_index_bitcount[mode] + index_selection_bit; } -static uint8_t g_bc7_alpha_index_bitcount[8] = { 0, 0, 0, 0, 3, 2, 4, 2 }; -static int get_bc7_alpha_index_size(int mode, int index_selection_bit) { return g_bc7_alpha_index_bitcount[mode] - index_selection_bit; } -static const uint8_t g_bc7_mode_has_p_bits[8] = { 1, 1, 0, 1, 0, 0, 1, 1 }; -static const uint8_t g_bc7_mode_has_shared_p_bits[8] = { 0, 1, 0, 0, 0, 0, 0, 0 }; -static const uint8_t g_bc7_color_precision_table[8] = { 4, 6, 5, 7, 5, 7, 7, 5 }; -static const int8_t g_bc7_alpha_precision_table[8] = { 0, 0, 0, 0, 6, 8, 7, 5 }; -static bc7enc_bool get_bc7_mode_has_seperate_alpha_selectors(int mode) { return (mode == 4) || (mode == 5); } - -typedef struct { uint16_t m_error; uint8_t m_lo; uint8_t m_hi; } endpoint_err; - -static endpoint_err g_bc7_mode_1_optimal_endpoints[256][2]; // [c][pbit] -static const uint32_t BC7ENC_MODE_1_OPTIMAL_INDEX = 2; - -static endpoint_err g_bc7_mode_7_optimal_endpoints[256][2][2]; // [c][pbit][hp][lp] -const uint32_t BC7E_MODE_7_OPTIMAL_INDEX = 1; - -// Initialize the lookup table used for optimal single color compression in mode 1. Must be called before encoding. -void bc7enc_compress_block_init() -{ - for (int c = 0; c < 256; c++) - { - for (uint32_t lp = 0; lp < 2; lp++) - { - endpoint_err best; - best.m_error = (uint16_t)UINT16_MAX; - for (uint32_t l = 0; l < 64; l++) - { - uint32_t low = ((l << 1) | lp) << 1; - low |= (low >> 7); - for (uint32_t h = 0; h < 64; h++) - { - uint32_t high = ((h << 1) | lp) << 1; - high |= (high >> 7); - const int k = (low * (64 - g_bc7_weights3[BC7ENC_MODE_1_OPTIMAL_INDEX]) + high * g_bc7_weights3[BC7ENC_MODE_1_OPTIMAL_INDEX] + 32) >> 6; - const int err = (k - c) * (k - c); - if (err < best.m_error) - { - best.m_error = (uint16_t)err; - best.m_lo = (uint8_t)l; - best.m_hi = (uint8_t)h; - } - } // h - } // l - g_bc7_mode_1_optimal_endpoints[c][lp] = best; - } // lp - } // c - - // Mode 7: 555.1 2-bit indices - for (int c = 0; c < 256; c++) - { - for (uint32_t hp = 0; hp < 2; hp++) - { - for (uint32_t lp = 0; lp < 2; lp++) - { - endpoint_err best; - best.m_error = (uint16_t)UINT16_MAX; - best.m_lo = 0; - best.m_hi = 0; - - for (uint32_t l = 0; l < 32; l++) - { - uint32_t low = ((l << 1) | lp) << 2; - low |= (low >> 6); - - for (uint32_t h = 0; h < 32; h++) - { - uint32_t high = ((h << 1) | hp) << 2; - high |= (high >> 6); - - const int k = (low * (64 - g_bc7_weights2[BC7E_MODE_7_OPTIMAL_INDEX]) + high * g_bc7_weights2[BC7E_MODE_7_OPTIMAL_INDEX] + 32) >> 6; - - const int err = (k - c) * (k - c); - if (err < best.m_error) - { - best.m_error = (uint16_t)err; - best.m_lo = (uint8_t)l; - best.m_hi = (uint8_t)h; - } - } // h - } // l - - g_bc7_mode_7_optimal_endpoints[c][hp][lp] = best; - - } // hp - - } // lp - - } // c -} - -static void compute_least_squares_endpoints_rgba(uint32_t N, const uint8_t *pSelectors, const vec4F *pSelector_weights, vec4F *pXl, vec4F *pXh, const color_quad_u8 *pColors) -{ - // Least squares using normal equations: http://www.cs.cornell.edu/~bindel/class/cs3220-s12/notes/lec10.pdf - // I did this in matrix form first, expanded out all the ops, then optimized it a bit. - float z00 = 0.0f, z01 = 0.0f, z10 = 0.0f, z11 = 0.0f; - float q00_r = 0.0f, q10_r = 0.0f, t_r = 0.0f; - float q00_g = 0.0f, q10_g = 0.0f, t_g = 0.0f; - float q00_b = 0.0f, q10_b = 0.0f, t_b = 0.0f; - float q00_a = 0.0f, q10_a = 0.0f, t_a = 0.0f; - for (uint32_t i = 0; i < N; i++) - { - const uint32_t sel = pSelectors[i]; - z00 += pSelector_weights[sel].m_c[0]; - z10 += pSelector_weights[sel].m_c[1]; - z11 += pSelector_weights[sel].m_c[2]; - float w = pSelector_weights[sel].m_c[3]; - q00_r += w * pColors[i].m_c[0]; t_r += pColors[i].m_c[0]; - q00_g += w * pColors[i].m_c[1]; t_g += pColors[i].m_c[1]; - q00_b += w * pColors[i].m_c[2]; t_b += pColors[i].m_c[2]; - q00_a += w * pColors[i].m_c[3]; t_a += pColors[i].m_c[3]; - } - - q10_r = t_r - q00_r; - q10_g = t_g - q00_g; - q10_b = t_b - q00_b; - q10_a = t_a - q00_a; - - z01 = z10; - - float det = z00 * z11 - z01 * z10; - if (det != 0.0f) - det = 1.0f / det; - - float iz00, iz01, iz10, iz11; - iz00 = z11 * det; - iz01 = -z01 * det; - iz10 = -z10 * det; - iz11 = z00 * det; - - pXl->m_c[0] = (float)(iz00 * q00_r + iz01 * q10_r); pXh->m_c[0] = (float)(iz10 * q00_r + iz11 * q10_r); - pXl->m_c[1] = (float)(iz00 * q00_g + iz01 * q10_g); pXh->m_c[1] = (float)(iz10 * q00_g + iz11 * q10_g); - pXl->m_c[2] = (float)(iz00 * q00_b + iz01 * q10_b); pXh->m_c[2] = (float)(iz10 * q00_b + iz11 * q10_b); - pXl->m_c[3] = (float)(iz00 * q00_a + iz01 * q10_a); pXh->m_c[3] = (float)(iz10 * q00_a + iz11 * q10_a); - - for (uint32_t c = 0; c < 4; c++) - { - if ((pXl->m_c[c] < 0.0f) || (pXh->m_c[c] > 255.0f)) - { - uint32_t lo_v = UINT32_MAX, hi_v = 0; - for (uint32_t i = 0; i < N; i++) - { - lo_v = minimumu(lo_v, pColors[i].m_c[c]); - hi_v = maximumu(hi_v, pColors[i].m_c[c]); - } - - if (lo_v == hi_v) - { - pXl->m_c[c] = (float)lo_v; - pXh->m_c[c] = (float)hi_v; - } - } - } -} - -static void compute_least_squares_endpoints_rgb(uint32_t N, const uint8_t *pSelectors, const vec4F *pSelector_weights, vec4F *pXl, vec4F *pXh, const color_quad_u8 *pColors) -{ - float z00 = 0.0f, z01 = 0.0f, z10 = 0.0f, z11 = 0.0f; - float q00_r = 0.0f, q10_r = 0.0f, t_r = 0.0f; - float q00_g = 0.0f, q10_g = 0.0f, t_g = 0.0f; - float q00_b = 0.0f, q10_b = 0.0f, t_b = 0.0f; - for (uint32_t i = 0; i < N; i++) - { - const uint32_t sel = pSelectors[i]; - z00 += pSelector_weights[sel].m_c[0]; - z10 += pSelector_weights[sel].m_c[1]; - z11 += pSelector_weights[sel].m_c[2]; - float w = pSelector_weights[sel].m_c[3]; - q00_r += w * pColors[i].m_c[0]; t_r += pColors[i].m_c[0]; - q00_g += w * pColors[i].m_c[1]; t_g += pColors[i].m_c[1]; - q00_b += w * pColors[i].m_c[2]; t_b += pColors[i].m_c[2]; - } - - q10_r = t_r - q00_r; - q10_g = t_g - q00_g; - q10_b = t_b - q00_b; - - z01 = z10; - - float det = z00 * z11 - z01 * z10; - if (det != 0.0f) - det = 1.0f / det; - - float iz00, iz01, iz10, iz11; - iz00 = z11 * det; - iz01 = -z01 * det; - iz10 = -z10 * det; - iz11 = z00 * det; - - pXl->m_c[0] = (float)(iz00 * q00_r + iz01 * q10_r); pXh->m_c[0] = (float)(iz10 * q00_r + iz11 * q10_r); - pXl->m_c[1] = (float)(iz00 * q00_g + iz01 * q10_g); pXh->m_c[1] = (float)(iz10 * q00_g + iz11 * q10_g); - pXl->m_c[2] = (float)(iz00 * q00_b + iz01 * q10_b); pXh->m_c[2] = (float)(iz10 * q00_b + iz11 * q10_b); - pXl->m_c[3] = 255.0f; pXh->m_c[3] = 255.0f; - - for (uint32_t c = 0; c < 3; c++) - { - if ((pXl->m_c[c] < 0.0f) || (pXh->m_c[c] > 255.0f)) - { - uint32_t lo_v = UINT32_MAX, hi_v = 0; - for (uint32_t i = 0; i < N; i++) - { - lo_v = minimumu(lo_v, pColors[i].m_c[c]); - hi_v = maximumu(hi_v, pColors[i].m_c[c]); - } - - if (lo_v == hi_v) - { - pXl->m_c[c] = (float)lo_v; - pXh->m_c[c] = (float)hi_v; - } - } - } -} - -static void compute_least_squares_endpoints_a(uint32_t N, const uint8_t* pSelectors, const vec4F* pSelector_weights, float* pXl, float* pXh, const color_quad_u8* pColors) -{ - // Least squares using normal equations: http://www.cs.cornell.edu/~bindel/class/cs3220-s12/notes/lec10.pdf - // I did this in matrix form first, expanded out all the ops, then optimized it a bit. - float z00 = 0.0f, z01 = 0.0f, z10 = 0.0f, z11 = 0.0f; - float q00_a = 0.0f, q10_a = 0.0f, t_a = 0.0f; - for (uint32_t i = 0; i < N; i++) - { - const uint32_t sel = pSelectors[i]; - - z00 += pSelector_weights[sel].m_c[0]; - z10 += pSelector_weights[sel].m_c[1]; - z11 += pSelector_weights[sel].m_c[2]; - - float w = pSelector_weights[sel].m_c[3]; - - q00_a += w * pColors[i].m_c[3]; t_a += pColors[i].m_c[3]; - } - - q10_a = t_a - q00_a; - - z01 = z10; - - float det = z00 * z11 - z01 * z10; - if (det != 0.0f) - det = 1.0f / det; - - float iz00, iz01, iz10, iz11; - iz00 = z11 * det; - iz01 = -z01 * det; - iz10 = -z10 * det; - iz11 = z00 * det; - - *pXl = (float)(iz00 * q00_a + iz01 * q10_a); *pXh = (float)(iz10 * q00_a + iz11 * q10_a); - - if ((*pXl < 0.0f) || (*pXh > 255.0f)) - { - uint32_t lo_v = UINT32_MAX, hi_v = 0; - for (uint32_t i = 0; i < N; i++) - { - lo_v = minimumu(lo_v, pColors[i].m_c[3]); - hi_v = maximumu(hi_v, pColors[i].m_c[3]); - } - - if (lo_v == hi_v) - { - *pXl = (float)lo_v; - *pXh = (float)hi_v; - } - } -} - -typedef struct -{ - uint32_t m_num_pixels; - const color_quad_u8 *m_pPixels; - uint32_t m_num_selector_weights; - const uint32_t *m_pSelector_weights; - const vec4F *m_pSelector_weightsx; - uint32_t m_comp_bits; - uint32_t m_weights[4]; - bc7enc_bool m_has_alpha; - bc7enc_bool m_has_pbits; - bc7enc_bool m_endpoints_share_pbit; - bc7enc_bool m_perceptual; -} color_cell_compressor_params; - -typedef struct -{ - uint64_t m_best_overall_err; - color_quad_u8 m_low_endpoint; - color_quad_u8 m_high_endpoint; - uint32_t m_pbits[2]; - uint8_t *m_pSelectors; - uint8_t *m_pSelectors_temp; -} color_cell_compressor_results; - -static inline color_quad_u8 scale_color(const color_quad_u8 *pC, const color_cell_compressor_params *pParams) -{ - color_quad_u8 results; - - const uint32_t n = pParams->m_comp_bits + (pParams->m_has_pbits ? 1 : 0); - assert((n >= 4) && (n <= 8)); - - for (uint32_t i = 0; i < 4; i++) - { - uint32_t v = pC->m_c[i] << (8 - n); - v |= (v >> n); - assert(v <= 255); - results.m_c[i] = (uint8_t)(v); - } - - return results; -} - -static inline uint64_t compute_color_distance_rgb(const color_quad_u8 *pE1, const color_quad_u8 *pE2, bc7enc_bool perceptual, const uint32_t weights[4]) -{ - int dr, dg, db; - - if (perceptual) - { - const int l1 = pE1->m_c[0] * 109 + pE1->m_c[1] * 366 + pE1->m_c[2] * 37; - const int cr1 = ((int)pE1->m_c[0] << 9) - l1; - const int cb1 = ((int)pE1->m_c[2] << 9) - l1; - const int l2 = pE2->m_c[0] * 109 + pE2->m_c[1] * 366 + pE2->m_c[2] * 37; - const int cr2 = ((int)pE2->m_c[0] << 9) - l2; - const int cb2 = ((int)pE2->m_c[2] << 9) - l2; - dr = (l1 - l2) >> 8; - dg = (cr1 - cr2) >> 8; - db = (cb1 - cb2) >> 8; - } - else - { - dr = (int)pE1->m_c[0] - (int)pE2->m_c[0]; - dg = (int)pE1->m_c[1] - (int)pE2->m_c[1]; - db = (int)pE1->m_c[2] - (int)pE2->m_c[2]; - } - - return weights[0] * (uint32_t)(dr * dr) + weights[1] * (uint32_t)(dg * dg) + weights[2] * (uint32_t)(db * db); -} - -static inline uint64_t compute_color_distance_rgba(const color_quad_u8 *pE1, const color_quad_u8 *pE2, bc7enc_bool perceptual, const uint32_t weights[4]) -{ - int da = (int)pE1->m_c[3] - (int)pE2->m_c[3]; - return compute_color_distance_rgb(pE1, pE2, perceptual, weights) + (weights[3] * (uint32_t)(da * da)); -} - -static uint64_t pack_mode1_to_one_color(const color_cell_compressor_params *pParams, color_cell_compressor_results *pResults, uint32_t r, uint32_t g, uint32_t b, uint8_t *pSelectors) -{ - uint32_t best_err = UINT_MAX; - uint32_t best_p = 0; - - for (uint32_t p = 0; p < 2; p++) - { - uint32_t err = g_bc7_mode_1_optimal_endpoints[r][p].m_error + g_bc7_mode_1_optimal_endpoints[g][p].m_error + g_bc7_mode_1_optimal_endpoints[b][p].m_error; - if (err < best_err) - { - best_err = err; - best_p = p; - if (!best_err) - break; - } - } - - const endpoint_err *pEr = &g_bc7_mode_1_optimal_endpoints[r][best_p]; - const endpoint_err *pEg = &g_bc7_mode_1_optimal_endpoints[g][best_p]; - const endpoint_err *pEb = &g_bc7_mode_1_optimal_endpoints[b][best_p]; - - color_quad_u8_set(&pResults->m_low_endpoint, pEr->m_lo, pEg->m_lo, pEb->m_lo, 0); - color_quad_u8_set(&pResults->m_high_endpoint, pEr->m_hi, pEg->m_hi, pEb->m_hi, 0); - pResults->m_pbits[0] = best_p; - pResults->m_pbits[1] = 0; - - memset(pSelectors, BC7ENC_MODE_1_OPTIMAL_INDEX, pParams->m_num_pixels); - - color_quad_u8 p; - for (uint32_t i = 0; i < 3; i++) - { - uint32_t low = ((pResults->m_low_endpoint.m_c[i] << 1) | pResults->m_pbits[0]) << 1; - low |= (low >> 7); - - uint32_t high = ((pResults->m_high_endpoint.m_c[i] << 1) | pResults->m_pbits[0]) << 1; - high |= (high >> 7); - - p.m_c[i] = (uint8_t)((low * (64 - g_bc7_weights3[BC7ENC_MODE_1_OPTIMAL_INDEX]) + high * g_bc7_weights3[BC7ENC_MODE_1_OPTIMAL_INDEX] + 32) >> 6); - } - p.m_c[3] = 255; - - uint64_t total_err = 0; - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - total_err += compute_color_distance_rgb(&p, &pParams->m_pPixels[i], pParams->m_perceptual, pParams->m_weights); - - pResults->m_best_overall_err = total_err; - - return total_err; -} - -static uint64_t pack_mode7_to_one_color(const color_cell_compressor_params* pParams, color_cell_compressor_results* pResults, uint32_t r, uint32_t g, uint32_t b, uint32_t a, - uint8_t* pSelectors, uint32_t num_pixels, const color_quad_u8* pPixels) -{ - uint32_t best_err = UINT_MAX; - uint32_t best_p = 0; - - for (uint32_t p = 0; p < 4; p++) - { - uint32_t hi_p = p >> 1; - uint32_t lo_p = p & 1; - uint32_t err = g_bc7_mode_7_optimal_endpoints[r][hi_p][lo_p].m_error + g_bc7_mode_7_optimal_endpoints[g][hi_p][lo_p].m_error + g_bc7_mode_7_optimal_endpoints[b][hi_p][lo_p].m_error + g_bc7_mode_7_optimal_endpoints[a][hi_p][lo_p].m_error; - if (err < best_err) - { - best_err = err; - best_p = p; - if (!best_err) - break; - } - } - - uint32_t best_hi_p = best_p >> 1; - uint32_t best_lo_p = best_p & 1; - - const endpoint_err* pEr = &g_bc7_mode_7_optimal_endpoints[r][best_hi_p][best_lo_p]; - const endpoint_err* pEg = &g_bc7_mode_7_optimal_endpoints[g][best_hi_p][best_lo_p]; - const endpoint_err* pEb = &g_bc7_mode_7_optimal_endpoints[b][best_hi_p][best_lo_p]; - const endpoint_err* pEa = &g_bc7_mode_7_optimal_endpoints[a][best_hi_p][best_lo_p]; - - color_quad_u8_set(&pResults->m_low_endpoint, pEr->m_lo, pEg->m_lo, pEb->m_lo, pEa->m_lo); - color_quad_u8_set(&pResults->m_high_endpoint, pEr->m_hi, pEg->m_hi, pEb->m_hi, pEa->m_hi); - pResults->m_pbits[0] = best_lo_p; - pResults->m_pbits[1] = best_hi_p; - - for (uint32_t i = 0; i < num_pixels; i++) - pSelectors[i] = BC7E_MODE_7_OPTIMAL_INDEX; - - color_quad_u8 p; - - for (uint32_t i = 0; i < 4; i++) - { - uint32_t low = (pResults->m_low_endpoint.m_c[i] << 1) | pResults->m_pbits[0]; - uint32_t high = (pResults->m_high_endpoint.m_c[i] << 1) | pResults->m_pbits[1]; - - low = (low << 2) | (low >> 6); - high = (high << 2) | (high >> 6); - - p.m_c[i] = (low * (64 - g_bc7_weights2[BC7E_MODE_7_OPTIMAL_INDEX]) + high * g_bc7_weights2[BC7E_MODE_7_OPTIMAL_INDEX] + 32) >> 6; - } - - uint64_t total_err = 0; - for (uint32_t i = 0; i < num_pixels; i++) - total_err += compute_color_distance_rgba(&p, &pPixels[i], pParams->m_perceptual, pParams->m_weights); - - pResults->m_best_overall_err = total_err; - - return total_err; -} - -static uint64_t evaluate_solution(const color_quad_u8 *pLow, const color_quad_u8 *pHigh, const uint32_t pbits[2], const color_cell_compressor_params *pParams, color_cell_compressor_results *pResults) -{ - color_quad_u8 quantMinColor = *pLow; - color_quad_u8 quantMaxColor = *pHigh; - - if (pParams->m_has_pbits) - { - uint32_t minPBit, maxPBit; - - if (pParams->m_endpoints_share_pbit) - maxPBit = minPBit = pbits[0]; - else - { - minPBit = pbits[0]; - maxPBit = pbits[1]; - } - - quantMinColor.m_c[0] = (uint8_t)((pLow->m_c[0] << 1) | minPBit); - quantMinColor.m_c[1] = (uint8_t)((pLow->m_c[1] << 1) | minPBit); - quantMinColor.m_c[2] = (uint8_t)((pLow->m_c[2] << 1) | minPBit); - quantMinColor.m_c[3] = (uint8_t)((pLow->m_c[3] << 1) | minPBit); - - quantMaxColor.m_c[0] = (uint8_t)((pHigh->m_c[0] << 1) | maxPBit); - quantMaxColor.m_c[1] = (uint8_t)((pHigh->m_c[1] << 1) | maxPBit); - quantMaxColor.m_c[2] = (uint8_t)((pHigh->m_c[2] << 1) | maxPBit); - quantMaxColor.m_c[3] = (uint8_t)((pHigh->m_c[3] << 1) | maxPBit); - } - - color_quad_u8 actualMinColor = scale_color(&quantMinColor, pParams); - color_quad_u8 actualMaxColor = scale_color(&quantMaxColor, pParams); - - const uint32_t N = pParams->m_num_selector_weights; - - color_quad_u8 weightedColors[16]; - weightedColors[0] = actualMinColor; - weightedColors[N - 1] = actualMaxColor; - - const uint32_t nc = pParams->m_has_alpha ? 4 : 3; - for (uint32_t i = 1; i < (N - 1); i++) - for (uint32_t j = 0; j < nc; j++) - weightedColors[i].m_c[j] = (uint8_t)((actualMinColor.m_c[j] * (64 - pParams->m_pSelector_weights[i]) + actualMaxColor.m_c[j] * pParams->m_pSelector_weights[i] + 32) >> 6); - - const int lr = actualMinColor.m_c[0]; - const int lg = actualMinColor.m_c[1]; - const int lb = actualMinColor.m_c[2]; - const int dr = actualMaxColor.m_c[0] - lr; - const int dg = actualMaxColor.m_c[1] - lg; - const int db = actualMaxColor.m_c[2] - lb; - - uint64_t total_err = 0; - - if (!pParams->m_perceptual) - { - if (pParams->m_has_alpha) - { - const int la = actualMinColor.m_c[3]; - const int da = actualMaxColor.m_c[3] - la; - - const float f = N / (float)(squarei(dr) + squarei(dg) + squarei(db) + squarei(da) + .00000125f); - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - const color_quad_u8 *pC = &pParams->m_pPixels[i]; - int r = pC->m_c[0]; - int g = pC->m_c[1]; - int b = pC->m_c[2]; - int a = pC->m_c[3]; - - int best_sel = (int)((float)((r - lr) * dr + (g - lg) * dg + (b - lb) * db + (a - la) * da) * f + .5f); - best_sel = clampi(best_sel, 1, N - 1); - - uint64_t err0 = compute_color_distance_rgba(&weightedColors[best_sel - 1], pC, BC7ENC_FALSE, pParams->m_weights); - uint64_t err1 = compute_color_distance_rgba(&weightedColors[best_sel], pC, BC7ENC_FALSE, pParams->m_weights); - - if (err1 > err0) - { - err1 = err0; - --best_sel; - } - total_err += err1; - - pResults->m_pSelectors_temp[i] = (uint8_t)best_sel; - } - } - else - { - const float f = N / (float)(squarei(dr) + squarei(dg) + squarei(db) + .00000125f); - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - const color_quad_u8 *pC = &pParams->m_pPixels[i]; - int r = pC->m_c[0]; - int g = pC->m_c[1]; - int b = pC->m_c[2]; - - int sel = (int)((float)((r - lr) * dr + (g - lg) * dg + (b - lb) * db) * f + .5f); - sel = clampi(sel, 1, N - 1); - - uint64_t err0 = compute_color_distance_rgb(&weightedColors[sel - 1], pC, BC7ENC_FALSE, pParams->m_weights); - uint64_t err1 = compute_color_distance_rgb(&weightedColors[sel], pC, BC7ENC_FALSE, pParams->m_weights); - - int best_sel = sel; - uint64_t best_err = err1; - if (err0 < best_err) - { - best_err = err0; - best_sel = sel - 1; - } - - total_err += best_err; - - pResults->m_pSelectors_temp[i] = (uint8_t)best_sel; - } - } - } - else - { - // TODO: This could be improved. - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - uint64_t best_err = UINT64_MAX; - uint32_t best_sel = 0; - - if (pParams->m_has_alpha) - { - for (uint32_t j = 0; j < N; j++) - { - uint64_t err = compute_color_distance_rgba(&weightedColors[j], &pParams->m_pPixels[i], BC7ENC_TRUE, pParams->m_weights); - if (err < best_err) - { - best_err = err; - best_sel = j; - } - } - } - else - { - for (uint32_t j = 0; j < N; j++) - { - uint64_t err = compute_color_distance_rgb(&weightedColors[j], &pParams->m_pPixels[i], BC7ENC_TRUE, pParams->m_weights); - if (err < best_err) - { - best_err = err; - best_sel = j; - } - } - } - - total_err += best_err; - - pResults->m_pSelectors_temp[i] = (uint8_t)best_sel; - } - } - - if (total_err < pResults->m_best_overall_err) - { - pResults->m_best_overall_err = total_err; - - pResults->m_low_endpoint = *pLow; - pResults->m_high_endpoint = *pHigh; - - pResults->m_pbits[0] = pbits[0]; - pResults->m_pbits[1] = pbits[1]; - - memcpy(pResults->m_pSelectors, pResults->m_pSelectors_temp, sizeof(pResults->m_pSelectors[0]) * pParams->m_num_pixels); - } - - return total_err; -} - -static void fixDegenerateEndpoints(uint32_t mode, color_quad_u8 *pTrialMinColor, color_quad_u8 *pTrialMaxColor, const vec4F *pXl, const vec4F *pXh, uint32_t iscale) -{ - //if ((mode == 1) || (mode == 7)) - if (mode == 1) - { - // fix degenerate case where the input collapses to a single colorspace voxel, and we loose all freedom (test with grayscale ramps) - for (uint32_t i = 0; i < 3; i++) - { - if (pTrialMinColor->m_c[i] == pTrialMaxColor->m_c[i]) - { - if (fabs(pXl->m_c[i] - pXh->m_c[i]) > 0.0f) - { - if (pTrialMinColor->m_c[i] > (iscale >> 1)) - { - if (pTrialMinColor->m_c[i] > 0) - pTrialMinColor->m_c[i]--; - else - if (pTrialMaxColor->m_c[i] < iscale) - pTrialMaxColor->m_c[i]++; - } - else - { - if (pTrialMaxColor->m_c[i] < iscale) - pTrialMaxColor->m_c[i]++; - else if (pTrialMinColor->m_c[i] > 0) - pTrialMinColor->m_c[i]--; - } - } - } - } - } -} - -static uint64_t find_optimal_solution(uint32_t mode, vec4F xl, vec4F xh, const color_cell_compressor_params *pParams, color_cell_compressor_results *pResults) -{ - vec4F_saturate_in_place(&xl); vec4F_saturate_in_place(&xh); - - if (pParams->m_has_pbits) - { - const int iscalep = (1 << (pParams->m_comp_bits + 1)) - 1; - const float scalep = (float)iscalep; - - const int32_t totalComps = pParams->m_has_alpha ? 4 : 3; - - uint32_t best_pbits[2]; - color_quad_u8 bestMinColor, bestMaxColor; - - if (!pParams->m_endpoints_share_pbit) - { - float best_err0 = 1e+9; - float best_err1 = 1e+9; - - for (int p = 0; p < 2; p++) - { - color_quad_u8 xMinColor, xMaxColor; - - // Notes: The pbit controls which quantization intervals are selected. - // total_levels=2^(comp_bits+1), where comp_bits=4 for mode 0, etc. - // pbit 0: v=(b*2)/(total_levels-1), pbit 1: v=(b*2+1)/(total_levels-1) where b is the component bin from [0,total_levels/2-1] and v is the [0,1] component value - // rearranging you get for pbit 0: b=floor(v*(total_levels-1)/2+.5) - // rearranging you get for pbit 1: b=floor((v*(total_levels-1)-1)/2+.5) - for (uint32_t c = 0; c < 4; c++) - { - xMinColor.m_c[c] = (uint8_t)(clampi(((int)((xl.m_c[c] * scalep - p) / 2.0f + .5f)) * 2 + p, p, iscalep - 1 + p)); - xMaxColor.m_c[c] = (uint8_t)(clampi(((int)((xh.m_c[c] * scalep - p) / 2.0f + .5f)) * 2 + p, p, iscalep - 1 + p)); - } - - color_quad_u8 scaledLow = scale_color(&xMinColor, pParams); - color_quad_u8 scaledHigh = scale_color(&xMaxColor, pParams); - - float err0 = 0, err1 = 0; - for (int i = 0; i < totalComps; i++) - { - err0 += squaref(scaledLow.m_c[i] - xl.m_c[i] * 255.0f); - err1 += squaref(scaledHigh.m_c[i] - xh.m_c[i] * 255.0f); - } - - if (err0 < best_err0) - { - best_err0 = err0; - best_pbits[0] = p; - - bestMinColor.m_c[0] = xMinColor.m_c[0] >> 1; - bestMinColor.m_c[1] = xMinColor.m_c[1] >> 1; - bestMinColor.m_c[2] = xMinColor.m_c[2] >> 1; - bestMinColor.m_c[3] = xMinColor.m_c[3] >> 1; - } - - if (err1 < best_err1) - { - best_err1 = err1; - best_pbits[1] = p; - - bestMaxColor.m_c[0] = xMaxColor.m_c[0] >> 1; - bestMaxColor.m_c[1] = xMaxColor.m_c[1] >> 1; - bestMaxColor.m_c[2] = xMaxColor.m_c[2] >> 1; - bestMaxColor.m_c[3] = xMaxColor.m_c[3] >> 1; - } - } - } - else - { - // Endpoints share pbits - float best_err = 1e+9; - - for (int p = 0; p < 2; p++) - { - color_quad_u8 xMinColor, xMaxColor; - for (uint32_t c = 0; c < 4; c++) - { - xMinColor.m_c[c] = (uint8_t)(clampi(((int)((xl.m_c[c] * scalep - p) / 2.0f + .5f)) * 2 + p, p, iscalep - 1 + p)); - xMaxColor.m_c[c] = (uint8_t)(clampi(((int)((xh.m_c[c] * scalep - p) / 2.0f + .5f)) * 2 + p, p, iscalep - 1 + p)); - } - - color_quad_u8 scaledLow = scale_color(&xMinColor, pParams); - color_quad_u8 scaledHigh = scale_color(&xMaxColor, pParams); - - float err = 0; - for (int i = 0; i < totalComps; i++) - err += squaref((scaledLow.m_c[i] / 255.0f) - xl.m_c[i]) + squaref((scaledHigh.m_c[i] / 255.0f) - xh.m_c[i]); - - if (err < best_err) - { - best_err = err; - best_pbits[0] = p; - best_pbits[1] = p; - for (uint32_t j = 0; j < 4; j++) - { - bestMinColor.m_c[j] = xMinColor.m_c[j] >> 1; - bestMaxColor.m_c[j] = xMaxColor.m_c[j] >> 1; - } - } - } - } - - fixDegenerateEndpoints(mode, &bestMinColor, &bestMaxColor, &xl, &xh, iscalep >> 1); - - if ((pResults->m_best_overall_err == UINT64_MAX) || color_quad_u8_notequals(&bestMinColor, &pResults->m_low_endpoint) || color_quad_u8_notequals(&bestMaxColor, &pResults->m_high_endpoint) || (best_pbits[0] != pResults->m_pbits[0]) || (best_pbits[1] != pResults->m_pbits[1])) - evaluate_solution(&bestMinColor, &bestMaxColor, best_pbits, pParams, pResults); - } - else - { - const int iscale = (1 << pParams->m_comp_bits) - 1; - const float scale = (float)iscale; - - color_quad_u8 trialMinColor, trialMaxColor; - color_quad_u8_set_clamped(&trialMinColor, (int)(xl.m_c[0] * scale + .5f), (int)(xl.m_c[1] * scale + .5f), (int)(xl.m_c[2] * scale + .5f), (int)(xl.m_c[3] * scale + .5f)); - color_quad_u8_set_clamped(&trialMaxColor, (int)(xh.m_c[0] * scale + .5f), (int)(xh.m_c[1] * scale + .5f), (int)(xh.m_c[2] * scale + .5f), (int)(xh.m_c[3] * scale + .5f)); - - fixDegenerateEndpoints(mode, &trialMinColor, &trialMaxColor, &xl, &xh, iscale); - - if ((pResults->m_best_overall_err == UINT64_MAX) || color_quad_u8_notequals(&trialMinColor, &pResults->m_low_endpoint) || color_quad_u8_notequals(&trialMaxColor, &pResults->m_high_endpoint)) - evaluate_solution(&trialMinColor, &trialMaxColor, pResults->m_pbits, pParams, pResults); - } - - return pResults->m_best_overall_err; -} - -static uint64_t color_cell_compression(uint32_t mode, const color_cell_compressor_params *pParams, color_cell_compressor_results *pResults, const bc7enc_compress_block_params *pComp_params) -{ - assert((mode == 6) || (mode == 7) || (!pParams->m_has_alpha)); - - pResults->m_best_overall_err = UINT64_MAX; - - // If the partition's colors are all the same in mode 1, then just pack them as a single color. - if (mode == 1) - { - const uint32_t cr = pParams->m_pPixels[0].m_c[0], cg = pParams->m_pPixels[0].m_c[1], cb = pParams->m_pPixels[0].m_c[2]; - - bc7enc_bool allSame = BC7ENC_TRUE; - for (uint32_t i = 1; i < pParams->m_num_pixels; i++) - { - if ((cr != pParams->m_pPixels[i].m_c[0]) || (cg != pParams->m_pPixels[i].m_c[1]) || (cb != pParams->m_pPixels[i].m_c[2])) - { - allSame = BC7ENC_FALSE; - break; - } - } - - if (allSame) - return pack_mode1_to_one_color(pParams, pResults, cr, cg, cb, pResults->m_pSelectors); - } - else if (mode == 7) - { - const uint32_t cr = pParams->m_pPixels[0].m_c[0], cg = pParams->m_pPixels[0].m_c[1], cb = pParams->m_pPixels[0].m_c[2], ca = pParams->m_pPixels[0].m_c[3]; - - bc7enc_bool allSame = BC7ENC_TRUE; - for (uint32_t i = 1; i < pParams->m_num_pixels; i++) - { - if ((cr != pParams->m_pPixels[i].m_c[0]) || (cg != pParams->m_pPixels[i].m_c[1]) || (cb != pParams->m_pPixels[i].m_c[2]) || (ca != pParams->m_pPixels[i].m_c[3])) - { - allSame = BC7ENC_FALSE; - break; - } - } - - if (allSame) - return pack_mode7_to_one_color(pParams, pResults, cr, cg, cb, ca, pResults->m_pSelectors, pParams->m_num_pixels, pParams->m_pPixels); - } - - // Compute partition's mean color and principle axis. - vec4F meanColor, axis; - vec4F_set_scalar(&meanColor, 0.0f); - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - vec4F color = vec4F_from_color(&pParams->m_pPixels[i]); - meanColor = vec4F_add(&meanColor, &color); - } - - vec4F meanColorScaled = vec4F_mul(&meanColor, 1.0f / (float)(pParams->m_num_pixels)); - - meanColor = vec4F_mul(&meanColor, 1.0f / (float)(pParams->m_num_pixels * 255.0f)); - vec4F_saturate_in_place(&meanColor); - - if (pParams->m_has_alpha) - { - // Use incremental PCA for RGBA PCA, because it's simple. - vec4F_set_scalar(&axis, 0.0f); - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - vec4F color = vec4F_from_color(&pParams->m_pPixels[i]); - color = vec4F_sub(&color, &meanColorScaled); - vec4F a = vec4F_mul(&color, color.m_c[0]); - vec4F b = vec4F_mul(&color, color.m_c[1]); - vec4F c = vec4F_mul(&color, color.m_c[2]); - vec4F d = vec4F_mul(&color, color.m_c[3]); - vec4F n = i ? axis : color; - vec4F_normalize_in_place(&n); - axis.m_c[0] += vec4F_dot(&a, &n); - axis.m_c[1] += vec4F_dot(&b, &n); - axis.m_c[2] += vec4F_dot(&c, &n); - axis.m_c[3] += vec4F_dot(&d, &n); - } - vec4F_normalize_in_place(&axis); - } - else - { - // Use covar technique for RGB PCA, because it doesn't require per-pixel normalization. - float cov[6] = { 0, 0, 0, 0, 0, 0 }; - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - const color_quad_u8 *pV = &pParams->m_pPixels[i]; - float r = pV->m_c[0] - meanColorScaled.m_c[0]; - float g = pV->m_c[1] - meanColorScaled.m_c[1]; - float b = pV->m_c[2] - meanColorScaled.m_c[2]; - cov[0] += r*r; cov[1] += r*g; cov[2] += r*b; cov[3] += g*g; cov[4] += g*b; cov[5] += b*b; - } - - float vfr = .9f, vfg = 1.0f, vfb = .7f; - for (uint32_t iter = 0; iter < 3; iter++) - { - float r = vfr*cov[0] + vfg*cov[1] + vfb*cov[2]; - float g = vfr*cov[1] + vfg*cov[3] + vfb*cov[4]; - float b = vfr*cov[2] + vfg*cov[4] + vfb*cov[5]; - - float m = maximumf(maximumf(fabsf(r), fabsf(g)), fabsf(b)); - if (m > 1e-10f) - { - m = 1.0f / m; - r *= m; g *= m; b *= m; - } - - vfr = r; vfg = g; vfb = b; - } - - float len = vfr*vfr + vfg*vfg + vfb*vfb; - if (len < 1e-10f) - vec4F_set_scalar(&axis, 0.0f); - else - { - len = 1.0f / sqrtf(len); - vfr *= len; vfg *= len; vfb *= len; - vec4F_set(&axis, vfr, vfg, vfb, 0); - } - } - - // TODO: Try picking the 2 colors with the largest projection onto the axis, instead of computing new colors along the axis. - - if (vec4F_dot(&axis, &axis) < .5f) - { - if (pParams->m_perceptual) - vec4F_set(&axis, .213f, .715f, .072f, pParams->m_has_alpha ? .715f : 0); - else - vec4F_set(&axis, 1.0f, 1.0f, 1.0f, pParams->m_has_alpha ? 1.0f : 0); - vec4F_normalize_in_place(&axis); - } - - float l = 1e+9f, h = -1e+9f; - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - vec4F color = vec4F_from_color(&pParams->m_pPixels[i]); - - vec4F q = vec4F_sub(&color, &meanColorScaled); - float d = vec4F_dot(&q, &axis); - - l = minimumf(l, d); - h = maximumf(h, d); - } - - l *= (1.0f / 255.0f); - h *= (1.0f / 255.0f); - - vec4F b0 = vec4F_mul(&axis, l); - vec4F b1 = vec4F_mul(&axis, h); - vec4F c0 = vec4F_add(&meanColor, &b0); - vec4F c1 = vec4F_add(&meanColor, &b1); - vec4F minColor = vec4F_saturate(&c0); - vec4F maxColor = vec4F_saturate(&c1); - - vec4F whiteVec; - vec4F_set_scalar(&whiteVec, 1.0f); - - if (vec4F_dot(&minColor, &whiteVec) > vec4F_dot(&maxColor, &whiteVec)) - { -#if 0 - // Don't compile correctly with VC 2019 in release. - vec4F temp = minColor; - minColor = maxColor; - maxColor = temp; -#else - float a = minColor.m_c[0], b = minColor.m_c[1], c = minColor.m_c[2], d = minColor.m_c[3]; - minColor.m_c[0] = maxColor.m_c[0]; - minColor.m_c[1] = maxColor.m_c[1]; - minColor.m_c[2] = maxColor.m_c[2]; - minColor.m_c[3] = maxColor.m_c[3]; - maxColor.m_c[0] = a; - maxColor.m_c[1] = b; - maxColor.m_c[2] = c; - maxColor.m_c[3] = d; -#endif - } - - // First find a solution using the block's PCA. - if (!find_optimal_solution(mode, minColor, maxColor, pParams, pResults)) - return 0; - - if (pComp_params->m_try_least_squares) - { - // Now try to refine the solution using least squares by computing the optimal endpoints from the current selectors. - vec4F xl, xh; - vec4F_set_scalar(&xl, 0.0f); - vec4F_set_scalar(&xh, 0.0f); - if (pParams->m_has_alpha) - compute_least_squares_endpoints_rgba(pParams->m_num_pixels, pResults->m_pSelectors, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - else - compute_least_squares_endpoints_rgb(pParams->m_num_pixels, pResults->m_pSelectors, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - - xl = vec4F_mul(&xl, (1.0f / 255.0f)); - xh = vec4F_mul(&xh, (1.0f / 255.0f)); - - if (!find_optimal_solution(mode, xl, xh, pParams, pResults)) - return 0; - } - - if (pComp_params->m_uber_level > 0) - { - // In uber level 1, try varying the selectors a little, somewhat like cluster fit would. First try incrementing the minimum selectors, - // then try decrementing the selectrors, then try both. - uint8_t selectors_temp[16], selectors_temp1[16]; - memcpy(selectors_temp, pResults->m_pSelectors, pParams->m_num_pixels); - - const int max_selector = pParams->m_num_selector_weights - 1; - - uint32_t min_sel = 16; - uint32_t max_sel = 0; - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - uint32_t sel = selectors_temp[i]; - min_sel = minimumu(min_sel, sel); - max_sel = maximumu(max_sel, sel); - } - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - uint32_t sel = selectors_temp[i]; - if ((sel == min_sel) && (sel < (pParams->m_num_selector_weights - 1))) - sel++; - selectors_temp1[i] = (uint8_t)sel; - } - - vec4F xl, xh; - vec4F_set_scalar(&xl, 0.0f); - vec4F_set_scalar(&xh, 0.0f); - if (pParams->m_has_alpha) - compute_least_squares_endpoints_rgba(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - else - compute_least_squares_endpoints_rgb(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - - xl = vec4F_mul(&xl, (1.0f / 255.0f)); - xh = vec4F_mul(&xh, (1.0f / 255.0f)); - - if (!find_optimal_solution(mode, xl, xh, pParams, pResults)) - return 0; - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - uint32_t sel = selectors_temp[i]; - if ((sel == max_sel) && (sel > 0)) - sel--; - selectors_temp1[i] = (uint8_t)sel; - } - - if (pParams->m_has_alpha) - compute_least_squares_endpoints_rgba(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - else - compute_least_squares_endpoints_rgb(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - - xl = vec4F_mul(&xl, (1.0f / 255.0f)); - xh = vec4F_mul(&xh, (1.0f / 255.0f)); - - if (!find_optimal_solution(mode, xl, xh, pParams, pResults)) - return 0; - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - { - uint32_t sel = selectors_temp[i]; - if ((sel == min_sel) && (sel < (pParams->m_num_selector_weights - 1))) - sel++; - else if ((sel == max_sel) && (sel > 0)) - sel--; - selectors_temp1[i] = (uint8_t)sel; - } - - if (pParams->m_has_alpha) - compute_least_squares_endpoints_rgba(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - else - compute_least_squares_endpoints_rgb(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - - xl = vec4F_mul(&xl, (1.0f / 255.0f)); - xh = vec4F_mul(&xh, (1.0f / 255.0f)); - - if (!find_optimal_solution(mode, xl, xh, pParams, pResults)) - return 0; - - // In uber levels 2+, try taking more advantage of endpoint extrapolation by scaling the selectors in one direction or another. - const uint32_t uber_err_thresh = (pParams->m_num_pixels * 56) >> 4; - if ((pComp_params->m_uber_level >= 2) && (pResults->m_best_overall_err > uber_err_thresh)) - { - const int Q = (pComp_params->m_uber_level >= 4) ? (pComp_params->m_uber_level - 2) : 1; - for (int ly = -Q; ly <= 1; ly++) - { - for (int hy = max_selector - 1; hy <= (max_selector + Q); hy++) - { - if ((ly == 0) && (hy == max_selector)) - continue; - - for (uint32_t i = 0; i < pParams->m_num_pixels; i++) - selectors_temp1[i] = (uint8_t)clampf(floorf((float)max_selector * ((float)selectors_temp[i] - (float)ly) / ((float)hy - (float)ly) + .5f), 0, (float)max_selector); - - //vec4F xl, xh; - vec4F_set_scalar(&xl, 0.0f); - vec4F_set_scalar(&xh, 0.0f); - if (pParams->m_has_alpha) - compute_least_squares_endpoints_rgba(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - else - compute_least_squares_endpoints_rgb(pParams->m_num_pixels, selectors_temp1, pParams->m_pSelector_weightsx, &xl, &xh, pParams->m_pPixels); - - xl = vec4F_mul(&xl, (1.0f / 255.0f)); - xh = vec4F_mul(&xh, (1.0f / 255.0f)); - - if (!find_optimal_solution(mode, xl, xh, pParams, pResults)) - return 0; - } - } - } - } - - if (mode == 1) - { - // Try encoding the partition as a single color by using the optimal singe colors tables to encode the block to its mean. - color_cell_compressor_results avg_results = *pResults; - const uint32_t r = (int)(.5f + meanColor.m_c[0] * 255.0f), g = (int)(.5f + meanColor.m_c[1] * 255.0f), b = (int)(.5f + meanColor.m_c[2] * 255.0f); - uint64_t avg_err = pack_mode1_to_one_color(pParams, &avg_results, r, g, b, pResults->m_pSelectors_temp); - if (avg_err < pResults->m_best_overall_err) - { - *pResults = avg_results; - memcpy(pResults->m_pSelectors, pResults->m_pSelectors_temp, sizeof(pResults->m_pSelectors[0]) * pParams->m_num_pixels); - pResults->m_best_overall_err = avg_err; - } - } - else if (mode == 7) - { - // Try encoding the partition as a single color by using the optimal singe colors tables to encode the block to its mean. - color_cell_compressor_results avg_results = *pResults; - const uint32_t r = (int)(.5f + meanColor.m_c[0] * 255.0f), g = (int)(.5f + meanColor.m_c[1] * 255.0f), b = (int)(.5f + meanColor.m_c[2] * 255.0f), a = (int)(.5f + meanColor.m_c[3] * 255.0f); - uint64_t avg_err = pack_mode7_to_one_color(pParams, &avg_results, r, g, b, a, pResults->m_pSelectors_temp, pParams->m_num_pixels, pParams->m_pPixels); - if (avg_err < pResults->m_best_overall_err) - { - *pResults = avg_results; - memcpy(pResults->m_pSelectors, pResults->m_pSelectors_temp, sizeof(pResults->m_pSelectors[0]) * pParams->m_num_pixels); - pResults->m_best_overall_err = avg_err; - } - } - - return pResults->m_best_overall_err; -} - -static uint64_t color_cell_compression_est_mode1(uint32_t num_pixels, const color_quad_u8 *pPixels, bc7enc_bool perceptual, uint32_t pweights[4], uint64_t best_err_so_far) -{ - // Find RGB bounds as an approximation of the block's principle axis - uint32_t lr = 255, lg = 255, lb = 255; - uint32_t hr = 0, hg = 0, hb = 0; - for (uint32_t i = 0; i < num_pixels; i++) - { - const color_quad_u8 *pC = &pPixels[i]; - if (pC->m_c[0] < lr) lr = pC->m_c[0]; - if (pC->m_c[1] < lg) lg = pC->m_c[1]; - if (pC->m_c[2] < lb) lb = pC->m_c[2]; - if (pC->m_c[0] > hr) hr = pC->m_c[0]; - if (pC->m_c[1] > hg) hg = pC->m_c[1]; - if (pC->m_c[2] > hb) hb = pC->m_c[2]; - } - - color_quad_u8 lowColor; color_quad_u8_set(&lowColor, lr, lg, lb, 0); - color_quad_u8 highColor; color_quad_u8_set(&highColor, hr, hg, hb, 0); - - // Place endpoints at bbox diagonals and compute interpolated colors - const uint32_t N = 8; - color_quad_u8 weightedColors[8]; - - weightedColors[0] = lowColor; - weightedColors[N - 1] = highColor; - for (uint32_t i = 1; i < (N - 1); i++) - { - weightedColors[i].m_c[0] = (uint8_t)((lowColor.m_c[0] * (64 - g_bc7_weights3[i]) + highColor.m_c[0] * g_bc7_weights3[i] + 32) >> 6); - weightedColors[i].m_c[1] = (uint8_t)((lowColor.m_c[1] * (64 - g_bc7_weights3[i]) + highColor.m_c[1] * g_bc7_weights3[i] + 32) >> 6); - weightedColors[i].m_c[2] = (uint8_t)((lowColor.m_c[2] * (64 - g_bc7_weights3[i]) + highColor.m_c[2] * g_bc7_weights3[i] + 32) >> 6); - } - - // Compute dots and thresholds - const int ar = highColor.m_c[0] - lowColor.m_c[0]; - const int ag = highColor.m_c[1] - lowColor.m_c[1]; - const int ab = highColor.m_c[2] - lowColor.m_c[2]; - - int dots[8]; - for (uint32_t i = 0; i < N; i++) - dots[i] = weightedColors[i].m_c[0] * ar + weightedColors[i].m_c[1] * ag + weightedColors[i].m_c[2] * ab; - - int thresh[8 - 1]; - for (uint32_t i = 0; i < (N - 1); i++) - thresh[i] = (dots[i] + dots[i + 1] + 1) >> 1; - - uint64_t total_err = 0; - if (perceptual) - { - // Transform block's interpolated colors to YCbCr - int l1[8], cr1[8], cb1[8]; - for (int j = 0; j < 8; j++) - { - const color_quad_u8 *pE1 = &weightedColors[j]; - l1[j] = pE1->m_c[0] * 109 + pE1->m_c[1] * 366 + pE1->m_c[2] * 37; - cr1[j] = ((int)pE1->m_c[0] << 9) - l1[j]; - cb1[j] = ((int)pE1->m_c[2] << 9) - l1[j]; - } - - for (uint32_t i = 0; i < num_pixels; i++) - { - const color_quad_u8 *pC = &pPixels[i]; - - int d = ar * pC->m_c[0] + ag * pC->m_c[1] + ab * pC->m_c[2]; - - // Find approximate selector - uint32_t s = 0; - if (d >= thresh[6]) - s = 7; - else if (d >= thresh[5]) - s = 6; - else if (d >= thresh[4]) - s = 5; - else if (d >= thresh[3]) - s = 4; - else if (d >= thresh[2]) - s = 3; - else if (d >= thresh[1]) - s = 2; - else if (d >= thresh[0]) - s = 1; - - // Compute error - const int l2 = pC->m_c[0] * 109 + pC->m_c[1] * 366 + pC->m_c[2] * 37; - const int cr2 = ((int)pC->m_c[0] << 9) - l2; - const int cb2 = ((int)pC->m_c[2] << 9) - l2; - - const int dl = (l1[s] - l2) >> 8; - const int dcr = (cr1[s] - cr2) >> 8; - const int dcb = (cb1[s] - cb2) >> 8; - - int ie = (pweights[0] * dl * dl) + (pweights[1] * dcr * dcr) + (pweights[2] * dcb * dcb); - - total_err += ie; - if (total_err > best_err_so_far) - break; - } - } - else - { - for (uint32_t i = 0; i < num_pixels; i++) - { - const color_quad_u8 *pC = &pPixels[i]; - - int d = ar * pC->m_c[0] + ag * pC->m_c[1] + ab * pC->m_c[2]; - - // Find approximate selector - uint32_t s = 0; - if (d >= thresh[6]) - s = 7; - else if (d >= thresh[5]) - s = 6; - else if (d >= thresh[4]) - s = 5; - else if (d >= thresh[3]) - s = 4; - else if (d >= thresh[2]) - s = 3; - else if (d >= thresh[1]) - s = 2; - else if (d >= thresh[0]) - s = 1; - - // Compute error - const color_quad_u8 *pE1 = &weightedColors[s]; - - int dr = (int)pE1->m_c[0] - (int)pC->m_c[0]; - int dg = (int)pE1->m_c[1] - (int)pC->m_c[1]; - int db = (int)pE1->m_c[2] - (int)pC->m_c[2]; - - total_err += pweights[0] * (dr * dr) + pweights[1] * (dg * dg) + pweights[2] * (db * db); - if (total_err > best_err_so_far) - break; - } - } - - return total_err; -} - -static uint64_t color_cell_compression_est_mode7(uint32_t num_pixels, const color_quad_u8* pPixels, bc7enc_bool perceptual, uint32_t pweights[4], uint64_t best_err_so_far) -{ - // Find RGB bounds as an approximation of the block's principle axis - uint32_t lr = 255, lg = 255, lb = 255, la = 255; - uint32_t hr = 0, hg = 0, hb = 0, ha = 0; - for (uint32_t i = 0; i < num_pixels; i++) - { - const color_quad_u8* pC = &pPixels[i]; - if (pC->m_c[0] < lr) lr = pC->m_c[0]; - if (pC->m_c[1] < lg) lg = pC->m_c[1]; - if (pC->m_c[2] < lb) lb = pC->m_c[2]; - if (pC->m_c[3] < la) la = pC->m_c[3]; - - if (pC->m_c[0] > hr) hr = pC->m_c[0]; - if (pC->m_c[1] > hg) hg = pC->m_c[1]; - if (pC->m_c[2] > hb) hb = pC->m_c[2]; - if (pC->m_c[3] > ha) ha = pC->m_c[3]; - } - - color_quad_u8 lowColor; color_quad_u8_set(&lowColor, lr, lg, lb, la); - color_quad_u8 highColor; color_quad_u8_set(&highColor, hr, hg, hb, ha); - - // Place endpoints at bbox diagonals and compute interpolated colors - const uint32_t N = 4; - color_quad_u8 weightedColors[4]; - - weightedColors[0] = lowColor; - weightedColors[N - 1] = highColor; - for (uint32_t i = 1; i < (N - 1); i++) - { - weightedColors[i].m_c[0] = (uint8_t)((lowColor.m_c[0] * (64 - g_bc7_weights2[i]) + highColor.m_c[0] * g_bc7_weights2[i] + 32) >> 6); - weightedColors[i].m_c[1] = (uint8_t)((lowColor.m_c[1] * (64 - g_bc7_weights2[i]) + highColor.m_c[1] * g_bc7_weights2[i] + 32) >> 6); - weightedColors[i].m_c[2] = (uint8_t)((lowColor.m_c[2] * (64 - g_bc7_weights2[i]) + highColor.m_c[2] * g_bc7_weights2[i] + 32) >> 6); - weightedColors[i].m_c[3] = (uint8_t)((lowColor.m_c[3] * (64 - g_bc7_weights2[i]) + highColor.m_c[3] * g_bc7_weights2[i] + 32) >> 6); - } - - // Compute dots and thresholds - const int ar = highColor.m_c[0] - lowColor.m_c[0]; - const int ag = highColor.m_c[1] - lowColor.m_c[1]; - const int ab = highColor.m_c[2] - lowColor.m_c[2]; - const int aa = highColor.m_c[3] - lowColor.m_c[3]; - - int dots[4]; - for (uint32_t i = 0; i < N; i++) - dots[i] = weightedColors[i].m_c[0] * ar + weightedColors[i].m_c[1] * ag + weightedColors[i].m_c[2] * ab + weightedColors[i].m_c[3] * aa; - - int thresh[4 - 1]; - for (uint32_t i = 0; i < (N - 1); i++) - thresh[i] = (dots[i] + dots[i + 1] + 1) >> 1; - - uint64_t total_err = 0; - if (perceptual) - { - // Transform block's interpolated colors to YCbCr - int l1[4], cr1[4], cb1[4]; - for (int j = 0; j < 4; j++) - { - const color_quad_u8* pE1 = &weightedColors[j]; - l1[j] = pE1->m_c[0] * 109 + pE1->m_c[1] * 366 + pE1->m_c[2] * 37; - cr1[j] = ((int)pE1->m_c[0] << 9) - l1[j]; - cb1[j] = ((int)pE1->m_c[2] << 9) - l1[j]; - } - - for (uint32_t i = 0; i < num_pixels; i++) - { - const color_quad_u8* pC = &pPixels[i]; - - int d = ar * pC->m_c[0] + ag * pC->m_c[1] + ab * pC->m_c[2] + aa * pC->m_c[3]; - - // Find approximate selector - uint32_t s = 0; - if (d >= thresh[2]) - s = 3; - else if (d >= thresh[1]) - s = 2; - else if (d >= thresh[0]) - s = 1; - - // Compute error - const int l2 = pC->m_c[0] * 109 + pC->m_c[1] * 366 + pC->m_c[2] * 37; - const int cr2 = ((int)pC->m_c[0] << 9) - l2; - const int cb2 = ((int)pC->m_c[2] << 9) - l2; - - const int dl = (l1[s] - l2) >> 8; - const int dcr = (cr1[s] - cr2) >> 8; - const int dcb = (cb1[s] - cb2) >> 8; - - const int dca = (int)pC->m_c[3] - (int)weightedColors[s].m_c[3]; - - int ie = (pweights[0] * dl * dl) + (pweights[1] * dcr * dcr) + (pweights[2] * dcb * dcb) + (pweights[3] * dca * dca); - - total_err += ie; - if (total_err > best_err_so_far) - break; - } - } - else - { - for (uint32_t i = 0; i < num_pixels; i++) - { - const color_quad_u8* pC = &pPixels[i]; - - int d = ar * pC->m_c[0] + ag * pC->m_c[1] + ab * pC->m_c[2] + aa * pC->m_c[3]; - - // Find approximate selector - uint32_t s = 0; - if (d >= thresh[2]) - s = 3; - else if (d >= thresh[1]) - s = 2; - else if (d >= thresh[0]) - s = 1; - - // Compute error - const color_quad_u8* pE1 = &weightedColors[s]; - - int dr = (int)pE1->m_c[0] - (int)pC->m_c[0]; - int dg = (int)pE1->m_c[1] - (int)pC->m_c[1]; - int db = (int)pE1->m_c[2] - (int)pC->m_c[2]; - int da = (int)pE1->m_c[3] - (int)pC->m_c[3]; - - total_err += pweights[0] * (dr * dr) + pweights[1] * (dg * dg) + pweights[2] * (db * db) + pweights[3] * (da * da); - if (total_err > best_err_so_far) - break; - } - } - - return total_err; -} - -// This table contains bitmasks indicating which "key" partitions must be best ranked before this partition is worth evaluating. -// We first rank the best/most used 14 partitions (sorted by usefulness), record the best one found as the key partition, then use -// that to control the other partitions to evaluate. The quality loss is ~.08 dB RGB PSNR, the perf gain is up to ~11% (at uber level 0). -static const uint32_t g_partition_predictors[35] = -{ - UINT32_MAX, - UINT32_MAX, - UINT32_MAX, - UINT32_MAX, - UINT32_MAX, - (1 << 1) | (1 << 2) | (1 << 8), - (1 << 1) | (1 << 3) | (1 << 7), - UINT32_MAX, - UINT32_MAX, - (1 << 2) | (1 << 8) | (1 << 16), - (1 << 7) | (1 << 3) | (1 << 15), - UINT32_MAX, - (1 << 8) | (1 << 14) | (1 << 16), - (1 << 7) | (1 << 14) | (1 << 15), - UINT32_MAX, - UINT32_MAX, - UINT32_MAX, - UINT32_MAX, - (1 << 14) | (1 << 15), - (1 << 16) | (1 << 22) | (1 << 14), - (1 << 17) | (1 << 24) | (1 << 14), - (1 << 2) | (1 << 14) | (1 << 15) | (1 << 1), - UINT32_MAX, - (1 << 1) | (1 << 3) | (1 << 14) | (1 << 16) | (1 << 22), - UINT32_MAX, - (1 << 1) | (1 << 2) | (1 << 15) | (1 << 17) | (1 << 24), - (1 << 1) | (1 << 3) | (1 << 22), - UINT32_MAX, - UINT32_MAX, - UINT32_MAX, - (1 << 14) | (1 << 15) | (1 << 16) | (1 << 17), - UINT32_MAX, - UINT32_MAX, - (1 << 1) | (1 << 2) | (1 << 3) | (1 << 27) | (1 << 4) | (1 << 24), - (1 << 14) | (1 << 15) | (1 << 16) | (1 << 11) | (1 << 17) | (1 << 27) -}; - -// Estimate the partition used by modes 1/7. This scans through each partition and computes an approximate error for each. -static uint32_t estimate_partition(const color_quad_u8 *pPixels, const bc7enc_compress_block_params *pComp_params, uint32_t pweights[4], uint32_t mode) -{ - const uint32_t total_partitions = minimumu(pComp_params->m_max_partitions_mode, BC7ENC_MAX_PARTITIONS1); - if (total_partitions <= 1) - return 0; - - uint64_t best_err = UINT64_MAX; - uint32_t best_partition = 0; - - // Partition order sorted by usage frequency across a large test corpus. Pattern 34 (checkerboard) must appear in slot 34. - // Using a sorted order allows the user to decrease the # of partitions to scan with minimal loss in quality. - static const uint8_t s_sorted_partition_order[64] = - { - 1 - 1, 14 - 1, 2 - 1, 3 - 1, 16 - 1, 15 - 1, 11 - 1, 17 - 1, - 4 - 1, 24 - 1, 27 - 1, 7 - 1, 8 - 1, 22 - 1, 20 - 1, 30 - 1, - 9 - 1, 5 - 1, 10 - 1, 21 - 1, 6 - 1, 32 - 1, 23 - 1, 18 - 1, - 19 - 1, 12 - 1, 13 - 1, 31 - 1, 25 - 1, 26 - 1, 29 - 1, 28 - 1, - 33 - 1, 34 - 1, 35 - 1, 46 - 1, 47 - 1, 52 - 1, 50 - 1, 51 - 1, - 49 - 1, 39 - 1, 40 - 1, 38 - 1, 54 - 1, 53 - 1, 55 - 1, 37 - 1, - 58 - 1, 59 - 1, 56 - 1, 42 - 1, 41 - 1, 43 - 1, 44 - 1, 60 - 1, - 45 - 1, 57 - 1, 48 - 1, 36 - 1, 61 - 1, 64 - 1, 63 - 1, 62 - 1 - }; - - assert(s_sorted_partition_order[34] == 34); - - int best_key_partition = 0; - - for (uint32_t partition_iter = 0; (partition_iter < total_partitions) && (best_err > 0); partition_iter++) - { - const uint32_t partition = s_sorted_partition_order[partition_iter]; - - // Check to see if we should bother evaluating this partition at all, depending on the best partition found from the first 14. - if (pComp_params->m_mode_partition_estimation_filterbank) - { - if ((partition_iter >= 14) && (partition_iter <= 34)) - { - const uint32_t best_key_partition_bitmask = 1 << (best_key_partition + 1); - if ((g_partition_predictors[partition] & best_key_partition_bitmask) == 0) - { - if (partition_iter == 34) - break; - - continue; - } - } - } - - const uint8_t *pPartition = &g_bc7_partition2[partition * 16]; - - color_quad_u8 subset_colors[2][16]; - uint32_t subset_total_colors[2] = { 0, 0 }; - for (uint32_t index = 0; index < 16; index++) - subset_colors[pPartition[index]][subset_total_colors[pPartition[index]]++] = pPixels[index]; - - uint64_t total_subset_err = 0; - for (uint32_t subset = 0; (subset < 2) && (total_subset_err < best_err); subset++) - { - if (mode == 7) - total_subset_err += color_cell_compression_est_mode7(subset_total_colors[subset], &subset_colors[subset][0], pComp_params->m_perceptual, pweights, best_err); - else - total_subset_err += color_cell_compression_est_mode1(subset_total_colors[subset], &subset_colors[subset][0], pComp_params->m_perceptual, pweights, best_err); - } - - if (total_subset_err < best_err) - { - best_err = total_subset_err; - best_partition = partition; - } - - // If the checkerboard pattern doesn't get the highest ranking vs. the previous (lower frequency) patterns, then just stop now because statistically the subsequent patterns won't do well either. - if ((partition == 34) && (best_partition != 34)) - break; - - if (partition_iter == 13) - best_key_partition = best_partition; - - } // partition - - return best_partition; -} - -static void set_block_bits(uint8_t *pBytes, uint32_t val, uint32_t num_bits, uint32_t *pCur_ofs) -{ - assert((num_bits <= 32) && (val < (1ULL << num_bits))); - while (num_bits) - { - const uint32_t n = minimumu(8 - (*pCur_ofs & 7), num_bits); - pBytes[*pCur_ofs >> 3] |= (uint8_t)(val << (*pCur_ofs & 7)); - val >>= n; - num_bits -= n; - *pCur_ofs += n; - } - assert(*pCur_ofs <= 128); -} - -typedef struct -{ - uint32_t m_mode; - uint32_t m_partition; - uint8_t m_selectors[16]; - uint8_t m_alpha_selectors[16]; - color_quad_u8 m_low[3]; - color_quad_u8 m_high[3]; - uint32_t m_pbits[3][2]; - uint32_t m_rotation; - uint32_t m_index_selector; -} bc7_optimization_results; - -static void encode_bc7_block(void* pBlock, const bc7_optimization_results* pResults) -{ - assert(pResults->m_index_selector <= 1); - assert(pResults->m_rotation <= 3); - - const uint32_t best_mode = pResults->m_mode; - - const uint32_t total_subsets = g_bc7_num_subsets[best_mode]; - const uint32_t total_partitions = 1 << g_bc7_partition_bits[best_mode]; - //const uint32_t num_rotations = 1 << g_bc7_rotation_bits[best_mode]; - //const uint32_t num_index_selectors = (best_mode == 4) ? 2 : 1; - - const uint8_t* pPartition; - if (total_subsets == 1) - pPartition = &g_bc7_partition1[0]; - else if (total_subsets == 2) - pPartition = &g_bc7_partition2[pResults->m_partition * 16]; - else - pPartition = &g_bc7_partition3[pResults->m_partition * 16]; - - uint8_t color_selectors[16]; - memcpy(color_selectors, pResults->m_selectors, 16); - - uint8_t alpha_selectors[16]; - memcpy(alpha_selectors, pResults->m_alpha_selectors, 16); - - color_quad_u8 low[3], high[3]; - memcpy(low, pResults->m_low, sizeof(low)); - memcpy(high, pResults->m_high, sizeof(high)); - - uint32_t pbits[3][2]; - memcpy(pbits, pResults->m_pbits, sizeof(pbits)); - - int anchor[3] = { -1, -1, -1 }; - - for (uint32_t k = 0; k < total_subsets; k++) - { - uint32_t anchor_index = 0; - if (k) - { - if ((total_subsets == 3) && (k == 1)) - anchor_index = g_bc7_table_anchor_index_third_subset_1[pResults->m_partition]; - else if ((total_subsets == 3) && (k == 2)) - anchor_index = g_bc7_table_anchor_index_third_subset_2[pResults->m_partition]; - else - anchor_index = g_bc7_table_anchor_index_second_subset[pResults->m_partition]; - } - - anchor[k] = anchor_index; - - const uint32_t color_index_bits = get_bc7_color_index_size(best_mode, pResults->m_index_selector); - const uint32_t num_color_indices = 1 << color_index_bits; - - if (color_selectors[anchor_index] & (num_color_indices >> 1)) - { - for (uint32_t i = 0; i < 16; i++) - if (pPartition[i] == k) - color_selectors[i] = (uint8_t)((num_color_indices - 1) - color_selectors[i]); - - if (get_bc7_mode_has_seperate_alpha_selectors(best_mode)) - { - for (uint32_t q = 0; q < 3; q++) - { - uint8_t t = low[k].m_c[q]; - low[k].m_c[q] = high[k].m_c[q]; - high[k].m_c[q] = t; - } - } - else - { - color_quad_u8 tmp = low[k]; - low[k] = high[k]; - high[k] = tmp; - } - - if (!g_bc7_mode_has_shared_p_bits[best_mode]) - { - uint32_t t = pbits[k][0]; - pbits[k][0] = pbits[k][1]; - pbits[k][1] = t; - } - } - - if (get_bc7_mode_has_seperate_alpha_selectors(best_mode)) - { - const uint32_t alpha_index_bits = get_bc7_alpha_index_size(best_mode, pResults->m_index_selector); - const uint32_t num_alpha_indices = 1 << alpha_index_bits; - - if (alpha_selectors[anchor_index] & (num_alpha_indices >> 1)) - { - for (uint32_t i = 0; i < 16; i++) - if (pPartition[i] == k) - alpha_selectors[i] = (uint8_t)((num_alpha_indices - 1) - alpha_selectors[i]); - - uint8_t t = low[k].m_c[3]; - low[k].m_c[3] = high[k].m_c[3]; - high[k].m_c[3] = t; - } - } - } - - uint8_t* pBlock_bytes = (uint8_t*)(pBlock); - memset(pBlock_bytes, 0, BC7ENC_BLOCK_SIZE); - - uint32_t cur_bit_ofs = 0; - set_block_bits(pBlock_bytes, 1 << best_mode, best_mode + 1, &cur_bit_ofs); - - if ((best_mode == 4) || (best_mode == 5)) - set_block_bits(pBlock_bytes, pResults->m_rotation, 2, &cur_bit_ofs); - - if (best_mode == 4) - set_block_bits(pBlock_bytes, pResults->m_index_selector, 1, &cur_bit_ofs); - - if (total_partitions > 1) - set_block_bits(pBlock_bytes, pResults->m_partition, (total_partitions == 64) ? 6 : 4, &cur_bit_ofs); - - const uint32_t total_comps = (best_mode >= 4) ? 4 : 3; - for (uint32_t comp = 0; comp < total_comps; comp++) - { - for (uint32_t subset = 0; subset < total_subsets; subset++) - { - set_block_bits(pBlock_bytes, low[subset].m_c[comp], (comp == 3) ? g_bc7_alpha_precision_table[best_mode] : g_bc7_color_precision_table[best_mode], &cur_bit_ofs); - set_block_bits(pBlock_bytes, high[subset].m_c[comp], (comp == 3) ? g_bc7_alpha_precision_table[best_mode] : g_bc7_color_precision_table[best_mode], &cur_bit_ofs); - } - } - - if (g_bc7_mode_has_p_bits[best_mode]) - { - for (uint32_t subset = 0; subset < total_subsets; subset++) - { - set_block_bits(pBlock_bytes, pbits[subset][0], 1, &cur_bit_ofs); - if (!g_bc7_mode_has_shared_p_bits[best_mode]) - set_block_bits(pBlock_bytes, pbits[subset][1], 1, &cur_bit_ofs); - } - } - - for (uint32_t y = 0; y < 4; y++) - { - for (uint32_t x = 0; x < 4; x++) - { - int idx = x + y * 4; - - uint32_t n = pResults->m_index_selector ? get_bc7_alpha_index_size(best_mode, pResults->m_index_selector) : get_bc7_color_index_size(best_mode, pResults->m_index_selector); - - if ((idx == anchor[0]) || (idx == anchor[1]) || (idx == anchor[2])) - n--; - - set_block_bits(pBlock_bytes, pResults->m_index_selector ? alpha_selectors[idx] : color_selectors[idx], n, &cur_bit_ofs); - } - } - - if (get_bc7_mode_has_seperate_alpha_selectors(best_mode)) - { - for (uint32_t y = 0; y < 4; y++) - { - for (uint32_t x = 0; x < 4; x++) - { - int idx = x + y * 4; - - uint32_t n = pResults->m_index_selector ? get_bc7_color_index_size(best_mode, pResults->m_index_selector) : get_bc7_alpha_index_size(best_mode, pResults->m_index_selector); - - if ((idx == anchor[0]) || (idx == anchor[1]) || (idx == anchor[2])) - n--; - - set_block_bits(pBlock_bytes, pResults->m_index_selector ? color_selectors[idx] : alpha_selectors[idx], n, &cur_bit_ofs); - } - } - } - - assert(cur_bit_ofs == 128); -} - -static void handle_alpha_block_mode5(const color_quad_u8* pPixels, const bc7enc_compress_block_params* pComp_params, color_cell_compressor_params* pParams, uint32_t lo_a, uint32_t hi_a, bc7_optimization_results* pOpt_results5, uint64_t* pMode5_err, uint64_t* pMode5_alpha_err) -{ - pParams->m_pSelector_weights = g_bc7_weights2; - pParams->m_pSelector_weightsx = (const vec4F*)g_bc7_weights2x; - pParams->m_num_selector_weights = 4; - - pParams->m_comp_bits = 7; - pParams->m_has_pbits = BC7ENC_FALSE; - pParams->m_endpoints_share_pbit = BC7ENC_FALSE; - pParams->m_has_alpha = BC7ENC_FALSE; - - pParams->m_perceptual = pComp_params->m_perceptual; - - pParams->m_num_pixels = 16; - pParams->m_pPixels = pPixels; - - color_cell_compressor_results results5; - results5.m_pSelectors = pOpt_results5->m_selectors; - - uint8_t selectors_temp[16]; - results5.m_pSelectors_temp = selectors_temp; - - *pMode5_err = color_cell_compression(5, pParams, &results5, pComp_params); - assert(*pMode5_err == results5.m_best_overall_err); - - pOpt_results5->m_low[0] = results5.m_low_endpoint; - pOpt_results5->m_high[0] = results5.m_high_endpoint; - - if (lo_a == hi_a) - { - *pMode5_alpha_err = 0; - pOpt_results5->m_low[0].m_c[3] = (uint8_t)lo_a; - pOpt_results5->m_high[0].m_c[3] = (uint8_t)hi_a; - memset(pOpt_results5->m_alpha_selectors, 0, sizeof(pOpt_results5->m_alpha_selectors)); - } - else - { - *pMode5_alpha_err = UINT64_MAX; - - const uint32_t total_passes = (pComp_params->m_uber_level >= 1) ? 3 : 2; - for (uint32_t pass = 0; pass < total_passes; pass++) - { - int32_t vals[4]; - vals[0] = lo_a; - vals[3] = hi_a; - - const int32_t w_s1 = 21, w_s2 = 43; - vals[1] = (vals[0] * (64 - w_s1) + vals[3] * w_s1 + 32) >> 6; - vals[2] = (vals[0] * (64 - w_s2) + vals[3] * w_s2 + 32) >> 6; - - uint8_t trial_alpha_selectors[16]; - - uint64_t trial_alpha_err = 0; - for (uint32_t i = 0; i < 16; i++) - { - const int32_t a = pParams->m_pPixels[i].m_c[3]; - - int s = 0; - int32_t be = iabs32(a - vals[0]); - int e = iabs32(a - vals[1]); if (e < be) { be = e; s = 1; } - e = iabs32(a - vals[2]); if (e < be) { be = e; s = 2; } - e = iabs32(a - vals[3]); if (e < be) { be = e; s = 3; } - - trial_alpha_selectors[i] = (uint8_t)s; - - uint32_t a_err = (uint32_t)(be * be) * pParams->m_weights[3]; - - trial_alpha_err += a_err; - } - - if (trial_alpha_err < *pMode5_alpha_err) - { - *pMode5_alpha_err = trial_alpha_err; - pOpt_results5->m_low[0].m_c[3] = (uint8_t)lo_a; - pOpt_results5->m_high[0].m_c[3] = (uint8_t)hi_a; - memcpy(pOpt_results5->m_alpha_selectors, trial_alpha_selectors, sizeof(pOpt_results5->m_alpha_selectors)); - } - - if (pass != (total_passes - 1U)) - { - float xl, xh; - compute_least_squares_endpoints_a(16, trial_alpha_selectors, (const vec4F*)g_bc7_weights2x, &xl, &xh, pParams->m_pPixels); - - uint32_t new_lo_a = clampi((int)floor(xl + .5f), 0, 255); - uint32_t new_hi_a = clampi((int)floor(xh + .5f), 0, 255); - if (new_lo_a > new_hi_a) - swapu(&new_lo_a, &new_hi_a); - - if ((new_lo_a == lo_a) && (new_hi_a == hi_a)) - break; - - lo_a = new_lo_a; - hi_a = new_hi_a; - } - } - - *pMode5_err += *pMode5_alpha_err; - } -} - -static void handle_alpha_block(void *pBlock, const color_quad_u8 *pPixels, const bc7enc_compress_block_params *pComp_params, color_cell_compressor_params *pParams) -{ - pParams->m_pSelector_weights = g_bc7_weights4; - pParams->m_pSelector_weightsx = (const vec4F *)g_bc7_weights4x; - pParams->m_num_selector_weights = 16; - pParams->m_comp_bits = 7; - pParams->m_has_pbits = BC7ENC_TRUE; - pParams->m_has_alpha = BC7ENC_TRUE; - pParams->m_perceptual = pComp_params->m_perceptual; - pParams->m_num_pixels = 16; - pParams->m_pPixels = pPixels; - - bc7_optimization_results opt_results6, opt_results5, opt_results7; - - color_cell_compressor_results results6; - results6.m_pSelectors = opt_results6.m_selectors; - uint8_t selectors_temp[16]; - results6.m_pSelectors_temp = selectors_temp; - - uint64_t best_err = color_cell_compression(6, pParams, &results6, pComp_params); - uint32_t best_mode = 6; - - if ((best_err > 0) && (pComp_params->m_use_mode5_for_alpha)) - { - uint32_t lo_a = 255, hi_a = 0; - for (uint32_t i = 0; i < 16; i++) - { - uint32_t a = pPixels[i].m_c[3]; - lo_a = minimumu(lo_a, a); - hi_a = maximumu(hi_a, a); - } - - uint64_t mode5_err, mode5_alpha_err; - handle_alpha_block_mode5(pPixels, pComp_params, pParams, lo_a, hi_a, &opt_results5, &mode5_err, &mode5_alpha_err); - - if (mode5_err < best_err) - { - best_err = mode5_err; - best_mode = 5; - } - } - - if ((best_err > 0) && (pComp_params->m_use_mode7_for_alpha)) - { - const uint32_t trial_partition = estimate_partition(pPixels, pComp_params, pParams->m_weights, 7); - - pParams->m_pSelector_weights = g_bc7_weights2; - pParams->m_pSelector_weightsx = (const vec4F*)g_bc7_weights2x; - pParams->m_num_selector_weights = 4; - pParams->m_comp_bits = 5; - pParams->m_has_pbits = BC7ENC_TRUE; - pParams->m_endpoints_share_pbit = BC7ENC_FALSE; - pParams->m_has_alpha = BC7ENC_TRUE; - - const uint8_t* pPartition = &g_bc7_partition2[trial_partition * 16]; - - color_quad_u8 subset_colors[2][16]; - - uint32_t subset_total_colors7[2] = { 0, 0 }; - - uint8_t subset_pixel_index7[2][16]; - uint8_t subset_selectors7[2][16]; - color_cell_compressor_results subset_results7[2]; - - for (uint32_t idx = 0; idx < 16; idx++) - { - const uint32_t p = pPartition[idx]; - subset_colors[p][subset_total_colors7[p]] = pPixels[idx]; - subset_pixel_index7[p][subset_total_colors7[p]] = (uint8_t)idx; - subset_total_colors7[p]++; - } - - uint64_t trial_err = 0; - for (uint32_t subset = 0; subset < 2; subset++) - { - pParams->m_num_pixels = subset_total_colors7[subset]; - pParams->m_pPixels = &subset_colors[subset][0]; - - color_cell_compressor_results* pResults = &subset_results7[subset]; - pResults->m_pSelectors = &subset_selectors7[subset][0]; - pResults->m_pSelectors_temp = selectors_temp; - uint64_t err = color_cell_compression(7, pParams, pResults, pComp_params); - trial_err += err; - if (trial_err > best_err) - break; - - } // subset - - if (trial_err < best_err) - { - best_err = trial_err; - best_mode = 7; - opt_results7.m_mode = 7; - opt_results7.m_partition = trial_partition; - opt_results7.m_index_selector = 0; - opt_results7.m_rotation = 0; - for (uint32_t subset = 0; subset < 2; subset++) - { - for (uint32_t i = 0; i < subset_total_colors7[subset]; i++) - opt_results7.m_selectors[subset_pixel_index7[subset][i]] = subset_selectors7[subset][i]; - opt_results7.m_low[subset] = subset_results7[subset].m_low_endpoint; - opt_results7.m_high[subset] = subset_results7[subset].m_high_endpoint; - opt_results7.m_pbits[subset][0] = subset_results7[subset].m_pbits[0]; - opt_results7.m_pbits[subset][1] = subset_results7[subset].m_pbits[1]; - } - } - } - - if (best_mode == 7) - { - encode_bc7_block(pBlock, &opt_results7); - } - else if (best_mode == 5) - { - opt_results5.m_mode = 5; - opt_results5.m_partition = 0; - opt_results5.m_rotation = 0; - opt_results5.m_index_selector = 0; - - encode_bc7_block(pBlock, &opt_results5); - } - else if (best_mode == 6) - { - opt_results6.m_mode = 6; - opt_results6.m_partition = 0; - opt_results6.m_low[0] = results6.m_low_endpoint; - opt_results6.m_high[0] = results6.m_high_endpoint; - opt_results6.m_pbits[0][0] = results6.m_pbits[0]; - opt_results6.m_pbits[0][1] = results6.m_pbits[1]; - opt_results6.m_rotation = 0; - opt_results6.m_index_selector = 0; - - encode_bc7_block(pBlock, &opt_results6); - } -} - -static void handle_opaque_block(void *pBlock, const color_quad_u8 *pPixels, const bc7enc_compress_block_params *pComp_params, color_cell_compressor_params *pParams) -{ - uint8_t selectors_temp[16]; - - // Mode 6 - bc7_optimization_results opt_results; - - pParams->m_pSelector_weights = g_bc7_weights4; - pParams->m_pSelector_weightsx = (const vec4F *)g_bc7_weights4x; - pParams->m_num_selector_weights = 16; - pParams->m_comp_bits = 7; - pParams->m_has_pbits = BC7ENC_TRUE; - pParams->m_endpoints_share_pbit = BC7ENC_FALSE; - pParams->m_perceptual = pComp_params->m_perceptual; - pParams->m_num_pixels = 16; - pParams->m_pPixels = pPixels; - pParams->m_has_alpha = BC7ENC_FALSE; - - color_cell_compressor_results results6; - results6.m_pSelectors = opt_results.m_selectors; - results6.m_pSelectors_temp = selectors_temp; - - uint64_t best_err = color_cell_compression(6, pParams, &results6, pComp_params); - - opt_results.m_mode = 6; - opt_results.m_partition = 0; - opt_results.m_low[0] = results6.m_low_endpoint; - opt_results.m_high[0] = results6.m_high_endpoint; - opt_results.m_pbits[0][0] = results6.m_pbits[0]; - opt_results.m_pbits[0][1] = results6.m_pbits[1]; - opt_results.m_index_selector = 0; - opt_results.m_rotation = 0; - - // Mode 1 - if ((best_err > 0) && (pComp_params->m_max_partitions_mode > 0)) - { - const uint32_t trial_partition = estimate_partition(pPixels, pComp_params, pParams->m_weights, 1); - - pParams->m_pSelector_weights = g_bc7_weights3; - pParams->m_pSelector_weightsx = (const vec4F *)g_bc7_weights3x; - pParams->m_num_selector_weights = 8; - pParams->m_comp_bits = 6; - pParams->m_has_pbits = BC7ENC_TRUE; - pParams->m_endpoints_share_pbit = BC7ENC_TRUE; - - const uint8_t *pPartition = &g_bc7_partition2[trial_partition * 16]; - - color_quad_u8 subset_colors[2][16]; - - uint32_t subset_total_colors1[2] = { 0, 0 }; - - uint8_t subset_pixel_index1[2][16]; - uint8_t subset_selectors1[2][16]; - color_cell_compressor_results subset_results1[2]; - - for (uint32_t idx = 0; idx < 16; idx++) - { - const uint32_t p = pPartition[idx]; - subset_colors[p][subset_total_colors1[p]] = pPixels[idx]; - subset_pixel_index1[p][subset_total_colors1[p]] = (uint8_t)idx; - subset_total_colors1[p]++; - } - - uint64_t trial_err = 0; - for (uint32_t subset = 0; subset < 2; subset++) - { - pParams->m_num_pixels = subset_total_colors1[subset]; - pParams->m_pPixels = &subset_colors[subset][0]; - - color_cell_compressor_results *pResults = &subset_results1[subset]; - pResults->m_pSelectors = &subset_selectors1[subset][0]; - pResults->m_pSelectors_temp = selectors_temp; - uint64_t err = color_cell_compression(1, pParams, pResults, pComp_params); - - trial_err += err; - if (trial_err > best_err) - break; - - } // subset - - if (trial_err < best_err) - { - best_err = trial_err; - opt_results.m_mode = 1; - opt_results.m_partition = trial_partition; - for (uint32_t subset = 0; subset < 2; subset++) - { - for (uint32_t i = 0; i < subset_total_colors1[subset]; i++) - opt_results.m_selectors[subset_pixel_index1[subset][i]] = subset_selectors1[subset][i]; - opt_results.m_low[subset] = subset_results1[subset].m_low_endpoint; - opt_results.m_high[subset] = subset_results1[subset].m_high_endpoint; - opt_results.m_pbits[subset][0] = subset_results1[subset].m_pbits[0]; - } - } - } - - encode_bc7_block(pBlock, &opt_results); -} - -bc7enc_bool bc7enc_compress_block(void *pBlock, const void *pPixelsRGBA, const bc7enc_compress_block_params *pComp_params) -{ - assert(g_bc7_mode_1_optimal_endpoints[255][0].m_hi != 0); - - const color_quad_u8 *pPixels = (const color_quad_u8 *)(pPixelsRGBA); - - color_cell_compressor_params params; - if (pComp_params->m_perceptual) - { - // https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.709_conversion - const float pr_weight = (.5f / (1.0f - .2126f)) * (.5f / (1.0f - .2126f)); - const float pb_weight = (.5f / (1.0f - .0722f)) * (.5f / (1.0f - .0722f)); - params.m_weights[0] = (int)(pComp_params->m_weights[0] * 4.0f); - params.m_weights[1] = (int)(pComp_params->m_weights[1] * 4.0f * pr_weight); - params.m_weights[2] = (int)(pComp_params->m_weights[2] * 4.0f * pb_weight); - params.m_weights[3] = pComp_params->m_weights[3] * 4; - } - else - memcpy(params.m_weights, pComp_params->m_weights, sizeof(params.m_weights)); - - for (uint32_t i = 0; i < 16; i++) - { - if (pPixels[i].m_c[3] < 255) - { - handle_alpha_block(pBlock, pPixels, pComp_params, ¶ms); - return BC7ENC_TRUE; - } - } - handle_opaque_block(pBlock, pPixels, pComp_params, ¶ms); - return BC7ENC_FALSE; -} - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright(c) 2020 Richard Geldreich, Jr. -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files(the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions : -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain(www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non - commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain.We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors.We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ diff --git a/src/rgbcx/test/bc7enc.h b/src/rgbcx/test/bc7enc.h deleted file mode 100644 index e815fc4..0000000 --- a/src/rgbcx/test/bc7enc.h +++ /dev/null @@ -1,82 +0,0 @@ -// File: bc7enc.h - Richard Geldreich, Jr. - MIT license or public domain (see end of bc7enc.c) -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define BC7ENC_BLOCK_SIZE (16) -#define BC7ENC_MAX_PARTITIONS1 (64) -#define BC7ENC_MAX_UBER_LEVEL (4) - -typedef uint8_t bc7enc_bool; -#define BC7ENC_TRUE (1) -#define BC7ENC_FALSE (0) - -typedef struct -{ - // m_max_partitions_mode may range from 0 (disables mode 1) to BC7ENC_MAX_PARTITIONS1. The higher this value, the slower the compressor, but the higher the quality. - uint32_t m_max_partitions_mode; - - // Relative RGBA or YCbCrA Weights. - uint32_t m_weights[4]; - - // m_uber_level may range from 0 to BC7ENC_MAX_UBER_LEVEL. The higher this value, the slower the compressor, but the higher the quality. - uint32_t m_uber_level; - - // If m_perceptual is true, colorspace error is computed in YCbCr space, otherwise RGB. - bc7enc_bool m_perceptual; - - // Set m_try_least_squares to false for slightly faster/lower quality compression. - bc7enc_bool m_try_least_squares; - - // When m_mode_partition_estimation_filterbank, the mode1 partition estimator skips lesser used partition patterns unless they are strongly predicted to be potentially useful. - // There's a slight loss in quality with this enabled (around .08 dB RGB PSNR or .05 dB Y PSNR), but up to a 11% gain in speed depending on the other settings. - bc7enc_bool m_mode_partition_estimation_filterbank; - - bc7enc_bool m_use_mode5_for_alpha; - bc7enc_bool m_use_mode7_for_alpha; - -} bc7enc_compress_block_params; - -inline void bc7enc_compress_block_params_init_linear_weights(bc7enc_compress_block_params *p) -{ - p->m_perceptual = BC7ENC_FALSE; - p->m_weights[0] = 1; - p->m_weights[1] = 1; - p->m_weights[2] = 1; - p->m_weights[3] = 1; -} - -inline void bc7enc_compress_block_params_init_perceptual_weights(bc7enc_compress_block_params *p) -{ - p->m_perceptual = BC7ENC_TRUE; - p->m_weights[0] = 128; - p->m_weights[1] = 64; - p->m_weights[2] = 16; - p->m_weights[3] = 32; -} - -inline void bc7enc_compress_block_params_init(bc7enc_compress_block_params *p) -{ - p->m_max_partitions_mode = BC7ENC_MAX_PARTITIONS1; - p->m_try_least_squares = BC7ENC_TRUE; - p->m_mode_partition_estimation_filterbank = BC7ENC_TRUE; - p->m_uber_level = 0; - p->m_use_mode5_for_alpha = BC7ENC_TRUE; - p->m_use_mode7_for_alpha = BC7ENC_TRUE; - bc7enc_compress_block_params_init_perceptual_weights(p); -} - -// bc7enc_compress_block_init() MUST be called before calling bc7enc_compress_block() (or you'll get artifacts). -void bc7enc_compress_block_init(); - -// Packs a single block of 16x16 RGBA pixels (R first in memory) to 128-bit BC7 block pBlock, using either mode 1 and/or 6. -// Alpha blocks will always use mode 6, and by default opaque blocks will use either modes 1 or 6. -// Returns BC7ENC_TRUE if the block had any pixels with alpha < 255, otherwise it return BC7ENC_FALSE. (This is not an error code - a block is always encoded.) -bc7enc_bool bc7enc_compress_block(void *pBlock, const void *pPixelsRGBA, const bc7enc_compress_block_params *pComp_params); - -#ifdef __cplusplus -} -#endif diff --git a/src/rgbcx/test/dds_defs.h b/src/rgbcx/test/dds_defs.h deleted file mode 100644 index 034cccf..0000000 --- a/src/rgbcx/test/dds_defs.h +++ /dev/null @@ -1,286 +0,0 @@ -// File: dds_defs.h -// DX9/10 .DDS file header definitions. -#pragma once - -#define PIXEL_FMT_FOURCC(a, b, c, d) ((a) | ((b) << 8U) | ((c) << 16U) | ((d) << 24U)) - -enum pixel_format -{ - PIXEL_FMT_INVALID = 0, - - PIXEL_FMT_DXT1 = PIXEL_FMT_FOURCC('D', 'X', 'T', '1'), - PIXEL_FMT_DXT2 = PIXEL_FMT_FOURCC('D', 'X', 'T', '2'), - PIXEL_FMT_DXT3 = PIXEL_FMT_FOURCC('D', 'X', 'T', '3'), - PIXEL_FMT_DXT4 = PIXEL_FMT_FOURCC('D', 'X', 'T', '4'), - PIXEL_FMT_DXT5 = PIXEL_FMT_FOURCC('D', 'X', 'T', '5'), - PIXEL_FMT_3DC = PIXEL_FMT_FOURCC('A', 'T', 'I', '2'), // DXN_YX - PIXEL_FMT_DXN = PIXEL_FMT_FOURCC('A', '2', 'X', 'Y'), // DXN_XY - PIXEL_FMT_DXT5A = PIXEL_FMT_FOURCC('A', 'T', 'I', '1'), // ATI1N, http://developer.amd.com/media/gpu_assets/Radeon_X1x00_Programming_Guide.pdf - - // Non-standard formats (some of these are supported by ATI's Compressonator) - PIXEL_FMT_DXT5_CCxY = PIXEL_FMT_FOURCC('C', 'C', 'x', 'Y'), - PIXEL_FMT_DXT5_xGxR = PIXEL_FMT_FOURCC('x', 'G', 'x', 'R'), - PIXEL_FMT_DXT5_xGBR = PIXEL_FMT_FOURCC('x', 'G', 'B', 'R'), - PIXEL_FMT_DXT5_AGBR = PIXEL_FMT_FOURCC('A', 'G', 'B', 'R'), - - PIXEL_FMT_DXT1A = PIXEL_FMT_FOURCC('D', 'X', '1', 'A'), - PIXEL_FMT_ETC1 = PIXEL_FMT_FOURCC('E', 'T', 'C', '1'), - - PIXEL_FMT_R8G8B8 = PIXEL_FMT_FOURCC('R', 'G', 'B', 'x'), - PIXEL_FMT_L8 = PIXEL_FMT_FOURCC('L', 'x', 'x', 'x'), - PIXEL_FMT_A8 = PIXEL_FMT_FOURCC('x', 'x', 'x', 'A'), - PIXEL_FMT_A8L8 = PIXEL_FMT_FOURCC('L', 'x', 'x', 'A'), - PIXEL_FMT_A8R8G8B8 = PIXEL_FMT_FOURCC('R', 'G', 'B', 'A') -}; - -const uint32_t cDDSMaxImageDimensions = 8192U; - -// Total size of header is sizeof(uint32)+cDDSSizeofDDSurfaceDesc2; -const uint32_t cDDSSizeofDDSurfaceDesc2 = 124; - -// "DDS " -const uint32_t cDDSFileSignature = 0x20534444; - -struct DDCOLORKEY -{ - uint32_t dwUnused0; - uint32_t dwUnused1; -}; - -struct DDPIXELFORMAT -{ - uint32_t dwSize; - uint32_t dwFlags; - uint32_t dwFourCC; - uint32_t dwRGBBitCount; // ATI compressonator will place a FOURCC code here for swizzled/cooked DXTn formats - uint32_t dwRBitMask; - uint32_t dwGBitMask; - uint32_t dwBBitMask; - uint32_t dwRGBAlphaBitMask; -}; - -struct DDSCAPS2 -{ - uint32_t dwCaps; - uint32_t dwCaps2; - uint32_t dwCaps3; - uint32_t dwCaps4; -}; - -struct DDSURFACEDESC2 -{ - uint32_t dwSize; - uint32_t dwFlags; - uint32_t dwHeight; - uint32_t dwWidth; - union - { - int32_t lPitch; - uint32_t dwLinearSize; - }; - uint32_t dwBackBufferCount; - uint32_t dwMipMapCount; - uint32_t dwAlphaBitDepth; - uint32_t dwUnused0; - uint32_t lpSurface; - DDCOLORKEY unused0; - DDCOLORKEY unused1; - DDCOLORKEY unused2; - DDCOLORKEY unused3; - DDPIXELFORMAT ddpfPixelFormat; - DDSCAPS2 ddsCaps; - uint32_t dwUnused1; -}; - -const uint32_t DDSD_CAPS = 0x00000001; -const uint32_t DDSD_HEIGHT = 0x00000002; -const uint32_t DDSD_WIDTH = 0x00000004; -const uint32_t DDSD_PITCH = 0x00000008; - -const uint32_t DDSD_BACKBUFFERCOUNT = 0x00000020; -const uint32_t DDSD_ZBUFFERBITDEPTH = 0x00000040; -const uint32_t DDSD_ALPHABITDEPTH = 0x00000080; - -const uint32_t DDSD_LPSURFACE = 0x00000800; - -const uint32_t DDSD_PIXELFORMAT = 0x00001000; -const uint32_t DDSD_CKDESTOVERLAY = 0x00002000; -const uint32_t DDSD_CKDESTBLT = 0x00004000; -const uint32_t DDSD_CKSRCOVERLAY = 0x00008000; - -const uint32_t DDSD_CKSRCBLT = 0x00010000; -const uint32_t DDSD_MIPMAPCOUNT = 0x00020000; -const uint32_t DDSD_REFRESHRATE = 0x00040000; -const uint32_t DDSD_LINEARSIZE = 0x00080000; - -const uint32_t DDSD_TEXTURESTAGE = 0x00100000; -const uint32_t DDSD_FVF = 0x00200000; -const uint32_t DDSD_SRCVBHANDLE = 0x00400000; -const uint32_t DDSD_DEPTH = 0x00800000; - -const uint32_t DDSD_ALL = 0x00fff9ee; - -const uint32_t DDPF_ALPHAPIXELS = 0x00000001; -const uint32_t DDPF_ALPHA = 0x00000002; -const uint32_t DDPF_FOURCC = 0x00000004; -const uint32_t DDPF_PALETTEINDEXED8 = 0x00000020; -const uint32_t DDPF_RGB = 0x00000040; -const uint32_t DDPF_LUMINANCE = 0x00020000; - -const uint32_t DDSCAPS_COMPLEX = 0x00000008; -const uint32_t DDSCAPS_TEXTURE = 0x00001000; -const uint32_t DDSCAPS_MIPMAP = 0x00400000; - -const uint32_t DDSCAPS2_CUBEMAP = 0x00000200; -const uint32_t DDSCAPS2_CUBEMAP_POSITIVEX = 0x00000400; -const uint32_t DDSCAPS2_CUBEMAP_NEGATIVEX = 0x00000800; - -const uint32_t DDSCAPS2_CUBEMAP_POSITIVEY = 0x00001000; -const uint32_t DDSCAPS2_CUBEMAP_NEGATIVEY = 0x00002000; -const uint32_t DDSCAPS2_CUBEMAP_POSITIVEZ = 0x00004000; -const uint32_t DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x00008000; - -const uint32_t DDSCAPS2_VOLUME = 0x00200000; - -typedef enum DXGI_FORMAT -{ - DXGI_FORMAT_UNKNOWN = 0, - DXGI_FORMAT_R32G32B32A32_TYPELESS = 1, - DXGI_FORMAT_R32G32B32A32_FLOAT = 2, - DXGI_FORMAT_R32G32B32A32_UINT = 3, - DXGI_FORMAT_R32G32B32A32_SINT = 4, - DXGI_FORMAT_R32G32B32_TYPELESS = 5, - DXGI_FORMAT_R32G32B32_FLOAT = 6, - DXGI_FORMAT_R32G32B32_UINT = 7, - DXGI_FORMAT_R32G32B32_SINT = 8, - DXGI_FORMAT_R16G16B16A16_TYPELESS = 9, - DXGI_FORMAT_R16G16B16A16_FLOAT = 10, - DXGI_FORMAT_R16G16B16A16_UNORM = 11, - DXGI_FORMAT_R16G16B16A16_UINT = 12, - DXGI_FORMAT_R16G16B16A16_SNORM = 13, - DXGI_FORMAT_R16G16B16A16_SINT = 14, - DXGI_FORMAT_R32G32_TYPELESS = 15, - DXGI_FORMAT_R32G32_FLOAT = 16, - DXGI_FORMAT_R32G32_UINT = 17, - DXGI_FORMAT_R32G32_SINT = 18, - DXGI_FORMAT_R32G8X24_TYPELESS = 19, - DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20, - DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21, - DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22, - DXGI_FORMAT_R10G10B10A2_TYPELESS = 23, - DXGI_FORMAT_R10G10B10A2_UNORM = 24, - DXGI_FORMAT_R10G10B10A2_UINT = 25, - DXGI_FORMAT_R11G11B10_FLOAT = 26, - DXGI_FORMAT_R8G8B8A8_TYPELESS = 27, - DXGI_FORMAT_R8G8B8A8_UNORM = 28, - DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29, - DXGI_FORMAT_R8G8B8A8_UINT = 30, - DXGI_FORMAT_R8G8B8A8_SNORM = 31, - DXGI_FORMAT_R8G8B8A8_SINT = 32, - DXGI_FORMAT_R16G16_TYPELESS = 33, - DXGI_FORMAT_R16G16_FLOAT = 34, - DXGI_FORMAT_R16G16_UNORM = 35, - DXGI_FORMAT_R16G16_UINT = 36, - DXGI_FORMAT_R16G16_SNORM = 37, - DXGI_FORMAT_R16G16_SINT = 38, - DXGI_FORMAT_R32_TYPELESS = 39, - DXGI_FORMAT_D32_FLOAT = 40, - DXGI_FORMAT_R32_FLOAT = 41, - DXGI_FORMAT_R32_UINT = 42, - DXGI_FORMAT_R32_SINT = 43, - DXGI_FORMAT_R24G8_TYPELESS = 44, - DXGI_FORMAT_D24_UNORM_S8_UINT = 45, - DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46, - DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47, - DXGI_FORMAT_R8G8_TYPELESS = 48, - DXGI_FORMAT_R8G8_UNORM = 49, - DXGI_FORMAT_R8G8_UINT = 50, - DXGI_FORMAT_R8G8_SNORM = 51, - DXGI_FORMAT_R8G8_SINT = 52, - DXGI_FORMAT_R16_TYPELESS = 53, - DXGI_FORMAT_R16_FLOAT = 54, - DXGI_FORMAT_D16_UNORM = 55, - DXGI_FORMAT_R16_UNORM = 56, - DXGI_FORMAT_R16_UINT = 57, - DXGI_FORMAT_R16_SNORM = 58, - DXGI_FORMAT_R16_SINT = 59, - DXGI_FORMAT_R8_TYPELESS = 60, - DXGI_FORMAT_R8_UNORM = 61, - DXGI_FORMAT_R8_UINT = 62, - DXGI_FORMAT_R8_SNORM = 63, - DXGI_FORMAT_R8_SINT = 64, - DXGI_FORMAT_A8_UNORM = 65, - DXGI_FORMAT_R1_UNORM = 66, - DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67, - DXGI_FORMAT_R8G8_B8G8_UNORM = 68, - DXGI_FORMAT_G8R8_G8B8_UNORM = 69, - DXGI_FORMAT_BC1_TYPELESS = 70, - DXGI_FORMAT_BC1_UNORM = 71, - DXGI_FORMAT_BC1_UNORM_SRGB = 72, - DXGI_FORMAT_BC2_TYPELESS = 73, - DXGI_FORMAT_BC2_UNORM = 74, - DXGI_FORMAT_BC2_UNORM_SRGB = 75, - DXGI_FORMAT_BC3_TYPELESS = 76, - DXGI_FORMAT_BC3_UNORM = 77, - DXGI_FORMAT_BC3_UNORM_SRGB = 78, - DXGI_FORMAT_BC4_TYPELESS = 79, - DXGI_FORMAT_BC4_UNORM = 80, - DXGI_FORMAT_BC4_SNORM = 81, - DXGI_FORMAT_BC5_TYPELESS = 82, - DXGI_FORMAT_BC5_UNORM = 83, - DXGI_FORMAT_BC5_SNORM = 84, - DXGI_FORMAT_B5G6R5_UNORM = 85, - DXGI_FORMAT_B5G5R5A1_UNORM = 86, - DXGI_FORMAT_B8G8R8A8_UNORM = 87, - DXGI_FORMAT_B8G8R8X8_UNORM = 88, - DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89, - DXGI_FORMAT_B8G8R8A8_TYPELESS = 90, - DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91, - DXGI_FORMAT_B8G8R8X8_TYPELESS = 92, - DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93, - DXGI_FORMAT_BC6H_TYPELESS = 94, - DXGI_FORMAT_BC6H_UF16 = 95, - DXGI_FORMAT_BC6H_SF16 = 96, - DXGI_FORMAT_BC7_TYPELESS = 97, - DXGI_FORMAT_BC7_UNORM = 98, - DXGI_FORMAT_BC7_UNORM_SRGB = 99, - DXGI_FORMAT_AYUV = 100, - DXGI_FORMAT_Y410 = 101, - DXGI_FORMAT_Y416 = 102, - DXGI_FORMAT_NV12 = 103, - DXGI_FORMAT_P010 = 104, - DXGI_FORMAT_P016 = 105, - DXGI_FORMAT_420_OPAQUE = 106, - DXGI_FORMAT_YUY2 = 107, - DXGI_FORMAT_Y210 = 108, - DXGI_FORMAT_Y216 = 109, - DXGI_FORMAT_NV11 = 110, - DXGI_FORMAT_AI44 = 111, - DXGI_FORMAT_IA44 = 112, - DXGI_FORMAT_P8 = 113, - DXGI_FORMAT_A8P8 = 114, - DXGI_FORMAT_B4G4R4A4_UNORM = 115, - DXGI_FORMAT_P208 = 130, - DXGI_FORMAT_V208 = 131, - DXGI_FORMAT_V408 = 132, - DXGI_FORMAT_FORCE_UINT = 0xffffffff -} DXGI_FORMAT; - -enum D3D10_RESOURCE_DIMENSION -{ - D3D10_RESOURCE_DIMENSION_UNKNOWN = 0, - D3D10_RESOURCE_DIMENSION_BUFFER = 1, - D3D10_RESOURCE_DIMENSION_TEXTURE1D = 2, - D3D10_RESOURCE_DIMENSION_TEXTURE2D = 3, - D3D10_RESOURCE_DIMENSION_TEXTURE3D = 4 -}; - -struct DDS_HEADER_DXT10 -{ - DXGI_FORMAT dxgiFormat; - D3D10_RESOURCE_DIMENSION resourceDimension; - uint32_t miscFlag; - uint32_t arraySize; - uint32_t miscFlags2; -}; - diff --git a/src/rgbcx/test/lodepng.cpp b/src/rgbcx/test/lodepng.cpp deleted file mode 100644 index 6ea376f..0000000 --- a/src/rgbcx/test/lodepng.cpp +++ /dev/null @@ -1,6234 +0,0 @@ -/* -LodePNG version 20161127 - -Copyright (c) 2005-2016 Lode Vandevenne - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. -*/ - -/* -The manual and changelog are in the header file "lodepng.h" -Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for C. -*/ - -#pragma GCC diagnostic ignored "-Weverything" - -#include "lodepng.h" - -#include -#include -#include - -#if defined(_MSC_VER) && (_MSC_VER >= 1310) /*Visual Studio: A few warning types are not desired here.*/ -#pragma warning( disable : 4244 ) /*implicit conversions: not warned by gcc -Wall -Wextra and requires too much casts*/ -#pragma warning( disable : 4996 ) /*VS does not like fopen, but fopen_s is not standard C so unusable here*/ -#endif /*_MSC_VER */ - -const char* LODEPNG_VERSION_STRING = "20161127"; - -/* -This source file is built up in the following large parts. The code sections -with the "LODEPNG_COMPILE_" #defines divide this up further in an intermixed way. --Tools for C and common code for PNG and Zlib --C Code for Zlib (huffman, deflate, ...) --C Code for PNG (file format chunks, adam7, PNG filters, color conversions, ...) --The C++ wrapper around all of the above -*/ - -/*The malloc, realloc and free functions defined here with "lodepng_" in front -of the name, so that you can easily change them to others related to your -platform if needed. Everything else in the code calls these. Pass --DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler, or comment out -#define LODEPNG_COMPILE_ALLOCATORS in the header, to disable the ones here and -define them in your own project's source files without needing to change -lodepng source code. Don't forget to remove "static" if you copypaste them -from here.*/ - -#ifdef LODEPNG_COMPILE_ALLOCATORS -static void* lodepng_malloc(size_t size) -{ - return malloc(size); -} - -static void* lodepng_realloc(void* ptr, size_t new_size) -{ - return realloc(ptr, new_size); -} - -static void lodepng_free(void* ptr) -{ - free(ptr); -} -#else /*LODEPNG_COMPILE_ALLOCATORS*/ -void* lodepng_malloc(size_t size); -void* lodepng_realloc(void* ptr, size_t new_size); -void lodepng_free(void* ptr); -#endif /*LODEPNG_COMPILE_ALLOCATORS*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // Tools for C, and common code for PNG and Zlib. // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/* -Often in case of an error a value is assigned to a variable and then it breaks -out of a loop (to go to the cleanup phase of a function). This macro does that. -It makes the error handling code shorter and more readable. - -Example: if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83); -*/ -#define CERROR_BREAK(errorvar, code)\ -{\ - errorvar = code;\ - break;\ -} - -/*version of CERROR_BREAK that assumes the common case where the error variable is named "error"*/ -#define ERROR_BREAK(code) CERROR_BREAK(error, code) - -/*Set error var to the error code, and return it.*/ -#define CERROR_RETURN_ERROR(errorvar, code)\ -{\ - errorvar = code;\ - return code;\ -} - -/*Try the code, if it returns error, also return the error.*/ -#define CERROR_TRY_RETURN(call)\ -{\ - unsigned error = call;\ - if(error) return error;\ -} - -/*Set error var to the error code, and return from the void function.*/ -#define CERROR_RETURN(errorvar, code)\ -{\ - errorvar = code;\ - return;\ -} - -/* -About uivector, ucvector and string: --All of them wrap dynamic arrays or text strings in a similar way. --LodePNG was originally written in C++. The vectors replace the std::vectors that were used in the C++ version. --The string tools are made to avoid problems with compilers that declare things like strncat as deprecated. --They're not used in the interface, only internally in this file as static functions. --As with many other structs in this file, the init and cleanup functions serve as ctor and dtor. -*/ - -#ifdef LODEPNG_COMPILE_ZLIB -/*dynamic vector of unsigned ints*/ -typedef struct uivector -{ - unsigned* data; - size_t size; /*size in number of unsigned longs*/ - size_t allocsize; /*allocated size in bytes*/ -} uivector; - -static void uivector_cleanup(void* p) -{ - ((uivector*)p)->size = ((uivector*)p)->allocsize = 0; - lodepng_free(((uivector*)p)->data); - ((uivector*)p)->data = NULL; -} - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_reserve(uivector* p, size_t allocsize) -{ - if (allocsize > p->allocsize) - { - size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2); - void* data = lodepng_realloc(p->data, newsize); - if (data) - { - p->allocsize = newsize; - p->data = (unsigned*)data; - } - else return 0; /*error: not enough memory*/ - } - return 1; -} - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_resize(uivector* p, size_t size) -{ - if (!uivector_reserve(p, size * sizeof(unsigned))) return 0; - p->size = size; - return 1; /*success*/ -} - -/*resize and give all new elements the value*/ -static unsigned uivector_resizev(uivector* p, size_t size, unsigned value) -{ - size_t oldsize = p->size, i; - if (!uivector_resize(p, size)) return 0; - for (i = oldsize; i < size; ++i) p->data[i] = value; - return 1; -} - -static void uivector_init(uivector* p) -{ - p->data = NULL; - p->size = p->allocsize = 0; -} - -#ifdef LODEPNG_COMPILE_ENCODER -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_push_back(uivector* p, unsigned c) -{ - if (!uivector_resize(p, p->size + 1)) return 0; - p->data[p->size - 1] = c; - return 1; -} -#endif /*LODEPNG_COMPILE_ENCODER*/ -#endif /*LODEPNG_COMPILE_ZLIB*/ - -/* /////////////////////////////////////////////////////////////////////////// */ - -/*dynamic vector of unsigned chars*/ -typedef struct ucvector -{ - unsigned char* data; - size_t size; /*used size*/ - size_t allocsize; /*allocated size*/ -} ucvector; - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_reserve(ucvector* p, size_t allocsize) -{ - if (allocsize > p->allocsize) - { - size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2); - void* data = lodepng_realloc(p->data, newsize); - if (data) - { - p->allocsize = newsize; - p->data = (unsigned char*)data; - } - else return 0; /*error: not enough memory*/ - } - return 1; -} - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_resize(ucvector* p, size_t size) -{ - if (!ucvector_reserve(p, size * sizeof(unsigned char))) return 0; - p->size = size; - return 1; /*success*/ -} - -#ifdef LODEPNG_COMPILE_PNG - -static void ucvector_cleanup(void* p) -{ - ((ucvector*)p)->size = ((ucvector*)p)->allocsize = 0; - lodepng_free(((ucvector*)p)->data); - ((ucvector*)p)->data = NULL; -} - -static void ucvector_init(ucvector* p) -{ - p->data = NULL; - p->size = p->allocsize = 0; -} -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ZLIB -/*you can both convert from vector to buffer&size and vica versa. If you use -init_buffer to take over a buffer and size, it is not needed to use cleanup*/ -static void ucvector_init_buffer(ucvector* p, unsigned char* buffer, size_t size) -{ - p->data = buffer; - p->allocsize = p->size = size; -} -#endif /*LODEPNG_COMPILE_ZLIB*/ - -#if (defined(LODEPNG_COMPILE_PNG) && defined(LODEPNG_COMPILE_ANCILLARY_CHUNKS)) || defined(LODEPNG_COMPILE_ENCODER) -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_push_back(ucvector* p, unsigned char c) -{ - if (!ucvector_resize(p, p->size + 1)) return 0; - p->data[p->size - 1] = c; - return 1; -} -#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/ - - -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_PNG -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned string_resize(char** out, size_t size) -{ - char* data = (char*)lodepng_realloc(*out, size + 1); - if (data) - { - data[size] = 0; /*null termination char*/ - *out = data; - } - return data != 0; -} - -/*init a {char*, size_t} pair for use as string*/ -static void string_init(char** out) -{ - *out = NULL; - string_resize(out, 0); -} - -/*free the above pair again*/ -static void string_cleanup(char** out) -{ - lodepng_free(*out); - *out = NULL; -} - -static void string_set(char** out, const char* in) -{ - size_t insize = strlen(in), i; - if (string_resize(out, insize)) - { - for (i = 0; i != insize; ++i) - { - (*out)[i] = in[i]; - } - } -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -/* ////////////////////////////////////////////////////////////////////////// */ - -unsigned lodepng_read32bitInt(const unsigned char* buffer) -{ - return (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]); -} - -#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER) -/*buffer must have at least 4 allocated bytes available*/ -static void lodepng_set32bitInt(unsigned char* buffer, unsigned value) -{ - buffer[0] = (unsigned char)((value >> 24) & 0xff); - buffer[1] = (unsigned char)((value >> 16) & 0xff); - buffer[2] = (unsigned char)((value >> 8) & 0xff); - buffer[3] = (unsigned char)((value) & 0xff); -} -#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/ - -#ifdef LODEPNG_COMPILE_ENCODER -static void lodepng_add32bitInt(ucvector* buffer, unsigned value) -{ - ucvector_resize(buffer, buffer->size + 4); /*todo: give error if resize failed*/ - lodepng_set32bitInt(&buffer->data[buffer->size - 4], value); -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / File IO / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_DISK - -/* returns negative value on error. This should be pure C compatible, so no fstat. */ -static long lodepng_filesize(const char* filename) -{ - FILE* file; - long size; - file = fopen(filename, "rb"); - if (!file) return -1; - - if (fseek(file, 0, SEEK_END) != 0) - { - fclose(file); - return -1; - } - - size = ftell(file); - /* It may give LONG_MAX as directory size, this is invalid for us. */ - if (size == LONG_MAX) size = -1; - - fclose(file); - return size; -} - -/* load file into buffer that already has the correct allocated size. Returns error code.*/ -static unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* filename) -{ - FILE* file; - size_t readsize; - file = fopen(filename, "rb"); - if (!file) return 78; - - readsize = fread(out, 1, size, file); - fclose(file); - - if (readsize != size) return 78; - return 0; -} - -unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename) -{ - long size = lodepng_filesize(filename); - if (size < 0) return 78; - *outsize = (size_t)size; - - *out = (unsigned char*)lodepng_malloc((size_t)size); - if (!(*out) && size > 0) return 83; /*the above malloc failed*/ - - return lodepng_buffer_file(*out, (size_t)size, filename); -} - -/*write given buffer to the file, overwriting the file, it doesn't append to it.*/ -unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename) -{ - FILE* file; - file = fopen(filename, "wb"); - if (!file) return 79; - fwrite((char*)buffer, 1, buffersize, file); - fclose(file); - return 0; -} - -#endif /*LODEPNG_COMPILE_DISK*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // End of common code and tools. Begin of Zlib related code. // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_ZLIB -#ifdef LODEPNG_COMPILE_ENCODER -/*TODO: this ignores potential out of memory errors*/ -#define addBitToStream(/*size_t**/ bitpointer, /*ucvector**/ bitstream, /*unsigned char*/ bit)\ -{\ - /*add a new byte at the end*/\ - if(((*bitpointer) & 7) == 0) ucvector_push_back(bitstream, (unsigned char)0);\ - /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/\ - (bitstream->data[bitstream->size - 1]) |= (bit << ((*bitpointer) & 0x7));\ - ++(*bitpointer);\ -} - -static void addBitsToStream(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) -{ - size_t i; - for (i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> i) & 1)); -} - -static void addBitsToStreamReversed(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) -{ - size_t i; - for (i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> (nbits - 1 - i)) & 1)); -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_DECODER - -#define READBIT(bitpointer, bitstream) ((bitstream[bitpointer >> 3] >> (bitpointer & 0x7)) & (unsigned char)1) - -static unsigned char readBitFromStream(size_t* bitpointer, const unsigned char* bitstream) -{ - unsigned char result = (unsigned char)(READBIT(*bitpointer, bitstream)); - ++(*bitpointer); - return result; -} - -static unsigned readBitsFromStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) -{ - unsigned result = 0, i; - for (i = 0; i != nbits; ++i) - { - result += ((unsigned)READBIT(*bitpointer, bitstream)) << i; - ++(*bitpointer); - } - return result; -} -#endif /*LODEPNG_COMPILE_DECODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Deflate - Huffman / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#define FIRST_LENGTH_CODE_INDEX 257 -#define LAST_LENGTH_CODE_INDEX 285 -/*256 literals, the end code, some length codes, and 2 unused codes*/ -#define NUM_DEFLATE_CODE_SYMBOLS 288 -/*the distance codes have their own symbols, 30 used, 2 unused*/ -#define NUM_DISTANCE_SYMBOLS 32 -/*the code length codes. 0-15: code lengths, 16: copy previous 3-6 times, 17: 3-10 zeros, 18: 11-138 zeros*/ -#define NUM_CODE_LENGTH_CODES 19 - -/*the base lengths represented by codes 257-285*/ -static const unsigned LENGTHBASE[29] -= { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, - 67, 83, 99, 115, 131, 163, 195, 227, 258 }; - -/*the extra bits used by codes 257-285 (added to base length)*/ -static const unsigned LENGTHEXTRA[29] -= { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, - 4, 4, 4, 4, 5, 5, 5, 5, 0 }; - -/*the base backwards distances (the bits of distance codes appear after length codes and use their own huffman tree)*/ -static const unsigned DISTANCEBASE[30] -= { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, - 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 }; - -/*the extra bits of backwards distances (added to base)*/ -static const unsigned DISTANCEEXTRA[30] -= { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; - -/*the order in which "code length alphabet code lengths" are stored, out of this -the huffman tree of the dynamic huffman tree lengths is generated*/ -static const unsigned CLCL_ORDER[NUM_CODE_LENGTH_CODES] -= { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; - -/* ////////////////////////////////////////////////////////////////////////// */ - -/* -Huffman tree struct, containing multiple representations of the tree -*/ -typedef struct HuffmanTree -{ - unsigned* tree2d; - unsigned* tree1d; - unsigned* lengths; /*the lengths of the codes of the 1d-tree*/ - unsigned maxbitlen; /*maximum number of bits a single code can get*/ - unsigned numcodes; /*number of symbols in the alphabet = number of codes*/ -} HuffmanTree; - -/*function used for debug purposes to draw the tree in ascii art with C++*/ -/* -static void HuffmanTree_draw(HuffmanTree* tree) -{ - std::cout << "tree. length: " << tree->numcodes << " maxbitlen: " << tree->maxbitlen << std::endl; - for(size_t i = 0; i != tree->tree1d.size; ++i) - { - if(tree->lengths.data[i]) - std::cout << i << " " << tree->tree1d.data[i] << " " << tree->lengths.data[i] << std::endl; - } - std::cout << std::endl; -}*/ - -static void HuffmanTree_init(HuffmanTree* tree) -{ - tree->tree2d = 0; - tree->tree1d = 0; - tree->lengths = 0; -} - -static void HuffmanTree_cleanup(HuffmanTree* tree) -{ - lodepng_free(tree->tree2d); - lodepng_free(tree->tree1d); - lodepng_free(tree->lengths); -} - -/*the tree representation used by the decoder. return value is error*/ -static unsigned HuffmanTree_make2DTree(HuffmanTree* tree) -{ - unsigned nodefilled = 0; /*up to which node it is filled*/ - unsigned treepos = 0; /*position in the tree (1 of the numcodes columns)*/ - unsigned n, i; - - tree->tree2d = (unsigned*)lodepng_malloc(tree->numcodes * 2 * sizeof(unsigned)); - if (!tree->tree2d) return 83; /*alloc fail*/ - - /* - convert tree1d[] to tree2d[][]. In the 2D array, a value of 32767 means - uninited, a value >= numcodes is an address to another bit, a value < numcodes - is a code. The 2 rows are the 2 possible bit values (0 or 1), there are as - many columns as codes - 1. - A good huffman tree has N * 2 - 1 nodes, of which N - 1 are internal nodes. - Here, the internal nodes are stored (what their 0 and 1 option point to). - There is only memory for such good tree currently, if there are more nodes - (due to too long length codes), error 55 will happen - */ - for (n = 0; n < tree->numcodes * 2; ++n) - { - tree->tree2d[n] = 32767; /*32767 here means the tree2d isn't filled there yet*/ - } - - for (n = 0; n < tree->numcodes; ++n) /*the codes*/ - { - for (i = 0; i != tree->lengths[n]; ++i) /*the bits for this code*/ - { - unsigned char bit = (unsigned char)((tree->tree1d[n] >> (tree->lengths[n] - i - 1)) & 1); - /*oversubscribed, see comment in lodepng_error_text*/ - if (treepos > 2147483647 || treepos + 2 > tree->numcodes) return 55; - if (tree->tree2d[2 * treepos + bit] == 32767) /*not yet filled in*/ - { - if (i + 1 == tree->lengths[n]) /*last bit*/ - { - tree->tree2d[2 * treepos + bit] = n; /*put the current code in it*/ - treepos = 0; - } - else - { - /*put address of the next step in here, first that address has to be found of course - (it's just nodefilled + 1)...*/ - ++nodefilled; - /*addresses encoded with numcodes added to it*/ - tree->tree2d[2 * treepos + bit] = nodefilled + tree->numcodes; - treepos = nodefilled; - } - } - else treepos = tree->tree2d[2 * treepos + bit] - tree->numcodes; - } - } - - for (n = 0; n < tree->numcodes * 2; ++n) - { - if (tree->tree2d[n] == 32767) tree->tree2d[n] = 0; /*remove possible remaining 32767's*/ - } - - return 0; -} - -/* -Second step for the ...makeFromLengths and ...makeFromFrequencies functions. -numcodes, lengths and maxbitlen must already be filled in correctly. return -value is error. -*/ -static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree) -{ - uivector blcount; - uivector nextcode; - unsigned error = 0; - unsigned bits, n; - - uivector_init(&blcount); - uivector_init(&nextcode); - - tree->tree1d = (unsigned*)lodepng_malloc(tree->numcodes * sizeof(unsigned)); - if (!tree->tree1d) error = 83; /*alloc fail*/ - - if (!uivector_resizev(&blcount, tree->maxbitlen + 1, 0) - || !uivector_resizev(&nextcode, tree->maxbitlen + 1, 0)) - error = 83; /*alloc fail*/ - - if (!error) - { - /*step 1: count number of instances of each code length*/ - for (bits = 0; bits != tree->numcodes; ++bits) ++blcount.data[tree->lengths[bits]]; - /*step 2: generate the nextcode values*/ - for (bits = 1; bits <= tree->maxbitlen; ++bits) - { - nextcode.data[bits] = (nextcode.data[bits - 1] + blcount.data[bits - 1]) << 1; - } - /*step 3: generate all the codes*/ - for (n = 0; n != tree->numcodes; ++n) - { - if (tree->lengths[n] != 0) tree->tree1d[n] = nextcode.data[tree->lengths[n]]++; - } - } - - uivector_cleanup(&blcount); - uivector_cleanup(&nextcode); - - if (!error) return HuffmanTree_make2DTree(tree); - else return error; -} - -/* -given the code lengths (as stored in the PNG file), generate the tree as defined -by Deflate. maxbitlen is the maximum bits that a code in the tree can have. -return value is error. -*/ -static unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const unsigned* bitlen, - size_t numcodes, unsigned maxbitlen) -{ - unsigned i; - tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned)); - if (!tree->lengths) return 83; /*alloc fail*/ - for (i = 0; i != numcodes; ++i) tree->lengths[i] = bitlen[i]; - tree->numcodes = (unsigned)numcodes; /*number of symbols*/ - tree->maxbitlen = maxbitlen; - return HuffmanTree_makeFromLengths2(tree); -} - -#ifdef LODEPNG_COMPILE_ENCODER - -/*BPM: Boundary Package Merge, see "A Fast and Space-Economical Algorithm for Length-Limited Coding", -Jyrki Katajainen, Alistair Moffat, Andrew Turpin, 1995.*/ - -/*chain node for boundary package merge*/ -typedef struct BPMNode -{ - int weight; /*the sum of all Weights in this chain*/ - unsigned index; /*index of this leaf node (called "count" in the paper)*/ - struct BPMNode* tail; /*the next nodes in this chain (null if last)*/ - int in_use; -} BPMNode; - -/*lists of chains*/ -typedef struct BPMLists -{ - /*memory pool*/ - unsigned memsize; - BPMNode* memory; - unsigned numfree; - unsigned nextfree; - BPMNode** freelist; - /*two heads of lookahead chains per list*/ - unsigned listsize; - BPMNode** chains0; - BPMNode** chains1; -} BPMLists; - -/*creates a new chain node with the given parameters, from the memory in the lists */ -static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMNode* tail) -{ - unsigned i; - BPMNode* result; - - /*memory full, so garbage collect*/ - if (lists->nextfree >= lists->numfree) - { - /*mark only those that are in use*/ - for (i = 0; i != lists->memsize; ++i) lists->memory[i].in_use = 0; - for (i = 0; i != lists->listsize; ++i) - { - BPMNode* node; - for (node = lists->chains0[i]; node != 0; node = node->tail) node->in_use = 1; - for (node = lists->chains1[i]; node != 0; node = node->tail) node->in_use = 1; - } - /*collect those that are free*/ - lists->numfree = 0; - for (i = 0; i != lists->memsize; ++i) - { - if (!lists->memory[i].in_use) lists->freelist[lists->numfree++] = &lists->memory[i]; - } - lists->nextfree = 0; - } - - result = lists->freelist[lists->nextfree++]; - result->weight = weight; - result->index = index; - result->tail = tail; - return result; -} - -/*sort the leaves with stable mergesort*/ -static void bpmnode_sort(BPMNode* leaves, size_t num) -{ - BPMNode* mem = (BPMNode*)lodepng_malloc(sizeof(*leaves) * num); - size_t width, counter = 0; - for (width = 1; width < num; width *= 2) - { - BPMNode* a = (counter & 1) ? mem : leaves; - BPMNode* b = (counter & 1) ? leaves : mem; - size_t p; - for (p = 0; p < num; p += 2 * width) - { - size_t q = (p + width > num) ? num : (p + width); - size_t r = (p + 2 * width > num) ? num : (p + 2 * width); - size_t i = p, j = q, k; - for (k = p; k < r; k++) - { - if (i < q && (j >= r || a[i].weight <= a[j].weight)) b[k] = a[i++]; - else b[k] = a[j++]; - } - } - counter++; - } - if (counter & 1) memcpy(leaves, mem, sizeof(*leaves) * num); - lodepng_free(mem); -} - -/*Boundary Package Merge step, numpresent is the amount of leaves, and c is the current chain.*/ -static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int c, int num) -{ - unsigned lastindex = lists->chains1[c]->index; - - if (c == 0) - { - if (lastindex >= numpresent) return; - lists->chains0[c] = lists->chains1[c]; - lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, 0); - } - else - { - /*sum of the Weights of the head nodes of the previous lookahead chains.*/ - int sum = lists->chains0[c - 1]->weight + lists->chains1[c - 1]->weight; - lists->chains0[c] = lists->chains1[c]; - if (lastindex < numpresent && sum > leaves[lastindex].weight) - { - lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, lists->chains1[c]->tail); - return; - } - lists->chains1[c] = bpmnode_create(lists, sum, lastindex, lists->chains1[c - 1]); - /*in the end we are only interested in the chain of the last list, so no - need to recurse if we're at the last one (this gives measurable speedup)*/ - if (num + 1 < (int)(2 * numpresent - 2)) - { - boundaryPM(lists, leaves, numpresent, c - 1, num); - boundaryPM(lists, leaves, numpresent, c - 1, num); - } - } -} - -unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies, - size_t numcodes, unsigned maxbitlen) -{ - unsigned error = 0; - unsigned i; - size_t numpresent = 0; /*number of symbols with non-zero frequency*/ - BPMNode* leaves; /*the symbols, only those with > 0 frequency*/ - - if (numcodes == 0) return 80; /*error: a tree of 0 symbols is not supposed to be made*/ - if ((1u << maxbitlen) < numcodes) return 80; /*error: represent all symbols*/ - - leaves = (BPMNode*)lodepng_malloc(numcodes * sizeof(*leaves)); - if (!leaves) return 83; /*alloc fail*/ - - for (i = 0; i != numcodes; ++i) - { - if (frequencies[i] > 0) - { - leaves[numpresent].weight = (int)frequencies[i]; - leaves[numpresent].index = i; - ++numpresent; - } - } - - for (i = 0; i != numcodes; ++i) lengths[i] = 0; - - /*ensure at least two present symbols. There should be at least one symbol - according to RFC 1951 section 3.2.7. Some decoders incorrectly require two. To - make these work as well ensure there are at least two symbols. The - Package-Merge code below also doesn't work correctly if there's only one - symbol, it'd give it the theoritical 0 bits but in practice zlib wants 1 bit*/ - if (numpresent == 0) - { - lengths[0] = lengths[1] = 1; /*note that for RFC 1951 section 3.2.7, only lengths[0] = 1 is needed*/ - } - else if (numpresent == 1) - { - lengths[leaves[0].index] = 1; - lengths[leaves[0].index == 0 ? 1 : 0] = 1; - } - else - { - BPMLists lists; - BPMNode* node; - - bpmnode_sort(leaves, numpresent); - - lists.listsize = maxbitlen; - lists.memsize = 2 * maxbitlen * (maxbitlen + 1); - lists.nextfree = 0; - lists.numfree = lists.memsize; - lists.memory = (BPMNode*)lodepng_malloc(lists.memsize * sizeof(*lists.memory)); - lists.freelist = (BPMNode**)lodepng_malloc(lists.memsize * sizeof(BPMNode*)); - lists.chains0 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*)); - lists.chains1 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*)); - if (!lists.memory || !lists.freelist || !lists.chains0 || !lists.chains1) error = 83; /*alloc fail*/ - - if (!error) - { - for (i = 0; i != lists.memsize; ++i) lists.freelist[i] = &lists.memory[i]; - - bpmnode_create(&lists, leaves[0].weight, 1, 0); - bpmnode_create(&lists, leaves[1].weight, 2, 0); - - for (i = 0; i != lists.listsize; ++i) - { - lists.chains0[i] = &lists.memory[0]; - lists.chains1[i] = &lists.memory[1]; - } - - /*each boundaryPM call adds one chain to the last list, and we need 2 * numpresent - 2 chains.*/ - for (i = 2; i != 2 * numpresent - 2; ++i) boundaryPM(&lists, leaves, numpresent, (int)maxbitlen - 1, (int)i); - - for (node = lists.chains1[maxbitlen - 1]; node; node = node->tail) - { - for (i = 0; i != node->index; ++i) ++lengths[leaves[i].index]; - } - } - - lodepng_free(lists.memory); - lodepng_free(lists.freelist); - lodepng_free(lists.chains0); - lodepng_free(lists.chains1); - } - - lodepng_free(leaves); - return error; -} - -/*Create the Huffman tree given the symbol frequencies*/ -static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies, - size_t mincodes, size_t numcodes, unsigned maxbitlen) -{ - unsigned error = 0; - while (!frequencies[numcodes - 1] && numcodes > mincodes) --numcodes; /*trim zeroes*/ - tree->maxbitlen = maxbitlen; - tree->numcodes = (unsigned)numcodes; /*number of symbols*/ - tree->lengths = (unsigned*)lodepng_realloc(tree->lengths, numcodes * sizeof(unsigned)); - if (!tree->lengths) return 83; /*alloc fail*/ - /*initialize all lengths to 0*/ - memset(tree->lengths, 0, numcodes * sizeof(unsigned)); - - error = lodepng_huffman_code_lengths(tree->lengths, frequencies, numcodes, maxbitlen); - if (!error) error = HuffmanTree_makeFromLengths2(tree); - return error; -} - -static unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned index) -{ - return tree->tree1d[index]; -} - -static unsigned HuffmanTree_getLength(const HuffmanTree* tree, unsigned index) -{ - return tree->lengths[index]; -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/*get the literal and length code tree of a deflated block with fixed tree, as per the deflate specification*/ -static unsigned generateFixedLitLenTree(HuffmanTree* tree) -{ - unsigned i, error = 0; - unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); - if (!bitlen) return 83; /*alloc fail*/ - - /*288 possible codes: 0-255=literals, 256=endcode, 257-285=lengthcodes, 286-287=unused*/ - for (i = 0; i <= 143; ++i) bitlen[i] = 8; - for (i = 144; i <= 255; ++i) bitlen[i] = 9; - for (i = 256; i <= 279; ++i) bitlen[i] = 7; - for (i = 280; i <= 287; ++i) bitlen[i] = 8; - - error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DEFLATE_CODE_SYMBOLS, 15); - - lodepng_free(bitlen); - return error; -} - -/*get the distance code tree of a deflated block with fixed tree, as specified in the deflate specification*/ -static unsigned generateFixedDistanceTree(HuffmanTree* tree) -{ - unsigned i, error = 0; - unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); - if (!bitlen) return 83; /*alloc fail*/ - - /*there are 32 distance codes, but 30-31 are unused*/ - for (i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen[i] = 5; - error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DISTANCE_SYMBOLS, 15); - - lodepng_free(bitlen); - return error; -} - -#ifdef LODEPNG_COMPILE_DECODER - -/* -returns the code, or (unsigned)(-1) if error happened -inbitlength is the length of the complete buffer, in bits (so its byte length times 8) -*/ -static unsigned huffmanDecodeSymbol(const unsigned char* in, size_t* bp, - const HuffmanTree* codetree, size_t inbitlength) -{ - unsigned treepos = 0, ct; - for (;;) - { - if (*bp >= inbitlength) return (unsigned)(-1); /*error: end of input memory reached without endcode*/ - /* - decode the symbol from the tree. The "readBitFromStream" code is inlined in - the expression below because this is the biggest bottleneck while decoding - */ - ct = codetree->tree2d[(treepos << 1) + READBIT(*bp, in)]; - ++(*bp); - if (ct < codetree->numcodes) return ct; /*the symbol is decoded, return it*/ - else treepos = ct - codetree->numcodes; /*symbol not yet decoded, instead move tree position*/ - - if (treepos >= codetree->numcodes) return (unsigned)(-1); /*error: it appeared outside the codetree*/ - } -} -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_DECODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Inflator (Decompressor) / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*get the tree of a deflated block with fixed tree, as specified in the deflate specification*/ -static void getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d) -{ - /*TODO: check for out of memory errors*/ - generateFixedLitLenTree(tree_ll); - generateFixedDistanceTree(tree_d); -} - -/*get the tree of a deflated block with dynamic tree, the tree itself is also Huffman compressed with a known tree*/ -static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, - const unsigned char* in, size_t* bp, size_t inlength) -{ - /*make sure that length values that aren't filled in will be 0, or a wrong tree will be generated*/ - unsigned error = 0; - unsigned n, HLIT, HDIST, HCLEN, i; - size_t inbitlength = inlength * 8; - - /*see comments in deflateDynamic for explanation of the context and these variables, it is analogous*/ - unsigned* bitlen_ll = 0; /*lit,len code lengths*/ - unsigned* bitlen_d = 0; /*dist code lengths*/ - /*code length code lengths ("clcl"), the bit lengths of the huffman tree used to compress bitlen_ll and bitlen_d*/ - unsigned* bitlen_cl = 0; - HuffmanTree tree_cl; /*the code tree for code length codes (the huffman tree for compressed huffman trees)*/ - - if ((*bp) + 14 > (inlength << 3)) return 49; /*error: the bit pointer is or will go past the memory*/ - - /*number of literal/length codes + 257. Unlike the spec, the value 257 is added to it here already*/ - HLIT = readBitsFromStream(bp, in, 5) + 257; - /*number of distance codes. Unlike the spec, the value 1 is added to it here already*/ - HDIST = readBitsFromStream(bp, in, 5) + 1; - /*number of code length codes. Unlike the spec, the value 4 is added to it here already*/ - HCLEN = readBitsFromStream(bp, in, 4) + 4; - - if ((*bp) + HCLEN * 3 > (inlength << 3)) return 50; /*error: the bit pointer is or will go past the memory*/ - - HuffmanTree_init(&tree_cl); - - while (!error) - { - /*read the code length codes out of 3 * (amount of code length codes) bits*/ - - bitlen_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(unsigned)); - if (!bitlen_cl) ERROR_BREAK(83 /*alloc fail*/); - - for (i = 0; i != NUM_CODE_LENGTH_CODES; ++i) - { - if (i < HCLEN) bitlen_cl[CLCL_ORDER[i]] = readBitsFromStream(bp, in, 3); - else bitlen_cl[CLCL_ORDER[i]] = 0; /*if not, it must stay 0*/ - } - - error = HuffmanTree_makeFromLengths(&tree_cl, bitlen_cl, NUM_CODE_LENGTH_CODES, 7); - if (error) break; - - /*now we can use this tree to read the lengths for the tree that this function will return*/ - bitlen_ll = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); - bitlen_d = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); - if (!bitlen_ll || !bitlen_d) ERROR_BREAK(83 /*alloc fail*/); - for (i = 0; i != NUM_DEFLATE_CODE_SYMBOLS; ++i) bitlen_ll[i] = 0; - for (i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen_d[i] = 0; - - /*i is the current symbol we're reading in the part that contains the code lengths of lit/len and dist codes*/ - i = 0; - while (i < HLIT + HDIST) - { - unsigned code = huffmanDecodeSymbol(in, bp, &tree_cl, inbitlength); - if (code <= 15) /*a length code*/ - { - if (i < HLIT) bitlen_ll[i] = code; - else bitlen_d[i - HLIT] = code; - ++i; - } - else if (code == 16) /*repeat previous*/ - { - unsigned replength = 3; /*read in the 2 bits that indicate repeat length (3-6)*/ - unsigned value; /*set value to the previous code*/ - - if (i == 0) ERROR_BREAK(54); /*can't repeat previous if i is 0*/ - - if ((*bp + 2) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ - replength += readBitsFromStream(bp, in, 2); - - if (i < HLIT + 1) value = bitlen_ll[i - 1]; - else value = bitlen_d[i - HLIT - 1]; - /*repeat this value in the next lengths*/ - for (n = 0; n < replength; ++n) - { - if (i >= HLIT + HDIST) ERROR_BREAK(13); /*error: i is larger than the amount of codes*/ - if (i < HLIT) bitlen_ll[i] = value; - else bitlen_d[i - HLIT] = value; - ++i; - } - } - else if (code == 17) /*repeat "0" 3-10 times*/ - { - unsigned replength = 3; /*read in the bits that indicate repeat length*/ - if ((*bp + 3) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ - replength += readBitsFromStream(bp, in, 3); - - /*repeat this value in the next lengths*/ - for (n = 0; n < replength; ++n) - { - if (i >= HLIT + HDIST) ERROR_BREAK(14); /*error: i is larger than the amount of codes*/ - - if (i < HLIT) bitlen_ll[i] = 0; - else bitlen_d[i - HLIT] = 0; - ++i; - } - } - else if (code == 18) /*repeat "0" 11-138 times*/ - { - unsigned replength = 11; /*read in the bits that indicate repeat length*/ - if ((*bp + 7) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ - replength += readBitsFromStream(bp, in, 7); - - /*repeat this value in the next lengths*/ - for (n = 0; n < replength; ++n) - { - if (i >= HLIT + HDIST) ERROR_BREAK(15); /*error: i is larger than the amount of codes*/ - - if (i < HLIT) bitlen_ll[i] = 0; - else bitlen_d[i - HLIT] = 0; - ++i; - } - } - else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ - { - if (code == (unsigned)(-1)) - { - /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol - (10=no endcode, 11=wrong jump outside of tree)*/ - error = (*bp) > inbitlength ? 10 : 11; - } - else error = 16; /*unexisting code, this can never happen*/ - break; - } - } - if (error) break; - - if (bitlen_ll[256] == 0) ERROR_BREAK(64); /*the length of the end code 256 must be larger than 0*/ - - /*now we've finally got HLIT and HDIST, so generate the code trees, and the function is done*/ - error = HuffmanTree_makeFromLengths(tree_ll, bitlen_ll, NUM_DEFLATE_CODE_SYMBOLS, 15); - if (error) break; - error = HuffmanTree_makeFromLengths(tree_d, bitlen_d, NUM_DISTANCE_SYMBOLS, 15); - - break; /*end of error-while*/ - } - - lodepng_free(bitlen_cl); - lodepng_free(bitlen_ll); - lodepng_free(bitlen_d); - HuffmanTree_cleanup(&tree_cl); - - return error; -} - -/*inflate a block with dynamic of fixed Huffman tree*/ -static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size_t* bp, - size_t* pos, size_t inlength, unsigned btype) -{ - unsigned error = 0; - HuffmanTree tree_ll; /*the huffman tree for literal and length codes*/ - HuffmanTree tree_d; /*the huffman tree for distance codes*/ - size_t inbitlength = inlength * 8; - - HuffmanTree_init(&tree_ll); - HuffmanTree_init(&tree_d); - - if (btype == 1) getTreeInflateFixed(&tree_ll, &tree_d); - else if (btype == 2) error = getTreeInflateDynamic(&tree_ll, &tree_d, in, bp, inlength); - - while (!error) /*decode all symbols until end reached, breaks at end code*/ - { - /*code_ll is literal, length or end code*/ - unsigned code_ll = huffmanDecodeSymbol(in, bp, &tree_ll, inbitlength); - if (code_ll <= 255) /*literal symbol*/ - { - /*ucvector_push_back would do the same, but for some reason the two lines below run 10% faster*/ - if (!ucvector_resize(out, (*pos) + 1)) ERROR_BREAK(83 /*alloc fail*/); - out->data[*pos] = (unsigned char)code_ll; - ++(*pos); - } - else if (code_ll >= FIRST_LENGTH_CODE_INDEX && code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/ - { - unsigned code_d, distance; - unsigned numextrabits_l, numextrabits_d; /*extra bits for length and distance*/ - size_t start, forward, backward, length; - - /*part 1: get length base*/ - length = LENGTHBASE[code_ll - FIRST_LENGTH_CODE_INDEX]; - - /*part 2: get extra bits and add the value of that to length*/ - numextrabits_l = LENGTHEXTRA[code_ll - FIRST_LENGTH_CODE_INDEX]; - if ((*bp + numextrabits_l) > inbitlength) ERROR_BREAK(51); /*error, bit pointer will jump past memory*/ - length += readBitsFromStream(bp, in, numextrabits_l); - - /*part 3: get distance code*/ - code_d = huffmanDecodeSymbol(in, bp, &tree_d, inbitlength); - if (code_d > 29) - { - if (code_ll == (unsigned)(-1)) /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ - { - /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol - (10=no endcode, 11=wrong jump outside of tree)*/ - error = (*bp) > inlength * 8 ? 10 : 11; - } - else error = 18; /*error: invalid distance code (30-31 are never used)*/ - break; - } - distance = DISTANCEBASE[code_d]; - - /*part 4: get extra bits from distance*/ - numextrabits_d = DISTANCEEXTRA[code_d]; - if ((*bp + numextrabits_d) > inbitlength) ERROR_BREAK(51); /*error, bit pointer will jump past memory*/ - distance += readBitsFromStream(bp, in, numextrabits_d); - - /*part 5: fill in all the out[n] values based on the length and dist*/ - start = (*pos); - if (distance > start) ERROR_BREAK(52); /*too long backward distance*/ - backward = start - distance; - - if (!ucvector_resize(out, (*pos) + length)) ERROR_BREAK(83 /*alloc fail*/); - if (distance < length) { - for (forward = 0; forward < length; ++forward) - { - out->data[(*pos)++] = out->data[backward++]; - } - } - else { - memcpy(out->data + *pos, out->data + backward, length); - *pos += length; - } - } - else if (code_ll == 256) - { - break; /*end code, break the loop*/ - } - else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ - { - /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol - (10=no endcode, 11=wrong jump outside of tree)*/ - error = ((*bp) > inlength * 8) ? 10 : 11; - break; - } - } - - HuffmanTree_cleanup(&tree_ll); - HuffmanTree_cleanup(&tree_d); - - return error; -} - -static unsigned inflateNoCompression(ucvector* out, const unsigned char* in, size_t* bp, size_t* pos, size_t inlength) -{ - size_t p; - unsigned LEN, NLEN, n, error = 0; - - /*go to first boundary of byte*/ - while (((*bp) & 0x7) != 0) ++(*bp); - p = (*bp) / 8; /*byte position*/ - - /*read LEN (2 bytes) and NLEN (2 bytes)*/ - if (p + 4 >= inlength) return 52; /*error, bit pointer will jump past memory*/ - LEN = in[p] + 256u * in[p + 1]; p += 2; - NLEN = in[p] + 256u * in[p + 1]; p += 2; - - /*check if 16-bit NLEN is really the one's complement of LEN*/ - if (LEN + NLEN != 65535) return 21; /*error: NLEN is not one's complement of LEN*/ - - if (!ucvector_resize(out, (*pos) + LEN)) return 83; /*alloc fail*/ - - /*read the literal data: LEN bytes are now stored in the out buffer*/ - if (p + LEN > inlength) return 23; /*error: reading outside of in buffer*/ - for (n = 0; n < LEN; ++n) out->data[(*pos)++] = in[p++]; - - (*bp) = p * 8; - - return error; -} - -static unsigned lodepng_inflatev(ucvector* out, - const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings) -{ - /*bit pointer in the "in" data, current byte is bp >> 3, current bit is bp & 0x7 (from lsb to msb of the byte)*/ - size_t bp = 0; - unsigned BFINAL = 0; - size_t pos = 0; /*byte position in the out buffer*/ - unsigned error = 0; - - (void)settings; - - while (!BFINAL) - { - unsigned BTYPE; - if (bp + 2 >= insize * 8) return 52; /*error, bit pointer will jump past memory*/ - BFINAL = readBitFromStream(&bp, in); - BTYPE = 1u * readBitFromStream(&bp, in); - BTYPE += 2u * readBitFromStream(&bp, in); - - if (BTYPE == 3) return 20; /*error: invalid BTYPE*/ - else if (BTYPE == 0) error = inflateNoCompression(out, in, &bp, &pos, insize); /*no compression*/ - else error = inflateHuffmanBlock(out, in, &bp, &pos, insize, BTYPE); /*compression, BTYPE 01 or 10*/ - - if (error) return error; - } - - return error; -} - -unsigned lodepng_inflate(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings) -{ - unsigned error; - ucvector v; - ucvector_init_buffer(&v, *out, *outsize); - error = lodepng_inflatev(&v, in, insize, settings); - *out = v.data; - *outsize = v.size; - return error; -} - -static unsigned inflate(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings) -{ - if (settings->custom_inflate) - { - return settings->custom_inflate(out, outsize, in, insize, settings); - } - else - { - return lodepng_inflate(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Deflator (Compressor) / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -static const size_t MAX_SUPPORTED_DEFLATE_LENGTH = 258; - -/*bitlen is the size in bits of the code*/ -static void addHuffmanSymbol(size_t* bp, ucvector* compressed, unsigned code, unsigned bitlen) -{ - addBitsToStreamReversed(bp, compressed, code, bitlen); -} - -/*search the index in the array, that has the largest value smaller than or equal to the given value, -given array must be sorted (if no value is smaller, it returns the size of the given array)*/ -static size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t value) -{ - /*binary search (only small gain over linear). TODO: use CPU log2 instruction for getting symbols instead*/ - size_t left = 1; - size_t right = array_size - 1; - - while (left <= right) { - size_t mid = (left + right) >> 1; - if (array[mid] >= value) right = mid - 1; - else left = mid + 1; - } - if (left >= array_size || array[left] > value) left--; - return left; -} - -static void addLengthDistance(uivector* values, size_t length, size_t distance) -{ - /*values in encoded vector are those used by deflate: - 0-255: literal bytes - 256: end - 257-285: length/distance pair (length code, followed by extra length bits, distance code, extra distance bits) - 286-287: invalid*/ - - unsigned length_code = (unsigned)searchCodeIndex(LENGTHBASE, 29, length); - unsigned extra_length = (unsigned)(length - LENGTHBASE[length_code]); - unsigned dist_code = (unsigned)searchCodeIndex(DISTANCEBASE, 30, distance); - unsigned extra_distance = (unsigned)(distance - DISTANCEBASE[dist_code]); - - uivector_push_back(values, length_code + FIRST_LENGTH_CODE_INDEX); - uivector_push_back(values, extra_length); - uivector_push_back(values, dist_code); - uivector_push_back(values, extra_distance); -} - -/*3 bytes of data get encoded into two bytes. The hash cannot use more than 3 -bytes as input because 3 is the minimum match length for deflate*/ -static const unsigned HASH_NUM_VALUES = 65536; -static const unsigned HASH_BIT_MASK = 65535; /*HASH_NUM_VALUES - 1, but C90 does not like that as initializer*/ - -typedef struct Hash -{ - int* head; /*hash value to head circular pos - can be outdated if went around window*/ - /*circular pos to prev circular pos*/ - unsigned short* chain; - int* val; /*circular pos to hash value*/ - - /*TODO: do this not only for zeros but for any repeated byte. However for PNG - it's always going to be the zeros that dominate, so not important for PNG*/ - int* headz; /*similar to head, but for chainz*/ - unsigned short* chainz; /*those with same amount of zeros*/ - unsigned short* zeros; /*length of zeros streak, used as a second hash chain*/ -} Hash; - -static unsigned hash_init(Hash* hash, unsigned windowsize) -{ - unsigned i; - hash->head = (int*)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES); - hash->val = (int*)lodepng_malloc(sizeof(int) * windowsize); - hash->chain = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); - - hash->zeros = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); - hash->headz = (int*)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1)); - hash->chainz = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); - - if (!hash->head || !hash->chain || !hash->val || !hash->headz || !hash->chainz || !hash->zeros) - { - return 83; /*alloc fail*/ - } - - /*initialize hash table*/ - for (i = 0; i != HASH_NUM_VALUES; ++i) hash->head[i] = -1; - for (i = 0; i != windowsize; ++i) hash->val[i] = -1; - for (i = 0; i != windowsize; ++i) hash->chain[i] = i; /*same value as index indicates uninitialized*/ - - for (i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) hash->headz[i] = -1; - for (i = 0; i != windowsize; ++i) hash->chainz[i] = i; /*same value as index indicates uninitialized*/ - - return 0; -} - -static void hash_cleanup(Hash* hash) -{ - lodepng_free(hash->head); - lodepng_free(hash->val); - lodepng_free(hash->chain); - - lodepng_free(hash->zeros); - lodepng_free(hash->headz); - lodepng_free(hash->chainz); -} - - - -static unsigned getHash(const unsigned char* data, size_t size, size_t pos) -{ - unsigned result = 0; - if (pos + 2 < size) - { - /*A simple shift and xor hash is used. Since the data of PNGs is dominated - by zeroes due to the filters, a better hash does not have a significant - effect on speed in traversing the chain, and causes more time spend on - calculating the hash.*/ - result ^= (unsigned)(data[pos + 0] << 0u); - result ^= (unsigned)(data[pos + 1] << 4u); - result ^= (unsigned)(data[pos + 2] << 8u); - } - else { - size_t amount, i; - if (pos >= size) return 0; - amount = size - pos; - for (i = 0; i != amount; ++i) result ^= (unsigned)(data[pos + i] << (i * 8u)); - } - return result & HASH_BIT_MASK; -} - -static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) -{ - const unsigned char* start = data + pos; - const unsigned char* end = start + MAX_SUPPORTED_DEFLATE_LENGTH; - if (end > data + size) end = data + size; - data = start; - while (data != end && *data == 0) ++data; - /*subtracting two addresses returned as 32-bit number (max value is MAX_SUPPORTED_DEFLATE_LENGTH)*/ - return (unsigned)(data - start); -} - -/*wpos = pos & (windowsize - 1)*/ -static void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros) -{ - hash->val[wpos] = (int)hashval; - if (hash->head[hashval] != -1) hash->chain[wpos] = hash->head[hashval]; - hash->head[hashval] = wpos; - - hash->zeros[wpos] = numzeros; - if (hash->headz[numzeros] != -1) hash->chainz[wpos] = hash->headz[numzeros]; - hash->headz[numzeros] = wpos; -} - -/* -LZ77-encode the data. Return value is error code. The input are raw bytes, the output -is in the form of unsigned integers with codes representing for example literal bytes, or -length/distance pairs. -It uses a hash table technique to let it encode faster. When doing LZ77 encoding, a -sliding window (of windowsize) is used, and all past bytes in that window can be used as -the "dictionary". A brute force search through all possible distances would be slow, and -this hash technique is one out of several ways to speed this up. -*/ -static unsigned encodeLZ77(uivector* out, Hash* hash, - const unsigned char* in, size_t inpos, size_t insize, unsigned windowsize, - unsigned minmatch, unsigned nicematch, unsigned lazymatching) -{ - size_t pos; - unsigned i, error = 0; - /*for large window lengths, assume the user wants no compression loss. Otherwise, max hash chain length speedup.*/ - unsigned maxchainlength = windowsize >= 8192 ? windowsize : windowsize / 8; - unsigned maxlazymatch = windowsize >= 8192 ? MAX_SUPPORTED_DEFLATE_LENGTH : 64; - - unsigned usezeros = 1; /*not sure if setting it to false for windowsize < 8192 is better or worse*/ - unsigned numzeros = 0; - - unsigned offset; /*the offset represents the distance in LZ77 terminology*/ - unsigned length; - unsigned lazy = 0; - unsigned lazylength = 0, lazyoffset = 0; - unsigned hashval; - unsigned current_offset, current_length; - unsigned prev_offset; - const unsigned char *lastptr, *foreptr, *backptr; - unsigned hashpos; - - if (windowsize == 0 || windowsize > 32768) return 60; /*error: windowsize smaller/larger than allowed*/ - if ((windowsize & (windowsize - 1)) != 0) return 90; /*error: must be power of two*/ - - if (nicematch > MAX_SUPPORTED_DEFLATE_LENGTH) nicematch = MAX_SUPPORTED_DEFLATE_LENGTH; - - for (pos = inpos; pos < insize; ++pos) - { - size_t wpos = pos & (windowsize - 1); /*position for in 'circular' hash buffers*/ - unsigned chainlength = 0; - - hashval = getHash(in, insize, pos); - - if (usezeros && hashval == 0) - { - if (numzeros == 0) numzeros = countZeros(in, insize, pos); - else if (pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; - } - else - { - numzeros = 0; - } - - updateHashChain(hash, wpos, hashval, numzeros); - - /*the length and offset found for the current position*/ - length = 0; - offset = 0; - - hashpos = hash->chain[wpos]; - - lastptr = &in[insize < pos + MAX_SUPPORTED_DEFLATE_LENGTH ? insize : pos + MAX_SUPPORTED_DEFLATE_LENGTH]; - - /*search for the longest string*/ - prev_offset = 0; - for (;;) - { - if (chainlength++ >= maxchainlength) break; - current_offset = hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize; - - if (current_offset < prev_offset) break; /*stop when went completely around the circular buffer*/ - prev_offset = current_offset; - if (current_offset > 0) - { - /*test the next characters*/ - foreptr = &in[pos]; - backptr = &in[pos - current_offset]; - - /*common case in PNGs is lots of zeros. Quickly skip over them as a speedup*/ - if (numzeros >= 3) - { - unsigned skip = hash->zeros[hashpos]; - if (skip > numzeros) skip = numzeros; - backptr += skip; - foreptr += skip; - } - - while (foreptr != lastptr && *backptr == *foreptr) /*maximum supported length by deflate is max length*/ - { - ++backptr; - ++foreptr; - } - current_length = (unsigned)(foreptr - &in[pos]); - - if (current_length > length) - { - length = current_length; /*the longest length*/ - offset = current_offset; /*the offset that is related to this longest length*/ - /*jump out once a length of max length is found (speed gain). This also jumps - out if length is MAX_SUPPORTED_DEFLATE_LENGTH*/ - if (current_length >= nicematch) break; - } - } - - if (hashpos == hash->chain[hashpos]) break; - - if (numzeros >= 3 && length > numzeros) - { - hashpos = hash->chainz[hashpos]; - if (hash->zeros[hashpos] != numzeros) break; - } - else - { - hashpos = hash->chain[hashpos]; - /*outdated hash value, happens if particular value was not encountered in whole last window*/ - if (hash->val[hashpos] != (int)hashval) break; - } - } - - if (lazymatching) - { - if (!lazy && length >= 3 && length <= maxlazymatch && length < MAX_SUPPORTED_DEFLATE_LENGTH) - { - lazy = 1; - lazylength = length; - lazyoffset = offset; - continue; /*try the next byte*/ - } - if (lazy) - { - lazy = 0; - if (pos == 0) ERROR_BREAK(81); - if (length > lazylength + 1) - { - /*push the previous character as literal*/ - if (!uivector_push_back(out, in[pos - 1])) ERROR_BREAK(83 /*alloc fail*/); - } - else - { - length = lazylength; - offset = lazyoffset; - hash->head[hashval] = -1; /*the same hashchain update will be done, this ensures no wrong alteration*/ - hash->headz[numzeros] = -1; /*idem*/ - --pos; - } - } - } - if (length >= 3 && offset > windowsize) ERROR_BREAK(86 /*too big (or overflown negative) offset*/); - - /*encode it as length/distance pair or literal value*/ - if (length < 3) /*only lengths of 3 or higher are supported as length/distance pair*/ - { - if (!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); - } - else if (length < minmatch || (length == 3 && offset > 4096)) - { - /*compensate for the fact that longer offsets have more extra bits, a - length of only 3 may be not worth it then*/ - if (!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); - } - else - { - addLengthDistance(out, length, offset); - for (i = 1; i < length; ++i) - { - ++pos; - wpos = pos & (windowsize - 1); - hashval = getHash(in, insize, pos); - if (usezeros && hashval == 0) - { - if (numzeros == 0) numzeros = countZeros(in, insize, pos); - else if (pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; - } - else - { - numzeros = 0; - } - updateHashChain(hash, wpos, hashval, numzeros); - } - } - } /*end of the loop through each character of input*/ - - return error; -} - -/* /////////////////////////////////////////////////////////////////////////// */ - -static unsigned deflateNoCompression(ucvector* out, const unsigned char* data, size_t datasize) -{ - /*non compressed deflate block data: 1 bit BFINAL,2 bits BTYPE,(5 bits): it jumps to start of next byte, - 2 bytes LEN, 2 bytes NLEN, LEN bytes literal DATA*/ - - size_t i, j, numdeflateblocks = (datasize + 65534) / 65535; - unsigned datapos = 0; - for (i = 0; i != numdeflateblocks; ++i) - { - unsigned BFINAL, BTYPE, LEN, NLEN; - unsigned char firstbyte; - - BFINAL = (i == numdeflateblocks - 1); - BTYPE = 0; - - firstbyte = (unsigned char)(BFINAL + ((BTYPE & 1) << 1) + ((BTYPE & 2) << 1)); - ucvector_push_back(out, firstbyte); - - LEN = 65535; - if (datasize - datapos < 65535) LEN = (unsigned)datasize - datapos; - NLEN = 65535 - LEN; - - ucvector_push_back(out, (unsigned char)(LEN & 255)); - ucvector_push_back(out, (unsigned char)(LEN >> 8)); - ucvector_push_back(out, (unsigned char)(NLEN & 255)); - ucvector_push_back(out, (unsigned char)(NLEN >> 8)); - - /*Decompressed data*/ - for (j = 0; j < 65535 && datapos < datasize; ++j) - { - ucvector_push_back(out, data[datapos++]); - } - } - - return 0; -} - -/* -write the lz77-encoded data, which has lit, len and dist codes, to compressed stream using huffman trees. -tree_ll: the tree for lit and len codes. -tree_d: the tree for distance codes. -*/ -static void writeLZ77data(size_t* bp, ucvector* out, const uivector* lz77_encoded, - const HuffmanTree* tree_ll, const HuffmanTree* tree_d) -{ - size_t i = 0; - for (i = 0; i != lz77_encoded->size; ++i) - { - unsigned val = lz77_encoded->data[i]; - addHuffmanSymbol(bp, out, HuffmanTree_getCode(tree_ll, val), HuffmanTree_getLength(tree_ll, val)); - if (val > 256) /*for a length code, 3 more things have to be added*/ - { - unsigned length_index = val - FIRST_LENGTH_CODE_INDEX; - unsigned n_length_extra_bits = LENGTHEXTRA[length_index]; - unsigned length_extra_bits = lz77_encoded->data[++i]; - - unsigned distance_code = lz77_encoded->data[++i]; - - unsigned distance_index = distance_code; - unsigned n_distance_extra_bits = DISTANCEEXTRA[distance_index]; - unsigned distance_extra_bits = lz77_encoded->data[++i]; - - addBitsToStream(bp, out, length_extra_bits, n_length_extra_bits); - addHuffmanSymbol(bp, out, HuffmanTree_getCode(tree_d, distance_code), - HuffmanTree_getLength(tree_d, distance_code)); - addBitsToStream(bp, out, distance_extra_bits, n_distance_extra_bits); - } - } -} - -/*Deflate for a block of type "dynamic", that is, with freely, optimally, created huffman trees*/ -static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash, - const unsigned char* data, size_t datapos, size_t dataend, - const LodePNGCompressSettings* settings, unsigned final) -{ - unsigned error = 0; - - /* - A block is compressed as follows: The PNG data is lz77 encoded, resulting in - literal bytes and length/distance pairs. This is then huffman compressed with - two huffman trees. One huffman tree is used for the lit and len values ("ll"), - another huffman tree is used for the dist values ("d"). These two trees are - stored using their code lengths, and to compress even more these code lengths - are also run-length encoded and huffman compressed. This gives a huffman tree - of code lengths "cl". The code lenghts used to describe this third tree are - the code length code lengths ("clcl"). - */ - - /*The lz77 encoded data, represented with integers since there will also be length and distance codes in it*/ - uivector lz77_encoded; - HuffmanTree tree_ll; /*tree for lit,len values*/ - HuffmanTree tree_d; /*tree for distance codes*/ - HuffmanTree tree_cl; /*tree for encoding the code lengths representing tree_ll and tree_d*/ - uivector frequencies_ll; /*frequency of lit,len codes*/ - uivector frequencies_d; /*frequency of dist codes*/ - uivector frequencies_cl; /*frequency of code length codes*/ - uivector bitlen_lld; /*lit,len,dist code lenghts (int bits), literally (without repeat codes).*/ - uivector bitlen_lld_e; /*bitlen_lld encoded with repeat codes (this is a rudemtary run length compression)*/ - /*bitlen_cl is the code length code lengths ("clcl"). The bit lengths of codes to represent tree_cl - (these are written as is in the file, it would be crazy to compress these using yet another huffman - tree that needs to be represented by yet another set of code lengths)*/ - uivector bitlen_cl; - size_t datasize = dataend - datapos; - - /* - Due to the huffman compression of huffman tree representations ("two levels"), there are some anologies: - bitlen_lld is to tree_cl what data is to tree_ll and tree_d. - bitlen_lld_e is to bitlen_lld what lz77_encoded is to data. - bitlen_cl is to bitlen_lld_e what bitlen_lld is to lz77_encoded. - */ - - unsigned BFINAL = final; - size_t numcodes_ll, numcodes_d, i; - unsigned HLIT, HDIST, HCLEN; - - uivector_init(&lz77_encoded); - HuffmanTree_init(&tree_ll); - HuffmanTree_init(&tree_d); - HuffmanTree_init(&tree_cl); - uivector_init(&frequencies_ll); - uivector_init(&frequencies_d); - uivector_init(&frequencies_cl); - uivector_init(&bitlen_lld); - uivector_init(&bitlen_lld_e); - uivector_init(&bitlen_cl); - - /*This while loop never loops due to a break at the end, it is here to - allow breaking out of it to the cleanup phase on error conditions.*/ - while (!error) - { - if (settings->use_lz77) - { - error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, - settings->minmatch, settings->nicematch, settings->lazymatching); - if (error) break; - } - else - { - if (!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83 /*alloc fail*/); - for (i = datapos; i < dataend; ++i) lz77_encoded.data[i - datapos] = data[i]; /*no LZ77, but still will be Huffman compressed*/ - } - - if (!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83 /*alloc fail*/); - if (!uivector_resizev(&frequencies_d, 30, 0)) ERROR_BREAK(83 /*alloc fail*/); - - /*Count the frequencies of lit, len and dist codes*/ - for (i = 0; i != lz77_encoded.size; ++i) - { - unsigned symbol = lz77_encoded.data[i]; - ++frequencies_ll.data[symbol]; - if (symbol > 256) - { - unsigned dist = lz77_encoded.data[i + 2]; - ++frequencies_d.data[dist]; - i += 3; - } - } - frequencies_ll.data[256] = 1; /*there will be exactly 1 end code, at the end of the block*/ - - /*Make both huffman trees, one for the lit and len codes, one for the dist codes*/ - error = HuffmanTree_makeFromFrequencies(&tree_ll, frequencies_ll.data, 257, frequencies_ll.size, 15); - if (error) break; - /*2, not 1, is chosen for mincodes: some buggy PNG decoders require at least 2 symbols in the dist tree*/ - error = HuffmanTree_makeFromFrequencies(&tree_d, frequencies_d.data, 2, frequencies_d.size, 15); - if (error) break; - - numcodes_ll = tree_ll.numcodes; if (numcodes_ll > 286) numcodes_ll = 286; - numcodes_d = tree_d.numcodes; if (numcodes_d > 30) numcodes_d = 30; - /*store the code lengths of both generated trees in bitlen_lld*/ - for (i = 0; i != numcodes_ll; ++i) uivector_push_back(&bitlen_lld, HuffmanTree_getLength(&tree_ll, (unsigned)i)); - for (i = 0; i != numcodes_d; ++i) uivector_push_back(&bitlen_lld, HuffmanTree_getLength(&tree_d, (unsigned)i)); - - /*run-length compress bitlen_ldd into bitlen_lld_e by using repeat codes 16 (copy length 3-6 times), - 17 (3-10 zeroes), 18 (11-138 zeroes)*/ - for (i = 0; i != (unsigned)bitlen_lld.size; ++i) - { - unsigned j = 0; /*amount of repititions*/ - while (i + j + 1 < (unsigned)bitlen_lld.size && bitlen_lld.data[i + j + 1] == bitlen_lld.data[i]) ++j; - - if (bitlen_lld.data[i] == 0 && j >= 2) /*repeat code for zeroes*/ - { - ++j; /*include the first zero*/ - if (j <= 10) /*repeat code 17 supports max 10 zeroes*/ - { - uivector_push_back(&bitlen_lld_e, 17); - uivector_push_back(&bitlen_lld_e, j - 3); - } - else /*repeat code 18 supports max 138 zeroes*/ - { - if (j > 138) j = 138; - uivector_push_back(&bitlen_lld_e, 18); - uivector_push_back(&bitlen_lld_e, j - 11); - } - i += (j - 1); - } - else if (j >= 3) /*repeat code for value other than zero*/ - { - size_t k; - unsigned num = j / 6, rest = j % 6; - uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]); - for (k = 0; k < num; ++k) - { - uivector_push_back(&bitlen_lld_e, 16); - uivector_push_back(&bitlen_lld_e, 6 - 3); - } - if (rest >= 3) - { - uivector_push_back(&bitlen_lld_e, 16); - uivector_push_back(&bitlen_lld_e, rest - 3); - } - else j -= rest; - i += j; - } - else /*too short to benefit from repeat code*/ - { - uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]); - } - } - - /*generate tree_cl, the huffmantree of huffmantrees*/ - - if (!uivector_resizev(&frequencies_cl, NUM_CODE_LENGTH_CODES, 0)) ERROR_BREAK(83 /*alloc fail*/); - for (i = 0; i != bitlen_lld_e.size; ++i) - { - ++frequencies_cl.data[bitlen_lld_e.data[i]]; - /*after a repeat code come the bits that specify the number of repetitions, - those don't need to be in the frequencies_cl calculation*/ - if (bitlen_lld_e.data[i] >= 16) ++i; - } - - error = HuffmanTree_makeFromFrequencies(&tree_cl, frequencies_cl.data, - frequencies_cl.size, frequencies_cl.size, 7); - if (error) break; - - if (!uivector_resize(&bitlen_cl, tree_cl.numcodes)) ERROR_BREAK(83 /*alloc fail*/); - for (i = 0; i != tree_cl.numcodes; ++i) - { - /*lenghts of code length tree is in the order as specified by deflate*/ - bitlen_cl.data[i] = HuffmanTree_getLength(&tree_cl, CLCL_ORDER[i]); - } - while (bitlen_cl.data[bitlen_cl.size - 1] == 0 && bitlen_cl.size > 4) - { - /*remove zeros at the end, but minimum size must be 4*/ - if (!uivector_resize(&bitlen_cl, bitlen_cl.size - 1)) ERROR_BREAK(83 /*alloc fail*/); - } - if (error) break; - - /* - Write everything into the output - - After the BFINAL and BTYPE, the dynamic block consists out of the following: - - 5 bits HLIT, 5 bits HDIST, 4 bits HCLEN - - (HCLEN+4)*3 bits code lengths of code length alphabet - - HLIT + 257 code lenghts of lit/length alphabet (encoded using the code length - alphabet, + possible repetition codes 16, 17, 18) - - HDIST + 1 code lengths of distance alphabet (encoded using the code length - alphabet, + possible repetition codes 16, 17, 18) - - compressed data - - 256 (end code) - */ - - /*Write block type*/ - addBitToStream(bp, out, BFINAL); - addBitToStream(bp, out, 0); /*first bit of BTYPE "dynamic"*/ - addBitToStream(bp, out, 1); /*second bit of BTYPE "dynamic"*/ - - /*write the HLIT, HDIST and HCLEN values*/ - HLIT = (unsigned)(numcodes_ll - 257); - HDIST = (unsigned)(numcodes_d - 1); - HCLEN = (unsigned)bitlen_cl.size - 4; - /*trim zeroes for HCLEN. HLIT and HDIST were already trimmed at tree creation*/ - while (!bitlen_cl.data[HCLEN + 4 - 1] && HCLEN > 0) --HCLEN; - addBitsToStream(bp, out, HLIT, 5); - addBitsToStream(bp, out, HDIST, 5); - addBitsToStream(bp, out, HCLEN, 4); - - /*write the code lenghts of the code length alphabet*/ - for (i = 0; i != HCLEN + 4; ++i) addBitsToStream(bp, out, bitlen_cl.data[i], 3); - - /*write the lenghts of the lit/len AND the dist alphabet*/ - for (i = 0; i != bitlen_lld_e.size; ++i) - { - addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_cl, bitlen_lld_e.data[i]), - HuffmanTree_getLength(&tree_cl, bitlen_lld_e.data[i])); - /*extra bits of repeat codes*/ - if (bitlen_lld_e.data[i] == 16) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 2); - else if (bitlen_lld_e.data[i] == 17) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 3); - else if (bitlen_lld_e.data[i] == 18) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 7); - } - - /*write the compressed data symbols*/ - writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d); - /*error: the length of the end code 256 must be larger than 0*/ - if (HuffmanTree_getLength(&tree_ll, 256) == 0) ERROR_BREAK(64); - - /*write the end code*/ - addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256)); - - break; /*end of error-while*/ - } - - /*cleanup*/ - uivector_cleanup(&lz77_encoded); - HuffmanTree_cleanup(&tree_ll); - HuffmanTree_cleanup(&tree_d); - HuffmanTree_cleanup(&tree_cl); - uivector_cleanup(&frequencies_ll); - uivector_cleanup(&frequencies_d); - uivector_cleanup(&frequencies_cl); - uivector_cleanup(&bitlen_lld_e); - uivector_cleanup(&bitlen_lld); - uivector_cleanup(&bitlen_cl); - - return error; -} - -static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash, - const unsigned char* data, - size_t datapos, size_t dataend, - const LodePNGCompressSettings* settings, unsigned final) -{ - HuffmanTree tree_ll; /*tree for literal values and length codes*/ - HuffmanTree tree_d; /*tree for distance codes*/ - - unsigned BFINAL = final; - unsigned error = 0; - size_t i; - - HuffmanTree_init(&tree_ll); - HuffmanTree_init(&tree_d); - - generateFixedLitLenTree(&tree_ll); - generateFixedDistanceTree(&tree_d); - - addBitToStream(bp, out, BFINAL); - addBitToStream(bp, out, 1); /*first bit of BTYPE*/ - addBitToStream(bp, out, 0); /*second bit of BTYPE*/ - - if (settings->use_lz77) /*LZ77 encoded*/ - { - uivector lz77_encoded; - uivector_init(&lz77_encoded); - error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, - settings->minmatch, settings->nicematch, settings->lazymatching); - if (!error) writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d); - uivector_cleanup(&lz77_encoded); - } - else /*no LZ77, but still will be Huffman compressed*/ - { - for (i = datapos; i < dataend; ++i) - { - addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, data[i]), HuffmanTree_getLength(&tree_ll, data[i])); - } - } - /*add END code*/ - if (!error) addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256)); - - /*cleanup*/ - HuffmanTree_cleanup(&tree_ll); - HuffmanTree_cleanup(&tree_d); - - return error; -} - -static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings) -{ - unsigned error = 0; - size_t i, blocksize, numdeflateblocks; - size_t bp = 0; /*the bit pointer*/ - Hash hash; - - if (settings->btype > 2) return 61; - else if (settings->btype == 0) return deflateNoCompression(out, in, insize); - else if (settings->btype == 1) blocksize = insize; - else /*if(settings->btype == 2)*/ - { - /*on PNGs, deflate blocks of 65-262k seem to give most dense encoding*/ - blocksize = insize / 8 + 8; - if (blocksize < 65536) blocksize = 65536; - if (blocksize > 262144) blocksize = 262144; - } - - numdeflateblocks = (insize + blocksize - 1) / blocksize; - if (numdeflateblocks == 0) numdeflateblocks = 1; - - error = hash_init(&hash, settings->windowsize); - if (error) return error; - - for (i = 0; i != numdeflateblocks && !error; ++i) - { - unsigned final = (i == numdeflateblocks - 1); - size_t start = i * blocksize; - size_t end = start + blocksize; - if (end > insize) end = insize; - - if (settings->btype == 1) error = deflateFixed(out, &bp, &hash, in, start, end, settings, final); - else if (settings->btype == 2) error = deflateDynamic(out, &bp, &hash, in, start, end, settings, final); - } - - hash_cleanup(&hash); - - return error; -} - -unsigned lodepng_deflate(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings) -{ - unsigned error; - ucvector v; - ucvector_init_buffer(&v, *out, *outsize); - error = lodepng_deflatev(&v, in, insize, settings); - *out = v.data; - *outsize = v.size; - return error; -} - -static unsigned deflate(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings) -{ - if (settings->custom_deflate) - { - return settings->custom_deflate(out, outsize, in, insize, settings); - } - else - { - return lodepng_deflate(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Adler32 */ -/* ////////////////////////////////////////////////////////////////////////// */ - -static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) -{ - unsigned s1 = adler & 0xffff; - unsigned s2 = (adler >> 16) & 0xffff; - - while (len > 0) - { - /*at least 5550 sums can be done before the sums overflow, saving a lot of module divisions*/ - unsigned amount = len > 5550 ? 5550 : len; - len -= amount; - while (amount > 0) - { - s1 += (*data++); - s2 += s1; - --amount; - } - s1 %= 65521; - s2 %= 65521; - } - - return (s2 << 16) | s1; -} - -/*Return the adler32 of the bytes data[0..len-1]*/ -static unsigned adler32(const unsigned char* data, unsigned len) -{ - return update_adler32(1L, data, len); -} - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Zlib / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_DECODER - -unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGDecompressSettings* settings) -{ - unsigned error = 0; - unsigned CM, CINFO, FDICT; - - if (insize < 2) return 53; /*error, size of zlib data too small*/ - /*read information from zlib header*/ - if ((in[0] * 256 + in[1]) % 31 != 0) - { - /*error: 256 * in[0] + in[1] must be a multiple of 31, the FCHECK value is supposed to be made that way*/ - return 24; - } - - CM = in[0] & 15; - CINFO = (in[0] >> 4) & 15; - /*FCHECK = in[1] & 31;*/ /*FCHECK is already tested above*/ - FDICT = (in[1] >> 5) & 1; - /*FLEVEL = (in[1] >> 6) & 3;*/ /*FLEVEL is not used here*/ - - if (CM != 8 || CINFO > 7) - { - /*error: only compression method 8: inflate with sliding window of 32k is supported by the PNG spec*/ - return 25; - } - if (FDICT != 0) - { - /*error: the specification of PNG says about the zlib stream: - "The additional flags shall not specify a preset dictionary."*/ - return 26; - } - - error = inflate(out, outsize, in + 2, insize - 2, settings); - if (error) return error; - - if (!settings->ignore_adler32) - { - unsigned ADLER32 = lodepng_read32bitInt(&in[insize - 4]); - unsigned checksum = adler32(*out, (unsigned)(*outsize)); - if (checksum != ADLER32) return 58; /*error, adler checksum not correct, data must be corrupted*/ - } - - return 0; /*no error*/ -} - -static unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGDecompressSettings* settings) -{ - if (settings->custom_zlib) - { - return settings->custom_zlib(out, outsize, in, insize, settings); - } - else - { - return lodepng_zlib_decompress(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER - -unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGCompressSettings* settings) -{ - /*initially, *out must be NULL and outsize 0, if you just give some random *out - that's pointing to a non allocated buffer, this'll crash*/ - ucvector outv; - size_t i; - unsigned error; - unsigned char* deflatedata = 0; - size_t deflatesize = 0; - - /*zlib data: 1 byte CMF (CM+CINFO), 1 byte FLG, deflate data, 4 byte ADLER32 checksum of the Decompressed data*/ - unsigned CMF = 120; /*0b01111000: CM 8, CINFO 7. With CINFO 7, any window size up to 32768 can be used.*/ - unsigned FLEVEL = 0; - unsigned FDICT = 0; - unsigned CMFFLG = 256 * CMF + FDICT * 32 + FLEVEL * 64; - unsigned FCHECK = 31 - CMFFLG % 31; - CMFFLG += FCHECK; - - /*ucvector-controlled version of the output buffer, for dynamic array*/ - ucvector_init_buffer(&outv, *out, *outsize); - - ucvector_push_back(&outv, (unsigned char)(CMFFLG >> 8)); - ucvector_push_back(&outv, (unsigned char)(CMFFLG & 255)); - - error = deflate(&deflatedata, &deflatesize, in, insize, settings); - - if (!error) - { - unsigned ADLER32 = adler32(in, (unsigned)insize); - for (i = 0; i != deflatesize; ++i) ucvector_push_back(&outv, deflatedata[i]); - lodepng_free(deflatedata); - lodepng_add32bitInt(&outv, ADLER32); - } - - *out = outv.data; - *outsize = outv.size; - - return error; -} - -/* compress using the default or custom zlib function */ -static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGCompressSettings* settings) -{ - if (settings->custom_zlib) - { - return settings->custom_zlib(out, outsize, in, insize, settings); - } - else - { - return lodepng_zlib_compress(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#else /*no LODEPNG_COMPILE_ZLIB*/ - -#ifdef LODEPNG_COMPILE_DECODER -static unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGDecompressSettings* settings) -{ - if (!settings->custom_zlib) return 87; /*no custom zlib function provided */ - return settings->custom_zlib(out, outsize, in, insize, settings); -} -#endif /*LODEPNG_COMPILE_DECODER*/ -#ifdef LODEPNG_COMPILE_ENCODER -static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, - size_t insize, const LodePNGCompressSettings* settings) -{ - if (!settings->custom_zlib) return 87; /*no custom zlib function provided */ - return settings->custom_zlib(out, outsize, in, insize, settings); -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#endif /*LODEPNG_COMPILE_ZLIB*/ - -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_ENCODER - -/*this is a good tradeoff between speed and compression ratio*/ -#define DEFAULT_WINDOWSIZE 2048 - -void lodepng_compress_settings_init(LodePNGCompressSettings* settings) -{ - /*compress with dynamic huffman tree (not in the mathematical sense, just not the predefined one)*/ - settings->btype = 2; - settings->use_lz77 = 1; - settings->windowsize = DEFAULT_WINDOWSIZE; - settings->minmatch = 3; - settings->nicematch = 128; - settings->lazymatching = 1; - - settings->custom_zlib = 0; - settings->custom_deflate = 0; - settings->custom_context = 0; -} - -const LodePNGCompressSettings lodepng_default_compress_settings = { 2, 1, DEFAULT_WINDOWSIZE, 3, 128, 1, 0, 0, 0 }; - - -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_DECODER - -void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings) -{ - settings->ignore_adler32 = 0; - - settings->custom_zlib = 0; - settings->custom_inflate = 0; - settings->custom_context = 0; -} - -const LodePNGDecompressSettings lodepng_default_decompress_settings = { 0, 0, 0, 0 }; - -#endif /*LODEPNG_COMPILE_DECODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // End of Zlib related code. Begin of PNG related code. // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_PNG - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / CRC32 / */ -/* ////////////////////////////////////////////////////////////////////////// */ - - -#ifndef LODEPNG_NO_COMPILE_CRC -/* CRC polynomial: 0xedb88320 */ -static unsigned lodepng_crc32_table[256] = { - 0u, 1996959894u, 3993919788u, 2567524794u, 124634137u, 1886057615u, 3915621685u, 2657392035u, - 249268274u, 2044508324u, 3772115230u, 2547177864u, 162941995u, 2125561021u, 3887607047u, 2428444049u, - 498536548u, 1789927666u, 4089016648u, 2227061214u, 450548861u, 1843258603u, 4107580753u, 2211677639u, - 325883990u, 1684777152u, 4251122042u, 2321926636u, 335633487u, 1661365465u, 4195302755u, 2366115317u, - 997073096u, 1281953886u, 3579855332u, 2724688242u, 1006888145u, 1258607687u, 3524101629u, 2768942443u, - 901097722u, 1119000684u, 3686517206u, 2898065728u, 853044451u, 1172266101u, 3705015759u, 2882616665u, - 651767980u, 1373503546u, 3369554304u, 3218104598u, 565507253u, 1454621731u, 3485111705u, 3099436303u, - 671266974u, 1594198024u, 3322730930u, 2970347812u, 795835527u, 1483230225u, 3244367275u, 3060149565u, - 1994146192u, 31158534u, 2563907772u, 4023717930u, 1907459465u, 112637215u, 2680153253u, 3904427059u, - 2013776290u, 251722036u, 2517215374u, 3775830040u, 2137656763u, 141376813u, 2439277719u, 3865271297u, - 1802195444u, 476864866u, 2238001368u, 4066508878u, 1812370925u, 453092731u, 2181625025u, 4111451223u, - 1706088902u, 314042704u, 2344532202u, 4240017532u, 1658658271u, 366619977u, 2362670323u, 4224994405u, - 1303535960u, 984961486u, 2747007092u, 3569037538u, 1256170817u, 1037604311u, 2765210733u, 3554079995u, - 1131014506u, 879679996u, 2909243462u, 3663771856u, 1141124467u, 855842277u, 2852801631u, 3708648649u, - 1342533948u, 654459306u, 3188396048u, 3373015174u, 1466479909u, 544179635u, 3110523913u, 3462522015u, - 1591671054u, 702138776u, 2966460450u, 3352799412u, 1504918807u, 783551873u, 3082640443u, 3233442989u, - 3988292384u, 2596254646u, 62317068u, 1957810842u, 3939845945u, 2647816111u, 81470997u, 1943803523u, - 3814918930u, 2489596804u, 225274430u, 2053790376u, 3826175755u, 2466906013u, 167816743u, 2097651377u, - 4027552580u, 2265490386u, 503444072u, 1762050814u, 4150417245u, 2154129355u, 426522225u, 1852507879u, - 4275313526u, 2312317920u, 282753626u, 1742555852u, 4189708143u, 2394877945u, 397917763u, 1622183637u, - 3604390888u, 2714866558u, 953729732u, 1340076626u, 3518719985u, 2797360999u, 1068828381u, 1219638859u, - 3624741850u, 2936675148u, 906185462u, 1090812512u, 3747672003u, 2825379669u, 829329135u, 1181335161u, - 3412177804u, 3160834842u, 628085408u, 1382605366u, 3423369109u, 3138078467u, 570562233u, 1426400815u, - 3317316542u, 2998733608u, 733239954u, 1555261956u, 3268935591u, 3050360625u, 752459403u, 1541320221u, - 2607071920u, 3965973030u, 1969922972u, 40735498u, 2617837225u, 3943577151u, 1913087877u, 83908371u, - 2512341634u, 3803740692u, 2075208622u, 213261112u, 2463272603u, 3855990285u, 2094854071u, 198958881u, - 2262029012u, 4057260610u, 1759359992u, 534414190u, 2176718541u, 4139329115u, 1873836001u, 414664567u, - 2282248934u, 4279200368u, 1711684554u, 285281116u, 2405801727u, 4167216745u, 1634467795u, 376229701u, - 2685067896u, 3608007406u, 1308918612u, 956543938u, 2808555105u, 3495958263u, 1231636301u, 1047427035u, - 2932959818u, 3654703836u, 1088359270u, 936918000u, 2847714899u, 3736837829u, 1202900863u, 817233897u, - 3183342108u, 3401237130u, 1404277552u, 615818150u, 3134207493u, 3453421203u, 1423857449u, 601450431u, - 3009837614u, 3294710456u, 1567103746u, 711928724u, 3020668471u, 3272380065u, 1510334235u, 755167117u -}; - -/*Return the CRC of the bytes buf[0..len-1].*/ -unsigned lodepng_crc32(const unsigned char* data, size_t length) -{ - unsigned r = 0xffffffffu; - size_t i; - for (i = 0; i < length; ++i) - { - r = lodepng_crc32_table[(r ^ data[i]) & 0xff] ^ (r >> 8); - } - return r ^ 0xffffffffu; -} -#else /* !LODEPNG_NO_COMPILE_CRC */ -unsigned lodepng_crc32(const unsigned char* data, size_t length); -#endif /* !LODEPNG_NO_COMPILE_CRC */ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Reading and writing single bits and bytes from/to stream for LodePNG / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -static unsigned char readBitFromReversedStream(size_t* bitpointer, const unsigned char* bitstream) -{ - unsigned char result = (unsigned char)((bitstream[(*bitpointer) >> 3] >> (7 - ((*bitpointer) & 0x7))) & 1); - ++(*bitpointer); - return result; -} - -static unsigned readBitsFromReversedStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) -{ - unsigned result = 0; - size_t i; - for (i = 0; i < nbits; ++i) - { - result <<= 1; - result |= (unsigned)readBitFromReversedStream(bitpointer, bitstream); - } - return result; -} - -#ifdef LODEPNG_COMPILE_DECODER -static void setBitOfReversedStream0(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) -{ - /*the current bit in bitstream must be 0 for this to work*/ - if (bit) - { - /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/ - bitstream[(*bitpointer) >> 3] |= (bit << (7 - ((*bitpointer) & 0x7))); - } - ++(*bitpointer); -} -#endif /*LODEPNG_COMPILE_DECODER*/ - -static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) -{ - /*the current bit in bitstream may be 0 or 1 for this to work*/ - if (bit == 0) bitstream[(*bitpointer) >> 3] &= (unsigned char)(~(1 << (7 - ((*bitpointer) & 0x7)))); - else bitstream[(*bitpointer) >> 3] |= (1 << (7 - ((*bitpointer) & 0x7))); - ++(*bitpointer); -} - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / PNG chunks / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -unsigned lodepng_chunk_length(const unsigned char* chunk) -{ - return lodepng_read32bitInt(&chunk[0]); -} - -void lodepng_chunk_type(char type[5], const unsigned char* chunk) -{ - unsigned i; - for (i = 0; i != 4; ++i) type[i] = (char)chunk[4 + i]; - type[4] = 0; /*null termination char*/ -} - -unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type) -{ - if (strlen(type) != 4) return 0; - return (chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && chunk[7] == type[3]); -} - -unsigned char lodepng_chunk_ancillary(const unsigned char* chunk) -{ - return((chunk[4] & 32) != 0); -} - -unsigned char lodepng_chunk_private(const unsigned char* chunk) -{ - return((chunk[6] & 32) != 0); -} - -unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk) -{ - return((chunk[7] & 32) != 0); -} - -unsigned char* lodepng_chunk_data(unsigned char* chunk) -{ - return &chunk[8]; -} - -const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk) -{ - return &chunk[8]; -} - -unsigned lodepng_chunk_check_crc(const unsigned char* chunk) -{ - unsigned length = lodepng_chunk_length(chunk); - unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]); - /*the CRC is taken of the data and the 4 chunk type letters, not the length*/ - unsigned checksum = lodepng_crc32(&chunk[4], length + 4); - if (CRC != checksum) return 1; - else return 0; -} - -void lodepng_chunk_generate_crc(unsigned char* chunk) -{ - unsigned length = lodepng_chunk_length(chunk); - unsigned CRC = lodepng_crc32(&chunk[4], length + 4); - lodepng_set32bitInt(chunk + 8 + length, CRC); -} - -unsigned char* lodepng_chunk_next(unsigned char* chunk) -{ - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - return &chunk[total_chunk_length]; -} - -const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk) -{ - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - return &chunk[total_chunk_length]; -} - -unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk) -{ - unsigned i; - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - unsigned char *chunk_start, *new_buffer; - size_t new_length = (*outlength) + total_chunk_length; - if (new_length < total_chunk_length || new_length < (*outlength)) return 77; /*integer overflow happened*/ - - new_buffer = (unsigned char*)lodepng_realloc(*out, new_length); - if (!new_buffer) return 83; /*alloc fail*/ - (*out) = new_buffer; - (*outlength) = new_length; - chunk_start = &(*out)[new_length - total_chunk_length]; - - for (i = 0; i != total_chunk_length; ++i) chunk_start[i] = chunk[i]; - - return 0; -} - -unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length, - const char* type, const unsigned char* data) -{ - unsigned i; - unsigned char *chunk, *new_buffer; - size_t new_length = (*outlength) + length + 12; - if (new_length < length + 12 || new_length < (*outlength)) return 77; /*integer overflow happened*/ - new_buffer = (unsigned char*)lodepng_realloc(*out, new_length); - if (!new_buffer) return 83; /*alloc fail*/ - (*out) = new_buffer; - (*outlength) = new_length; - chunk = &(*out)[(*outlength) - length - 12]; - - /*1: length*/ - lodepng_set32bitInt(chunk, (unsigned)length); - - /*2: chunk name (4 letters)*/ - chunk[4] = (unsigned char)type[0]; - chunk[5] = (unsigned char)type[1]; - chunk[6] = (unsigned char)type[2]; - chunk[7] = (unsigned char)type[3]; - - /*3: the data*/ - for (i = 0; i != length; ++i) chunk[8 + i] = data[i]; - - /*4: CRC (of the chunkname characters and the data)*/ - lodepng_chunk_generate_crc(chunk); - - return 0; -} - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Color types and such / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*return type is a LodePNG error code*/ -static unsigned checkColorValidity(LodePNGColorType colortype, unsigned bd) /*bd = bitdepth*/ -{ - switch (colortype) - { - case 0: if (!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) return 37; break; /*grey*/ - case 2: if (!(bd == 8 || bd == 16)) return 37; break; /*RGB*/ - case 3: if (!(bd == 1 || bd == 2 || bd == 4 || bd == 8)) return 37; break; /*palette*/ - case 4: if (!(bd == 8 || bd == 16)) return 37; break; /*grey + alpha*/ - case 6: if (!(bd == 8 || bd == 16)) return 37; break; /*RGBA*/ - default: return 31; - } - return 0; /*allowed color type / bits combination*/ -} - -static unsigned getNumColorChannels(LodePNGColorType colortype) -{ - switch (colortype) - { - case 0: return 1; /*grey*/ - case 2: return 3; /*RGB*/ - case 3: return 1; /*palette*/ - case 4: return 2; /*grey + alpha*/ - case 6: return 4; /*RGBA*/ - } - return 0; /*unexisting color type*/ -} - -static unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth) -{ - /*bits per pixel is amount of channels * bits per channel*/ - return getNumColorChannels(colortype) * bitdepth; -} - -/* ////////////////////////////////////////////////////////////////////////// */ - -void lodepng_color_mode_init(LodePNGColorMode* info) -{ - info->key_defined = 0; - info->key_r = info->key_g = info->key_b = 0; - info->colortype = LCT_RGBA; - info->bitdepth = 8; - info->palette = 0; - info->palettesize = 0; -} - -void lodepng_color_mode_cleanup(LodePNGColorMode* info) -{ - lodepng_palette_clear(info); -} - -unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source) -{ - size_t i; - lodepng_color_mode_cleanup(dest); - *dest = *source; - if (source->palette) - { - dest->palette = (unsigned char*)lodepng_malloc(1024); - if (!dest->palette && source->palettesize) return 83; /*alloc fail*/ - for (i = 0; i != source->palettesize * 4; ++i) dest->palette[i] = source->palette[i]; - } - return 0; -} - -static int lodepng_color_mode_equal(const LodePNGColorMode* a, const LodePNGColorMode* b) -{ - size_t i; - if (a->colortype != b->colortype) return 0; - if (a->bitdepth != b->bitdepth) return 0; - if (a->key_defined != b->key_defined) return 0; - if (a->key_defined) - { - if (a->key_r != b->key_r) return 0; - if (a->key_g != b->key_g) return 0; - if (a->key_b != b->key_b) return 0; - } - /*if one of the palette sizes is 0, then we consider it to be the same as the - other: it means that e.g. the palette was not given by the user and should be - considered the same as the palette inside the PNG.*/ - if (1/*a->palettesize != 0 && b->palettesize != 0*/) { - if (a->palettesize != b->palettesize) return 0; - for (i = 0; i != a->palettesize * 4; ++i) - { - if (a->palette[i] != b->palette[i]) return 0; - } - } - return 1; -} - -void lodepng_palette_clear(LodePNGColorMode* info) -{ - if (info->palette) lodepng_free(info->palette); - info->palette = 0; - info->palettesize = 0; -} - -unsigned lodepng_palette_add(LodePNGColorMode* info, - unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - unsigned char* data; - /*the same resize technique as C++ std::vectors is used, and here it's made so that for a palette with - the max of 256 colors, it'll have the exact alloc size*/ - if (!info->palette) /*allocate palette if empty*/ - { - /*room for 256 colors with 4 bytes each*/ - data = (unsigned char*)lodepng_realloc(info->palette, 1024); - if (!data) return 83; /*alloc fail*/ - else info->palette = data; - } - info->palette[4 * info->palettesize + 0] = r; - info->palette[4 * info->palettesize + 1] = g; - info->palette[4 * info->palettesize + 2] = b; - info->palette[4 * info->palettesize + 3] = a; - ++info->palettesize; - return 0; -} - -unsigned lodepng_get_bpp(const LodePNGColorMode* info) -{ - /*calculate bits per pixel out of colortype and bitdepth*/ - return lodepng_get_bpp_lct(info->colortype, info->bitdepth); -} - -unsigned lodepng_get_channels(const LodePNGColorMode* info) -{ - return getNumColorChannels(info->colortype); -} - -unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info) -{ - return info->colortype == LCT_GREY || info->colortype == LCT_GREY_ALPHA; -} - -unsigned lodepng_is_alpha_type(const LodePNGColorMode* info) -{ - return (info->colortype & 4) != 0; /*4 or 6*/ -} - -unsigned lodepng_is_palette_type(const LodePNGColorMode* info) -{ - return info->colortype == LCT_PALETTE; -} - -unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info) -{ - size_t i; - for (i = 0; i != info->palettesize; ++i) - { - if (info->palette[i * 4 + 3] < 255) return 1; - } - return 0; -} - -unsigned lodepng_can_have_alpha(const LodePNGColorMode* info) -{ - return info->key_defined - || lodepng_is_alpha_type(info) - || lodepng_has_palette_alpha(info); -} - -size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color) -{ - /*will not overflow for any color type if roughly w * h < 268435455*/ - size_t bpp = lodepng_get_bpp(color); - size_t n = w * h; - return ((n / 8) * bpp) + ((n & 7) * bpp + 7) / 8; -} - -size_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) -{ - /*will not overflow for any color type if roughly w * h < 268435455*/ - size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth); - size_t n = w * h; - return ((n / 8) * bpp) + ((n & 7) * bpp + 7) / 8; -} - - -#ifdef LODEPNG_COMPILE_PNG -#ifdef LODEPNG_COMPILE_DECODER -/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer*/ -static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, const LodePNGColorMode* color) -{ - /*will not overflow for any color type if roughly w * h < 268435455*/ - size_t bpp = lodepng_get_bpp(color); - size_t line = ((w / 8) * bpp) + ((w & 7) * bpp + 7) / 8; - return h * line; -} -#endif /*LODEPNG_COMPILE_DECODER*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - -static void LodePNGUnknownChunks_init(LodePNGInfo* info) -{ - unsigned i; - for (i = 0; i != 3; ++i) info->unknown_chunks_data[i] = 0; - for (i = 0; i != 3; ++i) info->unknown_chunks_size[i] = 0; -} - -static void LodePNGUnknownChunks_cleanup(LodePNGInfo* info) -{ - unsigned i; - for (i = 0; i != 3; ++i) lodepng_free(info->unknown_chunks_data[i]); -} - -static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* src) -{ - unsigned i; - - LodePNGUnknownChunks_cleanup(dest); - - for (i = 0; i != 3; ++i) - { - size_t j; - dest->unknown_chunks_size[i] = src->unknown_chunks_size[i]; - dest->unknown_chunks_data[i] = (unsigned char*)lodepng_malloc(src->unknown_chunks_size[i]); - if (!dest->unknown_chunks_data[i] && dest->unknown_chunks_size[i]) return 83; /*alloc fail*/ - for (j = 0; j < src->unknown_chunks_size[i]; ++j) - { - dest->unknown_chunks_data[i][j] = src->unknown_chunks_data[i][j]; - } - } - - return 0; -} - -/******************************************************************************/ - -static void LodePNGText_init(LodePNGInfo* info) -{ - info->text_num = 0; - info->text_keys = NULL; - info->text_strings = NULL; -} - -static void LodePNGText_cleanup(LodePNGInfo* info) -{ - size_t i; - for (i = 0; i != info->text_num; ++i) - { - string_cleanup(&info->text_keys[i]); - string_cleanup(&info->text_strings[i]); - } - lodepng_free(info->text_keys); - lodepng_free(info->text_strings); -} - -static unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* source) -{ - size_t i = 0; - dest->text_keys = 0; - dest->text_strings = 0; - dest->text_num = 0; - for (i = 0; i != source->text_num; ++i) - { - CERROR_TRY_RETURN(lodepng_add_text(dest, source->text_keys[i], source->text_strings[i])); - } - return 0; -} - -void lodepng_clear_text(LodePNGInfo* info) -{ - LodePNGText_cleanup(info); -} - -unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str) -{ - char** new_keys = (char**)(lodepng_realloc(info->text_keys, sizeof(char*) * (info->text_num + 1))); - char** new_strings = (char**)(lodepng_realloc(info->text_strings, sizeof(char*) * (info->text_num + 1))); - if (!new_keys || !new_strings) - { - lodepng_free(new_keys); - lodepng_free(new_strings); - return 83; /*alloc fail*/ - } - - ++info->text_num; - info->text_keys = new_keys; - info->text_strings = new_strings; - - string_init(&info->text_keys[info->text_num - 1]); - string_set(&info->text_keys[info->text_num - 1], key); - - string_init(&info->text_strings[info->text_num - 1]); - string_set(&info->text_strings[info->text_num - 1], str); - - return 0; -} - -/******************************************************************************/ - -static void LodePNGIText_init(LodePNGInfo* info) -{ - info->itext_num = 0; - info->itext_keys = NULL; - info->itext_langtags = NULL; - info->itext_transkeys = NULL; - info->itext_strings = NULL; -} - -static void LodePNGIText_cleanup(LodePNGInfo* info) -{ - size_t i; - for (i = 0; i != info->itext_num; ++i) - { - string_cleanup(&info->itext_keys[i]); - string_cleanup(&info->itext_langtags[i]); - string_cleanup(&info->itext_transkeys[i]); - string_cleanup(&info->itext_strings[i]); - } - lodepng_free(info->itext_keys); - lodepng_free(info->itext_langtags); - lodepng_free(info->itext_transkeys); - lodepng_free(info->itext_strings); -} - -static unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* source) -{ - size_t i = 0; - dest->itext_keys = 0; - dest->itext_langtags = 0; - dest->itext_transkeys = 0; - dest->itext_strings = 0; - dest->itext_num = 0; - for (i = 0; i != source->itext_num; ++i) - { - CERROR_TRY_RETURN(lodepng_add_itext(dest, source->itext_keys[i], source->itext_langtags[i], - source->itext_transkeys[i], source->itext_strings[i])); - } - return 0; -} - -void lodepng_clear_itext(LodePNGInfo* info) -{ - LodePNGIText_cleanup(info); -} - -unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, - const char* transkey, const char* str) -{ - char** new_keys = (char**)(lodepng_realloc(info->itext_keys, sizeof(char*) * (info->itext_num + 1))); - char** new_langtags = (char**)(lodepng_realloc(info->itext_langtags, sizeof(char*) * (info->itext_num + 1))); - char** new_transkeys = (char**)(lodepng_realloc(info->itext_transkeys, sizeof(char*) * (info->itext_num + 1))); - char** new_strings = (char**)(lodepng_realloc(info->itext_strings, sizeof(char*) * (info->itext_num + 1))); - if (!new_keys || !new_langtags || !new_transkeys || !new_strings) - { - lodepng_free(new_keys); - lodepng_free(new_langtags); - lodepng_free(new_transkeys); - lodepng_free(new_strings); - return 83; /*alloc fail*/ - } - - ++info->itext_num; - info->itext_keys = new_keys; - info->itext_langtags = new_langtags; - info->itext_transkeys = new_transkeys; - info->itext_strings = new_strings; - - string_init(&info->itext_keys[info->itext_num - 1]); - string_set(&info->itext_keys[info->itext_num - 1], key); - - string_init(&info->itext_langtags[info->itext_num - 1]); - string_set(&info->itext_langtags[info->itext_num - 1], langtag); - - string_init(&info->itext_transkeys[info->itext_num - 1]); - string_set(&info->itext_transkeys[info->itext_num - 1], transkey); - - string_init(&info->itext_strings[info->itext_num - 1]); - string_set(&info->itext_strings[info->itext_num - 1], str); - - return 0; -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -void lodepng_info_init(LodePNGInfo* info) -{ - lodepng_color_mode_init(&info->color); - info->interlace_method = 0; - info->compression_method = 0; - info->filter_method = 0; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - info->background_defined = 0; - info->background_r = info->background_g = info->background_b = 0; - - LodePNGText_init(info); - LodePNGIText_init(info); - - info->time_defined = 0; - info->phys_defined = 0; - - LodePNGUnknownChunks_init(info); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} - -void lodepng_info_cleanup(LodePNGInfo* info) -{ - lodepng_color_mode_cleanup(&info->color); -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - LodePNGText_cleanup(info); - LodePNGIText_cleanup(info); - - LodePNGUnknownChunks_cleanup(info); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} - -unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) -{ - lodepng_info_cleanup(dest); - *dest = *source; - lodepng_color_mode_init(&dest->color); - CERROR_TRY_RETURN(lodepng_color_mode_copy(&dest->color, &source->color)); - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - CERROR_TRY_RETURN(LodePNGText_copy(dest, source)); - CERROR_TRY_RETURN(LodePNGIText_copy(dest, source)); - - LodePNGUnknownChunks_init(dest); - CERROR_TRY_RETURN(LodePNGUnknownChunks_copy(dest, source)); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - return 0; -} - -void lodepng_info_swap(LodePNGInfo* a, LodePNGInfo* b) -{ - LodePNGInfo temp = *a; - *a = *b; - *b = temp; -} - -/* ////////////////////////////////////////////////////////////////////////// */ - -/*index: bitgroup index, bits: bitgroup size(1, 2 or 4), in: bitgroup value, out: octet array to add bits to*/ -static void addColorBits(unsigned char* out, size_t index, unsigned bits, unsigned in) -{ - unsigned m = bits == 1 ? 7 : bits == 2 ? 3 : 1; /*8 / bits - 1*/ - /*p = the partial index in the byte, e.g. with 4 palettebits it is 0 for first half or 1 for second half*/ - unsigned p = index & m; - in &= (1u << bits) - 1u; /*filter out any other bits of the input value*/ - in = in << (bits * (m - p)); - if (p == 0) out[index * bits / 8] = in; - else out[index * bits / 8] |= in; -} - -typedef struct ColorTree ColorTree; - -/* -One node of a color tree -This is the data structure used to count the number of unique colors and to get a palette -index for a color. It's like an octree, but because the alpha channel is used too, each -node has 16 instead of 8 children. -*/ -struct ColorTree -{ - ColorTree* children[16]; /*up to 16 pointers to ColorTree of next level*/ - int index; /*the payload. Only has a meaningful value if this is in the last level*/ -}; - -static void color_tree_init(ColorTree* tree) -{ - int i; - for (i = 0; i != 16; ++i) tree->children[i] = 0; - tree->index = -1; -} - -static void color_tree_cleanup(ColorTree* tree) -{ - int i; - for (i = 0; i != 16; ++i) - { - if (tree->children[i]) - { - color_tree_cleanup(tree->children[i]); - lodepng_free(tree->children[i]); - } - } -} - -/*returns -1 if color not present, its index otherwise*/ -static int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - int bit = 0; - for (bit = 0; bit < 8; ++bit) - { - int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); - if (!tree->children[i]) return -1; - else tree = tree->children[i]; - } - return tree ? tree->index : -1; -} - -#ifdef LODEPNG_COMPILE_ENCODER -static int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - return color_tree_get(tree, r, g, b, a) >= 0; -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/*color is not allowed to already exist. -Index should be >= 0 (it's signed to be compatible with using -1 for "doesn't exist")*/ -static void color_tree_add(ColorTree* tree, - unsigned char r, unsigned char g, unsigned char b, unsigned char a, unsigned index) -{ - int bit; - for (bit = 0; bit < 8; ++bit) - { - int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); - if (!tree->children[i]) - { - tree->children[i] = (ColorTree*)lodepng_malloc(sizeof(ColorTree)); - color_tree_init(tree->children[i]); - } - tree = tree->children[i]; - } - tree->index = (int)index; -} - -/*put a pixel, given its RGBA color, into image of any color type*/ -static unsigned rgba8ToPixel(unsigned char* out, size_t i, - const LodePNGColorMode* mode, ColorTree* tree /*for palette*/, - unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - if (mode->colortype == LCT_GREY) - { - unsigned char grey = r; /*((unsigned short)r + g + b) / 3*/; - if (mode->bitdepth == 8) out[i] = grey; - else if (mode->bitdepth == 16) out[i * 2 + 0] = out[i * 2 + 1] = grey; - else - { - /*take the most significant bits of grey*/ - grey = (grey >> (8 - mode->bitdepth)) & ((1 << mode->bitdepth) - 1); - addColorBits(out, i, mode->bitdepth, grey); - } - } - else if (mode->colortype == LCT_RGB) - { - if (mode->bitdepth == 8) - { - out[i * 3 + 0] = r; - out[i * 3 + 1] = g; - out[i * 3 + 2] = b; - } - else - { - out[i * 6 + 0] = out[i * 6 + 1] = r; - out[i * 6 + 2] = out[i * 6 + 3] = g; - out[i * 6 + 4] = out[i * 6 + 5] = b; - } - } - else if (mode->colortype == LCT_PALETTE) - { - int index = color_tree_get(tree, r, g, b, a); - if (index < 0) return 82; /*color not in palette*/ - if (mode->bitdepth == 8) out[i] = index; - else addColorBits(out, i, mode->bitdepth, (unsigned)index); - } - else if (mode->colortype == LCT_GREY_ALPHA) - { - unsigned char grey = r; /*((unsigned short)r + g + b) / 3*/; - if (mode->bitdepth == 8) - { - out[i * 2 + 0] = grey; - out[i * 2 + 1] = a; - } - else if (mode->bitdepth == 16) - { - out[i * 4 + 0] = out[i * 4 + 1] = grey; - out[i * 4 + 2] = out[i * 4 + 3] = a; - } - } - else if (mode->colortype == LCT_RGBA) - { - if (mode->bitdepth == 8) - { - out[i * 4 + 0] = r; - out[i * 4 + 1] = g; - out[i * 4 + 2] = b; - out[i * 4 + 3] = a; - } - else - { - out[i * 8 + 0] = out[i * 8 + 1] = r; - out[i * 8 + 2] = out[i * 8 + 3] = g; - out[i * 8 + 4] = out[i * 8 + 5] = b; - out[i * 8 + 6] = out[i * 8 + 7] = a; - } - } - - return 0; /*no error*/ -} - -/*put a pixel, given its RGBA16 color, into image of any color 16-bitdepth type*/ -static void rgba16ToPixel(unsigned char* out, size_t i, - const LodePNGColorMode* mode, - unsigned short r, unsigned short g, unsigned short b, unsigned short a) -{ - if (mode->colortype == LCT_GREY) - { - unsigned short grey = r; /*((unsigned)r + g + b) / 3*/; - out[i * 2 + 0] = (grey >> 8) & 255; - out[i * 2 + 1] = grey & 255; - } - else if (mode->colortype == LCT_RGB) - { - out[i * 6 + 0] = (r >> 8) & 255; - out[i * 6 + 1] = r & 255; - out[i * 6 + 2] = (g >> 8) & 255; - out[i * 6 + 3] = g & 255; - out[i * 6 + 4] = (b >> 8) & 255; - out[i * 6 + 5] = b & 255; - } - else if (mode->colortype == LCT_GREY_ALPHA) - { - unsigned short grey = r; /*((unsigned)r + g + b) / 3*/; - out[i * 4 + 0] = (grey >> 8) & 255; - out[i * 4 + 1] = grey & 255; - out[i * 4 + 2] = (a >> 8) & 255; - out[i * 4 + 3] = a & 255; - } - else if (mode->colortype == LCT_RGBA) - { - out[i * 8 + 0] = (r >> 8) & 255; - out[i * 8 + 1] = r & 255; - out[i * 8 + 2] = (g >> 8) & 255; - out[i * 8 + 3] = g & 255; - out[i * 8 + 4] = (b >> 8) & 255; - out[i * 8 + 5] = b & 255; - out[i * 8 + 6] = (a >> 8) & 255; - out[i * 8 + 7] = a & 255; - } -} - -/*Get RGBA8 color of pixel with index i (y * width + x) from the raw image with given color type.*/ -static void getPixelColorRGBA8(unsigned char* r, unsigned char* g, - unsigned char* b, unsigned char* a, - const unsigned char* in, size_t i, - const LodePNGColorMode* mode) -{ - if (mode->colortype == LCT_GREY) - { - if (mode->bitdepth == 8) - { - *r = *g = *b = in[i]; - if (mode->key_defined && *r == mode->key_r) *a = 0; - else *a = 255; - } - else if (mode->bitdepth == 16) - { - *r = *g = *b = in[i * 2 + 0]; - if (mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; - else *a = 255; - } - else - { - unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ - size_t j = i * mode->bitdepth; - unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); - *r = *g = *b = (value * 255) / highest; - if (mode->key_defined && value == mode->key_r) *a = 0; - else *a = 255; - } - } - else if (mode->colortype == LCT_RGB) - { - if (mode->bitdepth == 8) - { - *r = in[i * 3 + 0]; *g = in[i * 3 + 1]; *b = in[i * 3 + 2]; - if (mode->key_defined && *r == mode->key_r && *g == mode->key_g && *b == mode->key_b) *a = 0; - else *a = 255; - } - else - { - *r = in[i * 6 + 0]; - *g = in[i * 6 + 2]; - *b = in[i * 6 + 4]; - if (mode->key_defined && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r - && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g - && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; - else *a = 255; - } - } - else if (mode->colortype == LCT_PALETTE) - { - unsigned index; - if (mode->bitdepth == 8) index = in[i]; - else - { - size_t j = i * mode->bitdepth; - index = readBitsFromReversedStream(&j, in, mode->bitdepth); - } - - if (index >= mode->palettesize) - { - /*This is an error according to the PNG spec, but common PNG decoders make it black instead. - Done here too, slightly faster due to no error handling needed.*/ - *r = *g = *b = 0; - *a = 255; - } - else - { - *r = mode->palette[index * 4 + 0]; - *g = mode->palette[index * 4 + 1]; - *b = mode->palette[index * 4 + 2]; - *a = mode->palette[index * 4 + 3]; - } - } - else if (mode->colortype == LCT_GREY_ALPHA) - { - if (mode->bitdepth == 8) - { - *r = *g = *b = in[i * 2 + 0]; - *a = in[i * 2 + 1]; - } - else - { - *r = *g = *b = in[i * 4 + 0]; - *a = in[i * 4 + 2]; - } - } - else if (mode->colortype == LCT_RGBA) - { - if (mode->bitdepth == 8) - { - *r = in[i * 4 + 0]; - *g = in[i * 4 + 1]; - *b = in[i * 4 + 2]; - *a = in[i * 4 + 3]; - } - else - { - *r = in[i * 8 + 0]; - *g = in[i * 8 + 2]; - *b = in[i * 8 + 4]; - *a = in[i * 8 + 6]; - } - } -} - -/*Similar to getPixelColorRGBA8, but with all the for loops inside of the color -mode test cases, optimized to convert the colors much faster, when converting -to RGBA or RGB with 8 bit per cannel. buffer must be RGBA or RGB output with -enough memory, if has_alpha is true the output is RGBA. mode has the color mode -of the input buffer.*/ -static void getPixelColorsRGBA8(unsigned char* buffer, size_t numpixels, - unsigned has_alpha, const unsigned char* in, - const LodePNGColorMode* mode) -{ - unsigned num_channels = has_alpha ? 4 : 3; - size_t i; - if (mode->colortype == LCT_GREY) - { - if (mode->bitdepth == 8) - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = buffer[1] = buffer[2] = in[i]; - if (has_alpha) buffer[3] = mode->key_defined && in[i] == mode->key_r ? 0 : 255; - } - } - else if (mode->bitdepth == 16) - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = buffer[1] = buffer[2] = in[i * 2]; - if (has_alpha) buffer[3] = mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r ? 0 : 255; - } - } - else - { - unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ - size_t j = 0; - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); - buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest; - if (has_alpha) buffer[3] = mode->key_defined && value == mode->key_r ? 0 : 255; - } - } - } - else if (mode->colortype == LCT_RGB) - { - if (mode->bitdepth == 8) - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = in[i * 3 + 0]; - buffer[1] = in[i * 3 + 1]; - buffer[2] = in[i * 3 + 2]; - if (has_alpha) buffer[3] = mode->key_defined && buffer[0] == mode->key_r - && buffer[1] == mode->key_g && buffer[2] == mode->key_b ? 0 : 255; - } - } - else - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = in[i * 6 + 0]; - buffer[1] = in[i * 6 + 2]; - buffer[2] = in[i * 6 + 4]; - if (has_alpha) buffer[3] = mode->key_defined - && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r - && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g - && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b ? 0 : 255; - } - } - } - else if (mode->colortype == LCT_PALETTE) - { - unsigned index; - size_t j = 0; - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - if (mode->bitdepth == 8) index = in[i]; - else index = readBitsFromReversedStream(&j, in, mode->bitdepth); - - if (index >= mode->palettesize) - { - /*This is an error according to the PNG spec, but most PNG decoders make it black instead. - Done here too, slightly faster due to no error handling needed.*/ - buffer[0] = buffer[1] = buffer[2] = 0; - if (has_alpha) buffer[3] = 255; - } - else - { - buffer[0] = mode->palette[index * 4 + 0]; - buffer[1] = mode->palette[index * 4 + 1]; - buffer[2] = mode->palette[index * 4 + 2]; - if (has_alpha) buffer[3] = mode->palette[index * 4 + 3]; - } - } - } - else if (mode->colortype == LCT_GREY_ALPHA) - { - if (mode->bitdepth == 8) - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0]; - if (has_alpha) buffer[3] = in[i * 2 + 1]; - } - } - else - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0]; - if (has_alpha) buffer[3] = in[i * 4 + 2]; - } - } - } - else if (mode->colortype == LCT_RGBA) - { - if (mode->bitdepth == 8) - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = in[i * 4 + 0]; - buffer[1] = in[i * 4 + 1]; - buffer[2] = in[i * 4 + 2]; - if (has_alpha) buffer[3] = in[i * 4 + 3]; - } - } - else - { - for (i = 0; i != numpixels; ++i, buffer += num_channels) - { - buffer[0] = in[i * 8 + 0]; - buffer[1] = in[i * 8 + 2]; - buffer[2] = in[i * 8 + 4]; - if (has_alpha) buffer[3] = in[i * 8 + 6]; - } - } - } -} - -/*Get RGBA16 color of pixel with index i (y * width + x) from the raw image with -given color type, but the given color type must be 16-bit itself.*/ -static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned short* b, unsigned short* a, - const unsigned char* in, size_t i, const LodePNGColorMode* mode) -{ - if (mode->colortype == LCT_GREY) - { - *r = *g = *b = 256 * in[i * 2 + 0] + in[i * 2 + 1]; - if (mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; - else *a = 65535; - } - else if (mode->colortype == LCT_RGB) - { - *r = 256u * in[i * 6 + 0] + in[i * 6 + 1]; - *g = 256u * in[i * 6 + 2] + in[i * 6 + 3]; - *b = 256u * in[i * 6 + 4] + in[i * 6 + 5]; - if (mode->key_defined - && 256u * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r - && 256u * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g - && 256u * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; - else *a = 65535; - } - else if (mode->colortype == LCT_GREY_ALPHA) - { - *r = *g = *b = 256u * in[i * 4 + 0] + in[i * 4 + 1]; - *a = 256u * in[i * 4 + 2] + in[i * 4 + 3]; - } - else if (mode->colortype == LCT_RGBA) - { - *r = 256u * in[i * 8 + 0] + in[i * 8 + 1]; - *g = 256u * in[i * 8 + 2] + in[i * 8 + 3]; - *b = 256u * in[i * 8 + 4] + in[i * 8 + 5]; - *a = 256u * in[i * 8 + 6] + in[i * 8 + 7]; - } -} - -unsigned lodepng_convert(unsigned char* out, const unsigned char* in, - const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in, - unsigned w, unsigned h) -{ - size_t i; - ColorTree tree; - size_t numpixels = w * h; - - if (lodepng_color_mode_equal(mode_out, mode_in)) - { - size_t numbytes = lodepng_get_raw_size(w, h, mode_in); - for (i = 0; i != numbytes; ++i) out[i] = in[i]; - return 0; - } - - if (mode_out->colortype == LCT_PALETTE) - { - size_t palettesize = mode_out->palettesize; - const unsigned char* palette = mode_out->palette; - size_t palsize = 1u << mode_out->bitdepth; - /*if the user specified output palette but did not give the values, assume - they want the values of the input color type (assuming that one is palette). - Note that we never create a new palette ourselves.*/ - if (palettesize == 0) - { - palettesize = mode_in->palettesize; - palette = mode_in->palette; - } - if (palettesize < palsize) palsize = palettesize; - color_tree_init(&tree); - for (i = 0; i != palsize; ++i) - { - const unsigned char* p = &palette[i * 4]; - color_tree_add(&tree, p[0], p[1], p[2], p[3], i); - } - } - - if (mode_in->bitdepth == 16 && mode_out->bitdepth == 16) - { - for (i = 0; i != numpixels; ++i) - { - unsigned short r = 0, g = 0, b = 0, a = 0; - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); - rgba16ToPixel(out, i, mode_out, r, g, b, a); - } - } - else if (mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) - { - getPixelColorsRGBA8(out, numpixels, 1, in, mode_in); - } - else if (mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) - { - getPixelColorsRGBA8(out, numpixels, 0, in, mode_in); - } - else - { - unsigned char r = 0, g = 0, b = 0, a = 0; - for (i = 0; i != numpixels; ++i) - { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); - CERROR_TRY_RETURN(rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a)); - } - } - - if (mode_out->colortype == LCT_PALETTE) - { - color_tree_cleanup(&tree); - } - - return 0; /*no error*/ -} - -#ifdef LODEPNG_COMPILE_ENCODER - -void lodepng_color_profile_init(LodePNGColorProfile* profile) -{ - profile->colored = 0; - profile->key = 0; - profile->key_r = profile->key_g = profile->key_b = 0; - profile->alpha = 0; - profile->numcolors = 0; - profile->bits = 1; -} - -/*function used for debug purposes with C++*/ -/*void printColorProfile(LodePNGColorProfile* p) -{ - std::cout << "colored: " << (int)p->colored << ", "; - std::cout << "key: " << (int)p->key << ", "; - std::cout << "key_r: " << (int)p->key_r << ", "; - std::cout << "key_g: " << (int)p->key_g << ", "; - std::cout << "key_b: " << (int)p->key_b << ", "; - std::cout << "alpha: " << (int)p->alpha << ", "; - std::cout << "numcolors: " << (int)p->numcolors << ", "; - std::cout << "bits: " << (int)p->bits << std::endl; -}*/ - -/*Returns how many bits needed to represent given value (max 8 bit)*/ -static unsigned getValueRequiredBits(unsigned char value) -{ - if (value == 0 || value == 255) return 1; - /*The scaling of 2-bit and 4-bit values uses multiples of 85 and 17*/ - if (value % 17 == 0) return value % 85 == 0 ? 2 : 4; - return 8; -} - -/*profile must already have been inited with mode. -It's ok to set some parameters of profile to done already.*/ -unsigned lodepng_get_color_profile(LodePNGColorProfile* profile, - const unsigned char* in, unsigned w, unsigned h, - const LodePNGColorMode* mode) -{ - unsigned error = 0; - size_t i; - ColorTree tree; - size_t numpixels = w * h; - - unsigned colored_done = lodepng_is_greyscale_type(mode) ? 1 : 0; - unsigned alpha_done = lodepng_can_have_alpha(mode) ? 0 : 1; - unsigned numcolors_done = 0; - unsigned bpp = lodepng_get_bpp(mode); - unsigned bits_done = bpp == 1 ? 1 : 0; - unsigned maxnumcolors = 257; - unsigned sixteen = 0; - if (bpp <= 8) maxnumcolors = bpp == 1 ? 2 : (bpp == 2 ? 4 : (bpp == 4 ? 16 : 256)); - - color_tree_init(&tree); - - /*Check if the 16-bit input is truly 16-bit*/ - if (mode->bitdepth == 16) - { - unsigned short r, g, b, a; - for (i = 0; i != numpixels; ++i) - { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode); - if ((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) || - (b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ - { - sixteen = 1; - break; - } - } - } - - if (sixteen) - { - unsigned short r = 0, g = 0, b = 0, a = 0; - profile->bits = 16; - bits_done = numcolors_done = 1; /*counting colors no longer useful, palette doesn't support 16-bit*/ - - for (i = 0; i != numpixels; ++i) - { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode); - - if (!colored_done && (r != g || r != b)) - { - profile->colored = 1; - colored_done = 1; - } - - if (!alpha_done) - { - unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b); - if (a != 65535 && (a != 0 || (profile->key && !matchkey))) - { - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - } - else if (a == 0 && !profile->alpha && !profile->key) - { - profile->key = 1; - profile->key_r = r; - profile->key_g = g; - profile->key_b = b; - } - else if (a == 65535 && profile->key && matchkey) - { - /* Color key cannot be used if an opaque pixel also has that RGB color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - } - } - if (alpha_done && numcolors_done && colored_done && bits_done) break; - } - - if (profile->key && !profile->alpha) - { - for (i = 0; i != numpixels; ++i) - { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode); - if (a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) - { - /* Color key cannot be used if an opaque pixel also has that RGB color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - } - } - } - } - else /* < 16-bit */ - { - unsigned char r = 0, g = 0, b = 0, a = 0; - for (i = 0; i != numpixels; ++i) - { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode); - - if (!bits_done && profile->bits < 8) - { - /*only r is checked, < 8 bits is only relevant for greyscale*/ - unsigned bits = getValueRequiredBits(r); - if (bits > profile->bits) profile->bits = bits; - } - bits_done = (profile->bits >= bpp); - - if (!colored_done && (r != g || r != b)) - { - profile->colored = 1; - colored_done = 1; - if (profile->bits < 8) profile->bits = 8; /*PNG has no colored modes with less than 8-bit per channel*/ - } - - if (!alpha_done) - { - unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b); - if (a != 255 && (a != 0 || (profile->key && !matchkey))) - { - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - if (profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ - } - else if (a == 0 && !profile->alpha && !profile->key) - { - profile->key = 1; - profile->key_r = r; - profile->key_g = g; - profile->key_b = b; - } - else if (a == 255 && profile->key && matchkey) - { - /* Color key cannot be used if an opaque pixel also has that RGB color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - if (profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ - } - } - - if (!numcolors_done) - { - if (!color_tree_has(&tree, r, g, b, a)) - { - color_tree_add(&tree, r, g, b, a, profile->numcolors); - if (profile->numcolors < 256) - { - unsigned char* p = profile->palette; - unsigned n = profile->numcolors; - p[n * 4 + 0] = r; - p[n * 4 + 1] = g; - p[n * 4 + 2] = b; - p[n * 4 + 3] = a; - } - ++profile->numcolors; - numcolors_done = profile->numcolors >= maxnumcolors; - } - } - - if (alpha_done && numcolors_done && colored_done && bits_done) break; - } - - if (profile->key && !profile->alpha) - { - for (i = 0; i != numpixels; ++i) - { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode); - if (a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) - { - /* Color key cannot be used if an opaque pixel also has that RGB color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - if (profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ - } - } - } - - /*make the profile's key always 16-bit for consistency - repeat each byte twice*/ - profile->key_r += (profile->key_r << 8); - profile->key_g += (profile->key_g << 8); - profile->key_b += (profile->key_b << 8); - } - - color_tree_cleanup(&tree); - return error; -} - -/*Automatically chooses color type that gives smallest amount of bits in the -output image, e.g. grey if there are only greyscale pixels, palette if there -are less than 256 colors, ... -Updates values of mode with a potentially smaller color model. mode_out should -contain the user chosen color model, but will be overwritten with the new chosen one.*/ -unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out, - const unsigned char* image, unsigned w, unsigned h, - const LodePNGColorMode* mode_in) -{ - LodePNGColorProfile prof; - unsigned error = 0; - unsigned i, n, palettebits, palette_ok; - - lodepng_color_profile_init(&prof); - error = lodepng_get_color_profile(&prof, image, w, h, mode_in); - if (error) return error; - mode_out->key_defined = 0; - - if (prof.key && w * h <= 16) - { - prof.alpha = 1; /*too few pixels to justify tRNS chunk overhead*/ - prof.key = 0; - if (prof.bits < 8) prof.bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ - } - n = prof.numcolors; - palettebits = n <= 2 ? 1 : (n <= 4 ? 2 : (n <= 16 ? 4 : 8)); - palette_ok = n <= 256 && prof.bits <= 8; - if (w * h < n * 2) palette_ok = 0; /*don't add palette overhead if image has only a few pixels*/ - if (!prof.colored && prof.bits <= palettebits) palette_ok = 0; /*grey is less overhead*/ - - if (palette_ok) - { - unsigned char* p = prof.palette; - lodepng_palette_clear(mode_out); /*remove potential earlier palette*/ - for (i = 0; i != prof.numcolors; ++i) - { - error = lodepng_palette_add(mode_out, p[i * 4 + 0], p[i * 4 + 1], p[i * 4 + 2], p[i * 4 + 3]); - if (error) break; - } - - mode_out->colortype = LCT_PALETTE; - mode_out->bitdepth = palettebits; - - if (mode_in->colortype == LCT_PALETTE && mode_in->palettesize >= mode_out->palettesize - && mode_in->bitdepth == mode_out->bitdepth) - { - /*If input should have same palette colors, keep original to preserve its order and prevent conversion*/ - lodepng_color_mode_cleanup(mode_out); - lodepng_color_mode_copy(mode_out, mode_in); - } - } - else /*8-bit or 16-bit per channel*/ - { - mode_out->bitdepth = prof.bits; - mode_out->colortype = prof.alpha ? (prof.colored ? LCT_RGBA : LCT_GREY_ALPHA) - : (prof.colored ? LCT_RGB : LCT_GREY); - - if (prof.key) - { - unsigned mask = (1u << mode_out->bitdepth) - 1u; /*profile always uses 16-bit, mask converts it*/ - mode_out->key_r = prof.key_r & mask; - mode_out->key_g = prof.key_g & mask; - mode_out->key_b = prof.key_b & mask; - mode_out->key_defined = 1; - } - } - - return error; -} - -#endif /* #ifdef LODEPNG_COMPILE_ENCODER */ - -/* -Paeth predicter, used by PNG filter type 4 -The parameters are of type short, but should come from unsigned chars, the shorts -are only needed to make the paeth calculation correct. -*/ -static unsigned char paethPredictor(short a, short b, short c) -{ - short pa = abs(b - c); - short pb = abs(a - c); - short pc = abs(a + b - c - c); - - if (pc < pa && pc < pb) return (unsigned char)c; - else if (pb < pa) return (unsigned char)b; - else return (unsigned char)a; -} - -/*shared values used by multiple Adam7 related functions*/ - -static const unsigned ADAM7_IX[7] = { 0, 4, 0, 2, 0, 1, 0 }; /*x start values*/ -static const unsigned ADAM7_IY[7] = { 0, 0, 4, 0, 2, 0, 1 }; /*y start values*/ -static const unsigned ADAM7_DX[7] = { 8, 8, 4, 4, 2, 2, 1 }; /*x delta values*/ -static const unsigned ADAM7_DY[7] = { 8, 8, 8, 4, 4, 2, 2 }; /*y delta values*/ - -/* -Outputs various dimensions and positions in the image related to the Adam7 reduced images. -passw: output containing the width of the 7 passes -passh: output containing the height of the 7 passes -filter_passstart: output containing the index of the start and end of each - reduced image with filter bytes -padded_passstart output containing the index of the start and end of each - reduced image when without filter bytes but with padded scanlines -passstart: output containing the index of the start and end of each reduced - image without padding between scanlines, but still padding between the images -w, h: width and height of non-interlaced image -bpp: bits per pixel -"padded" is only relevant if bpp is less than 8 and a scanline or image does not - end at a full byte -*/ -static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t filter_passstart[8], - size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp) -{ - /*the passstart values have 8 values: the 8th one indicates the byte after the end of the 7th (= last) pass*/ - unsigned i; - - /*calculate width and height in pixels of each pass*/ - for (i = 0; i != 7; ++i) - { - passw[i] = (w + ADAM7_DX[i] - ADAM7_IX[i] - 1) / ADAM7_DX[i]; - passh[i] = (h + ADAM7_DY[i] - ADAM7_IY[i] - 1) / ADAM7_DY[i]; - if (passw[i] == 0) passh[i] = 0; - if (passh[i] == 0) passw[i] = 0; - } - - filter_passstart[0] = padded_passstart[0] = passstart[0] = 0; - for (i = 0; i != 7; ++i) - { - /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/ - filter_passstart[i + 1] = filter_passstart[i] - + ((passw[i] && passh[i]) ? passh[i] * (1 + (passw[i] * bpp + 7) / 8) : 0); - /*bits padded if needed to fill full byte at end of each scanline*/ - padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7) / 8); - /*only padded at end of reduced image*/ - passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7) / 8; - } -} - -#ifdef LODEPNG_COMPILE_DECODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / PNG Decoder / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*read the information from the header and store it in the LodePNGInfo. return value is error*/ -unsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state, - const unsigned char* in, size_t insize) -{ - LodePNGInfo* info = &state->info_png; - if (insize == 0 || in == 0) - { - CERROR_RETURN_ERROR(state->error, 48); /*error: the given data is empty*/ - } - if (insize < 33) - { - CERROR_RETURN_ERROR(state->error, 27); /*error: the data length is smaller than the length of a PNG header*/ - } - - /*when decoding a new PNG image, make sure all parameters created after previous decoding are reset*/ - lodepng_info_cleanup(info); - lodepng_info_init(info); - - if (in[0] != 137 || in[1] != 80 || in[2] != 78 || in[3] != 71 - || in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10) - { - CERROR_RETURN_ERROR(state->error, 28); /*error: the first 8 bytes are not the correct PNG signature*/ - } - if (lodepng_chunk_length(in + 8) != 13) - { - CERROR_RETURN_ERROR(state->error, 94); /*error: header size must be 13 bytes*/ - } - if (!lodepng_chunk_type_equals(in + 8, "IHDR")) - { - CERROR_RETURN_ERROR(state->error, 29); /*error: it doesn't start with a IHDR chunk!*/ - } - - /*read the values given in the header*/ - *w = lodepng_read32bitInt(&in[16]); - *h = lodepng_read32bitInt(&in[20]); - info->color.bitdepth = in[24]; - info->color.colortype = (LodePNGColorType)in[25]; - info->compression_method = in[26]; - info->filter_method = in[27]; - info->interlace_method = in[28]; - - if (*w == 0 || *h == 0) - { - CERROR_RETURN_ERROR(state->error, 93); - } - - if (!state->decoder.ignore_crc) - { - unsigned CRC = lodepng_read32bitInt(&in[29]); - unsigned checksum = lodepng_crc32(&in[12], 17); - if (CRC != checksum) - { - CERROR_RETURN_ERROR(state->error, 57); /*invalid CRC*/ - } - } - - /*error: only compression method 0 is allowed in the specification*/ - if (info->compression_method != 0) CERROR_RETURN_ERROR(state->error, 32); - /*error: only filter method 0 is allowed in the specification*/ - if (info->filter_method != 0) CERROR_RETURN_ERROR(state->error, 33); - /*error: only interlace methods 0 and 1 exist in the specification*/ - if (info->interlace_method > 1) CERROR_RETURN_ERROR(state->error, 34); - - state->error = checkColorValidity(info->color.colortype, info->color.bitdepth); - return state->error; -} - -static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scanline, const unsigned char* precon, - size_t bytewidth, unsigned char filterType, size_t length) -{ - /* - For PNG filter method 0 - unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 byte, - the filter works byte per byte (bytewidth = 1) - precon is the previous unfiltered scanline, recon the result, scanline the current one - the incoming scanlines do NOT include the filtertype byte, that one is given in the parameter filterType instead - recon and scanline MAY be the same memory address! precon must be disjoint. - */ - - size_t i; - switch (filterType) - { - case 0: - for (i = 0; i != length; ++i) recon[i] = scanline[i]; - break; - case 1: - for (i = 0; i != bytewidth; ++i) recon[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) recon[i] = scanline[i] + recon[i - bytewidth]; - break; - case 2: - if (precon) - { - for (i = 0; i != length; ++i) recon[i] = scanline[i] + precon[i]; - } - else - { - for (i = 0; i != length; ++i) recon[i] = scanline[i]; - } - break; - case 3: - if (precon) - { - for (i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1); - for (i = bytewidth; i < length; ++i) recon[i] = scanline[i] + ((recon[i - bytewidth] + precon[i]) >> 1); - } - else - { - for (i = 0; i != bytewidth; ++i) recon[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) recon[i] = scanline[i] + (recon[i - bytewidth] >> 1); - } - break; - case 4: - if (precon) - { - for (i = 0; i != bytewidth; ++i) - { - recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/ - } - for (i = bytewidth; i < length; ++i) - { - recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth])); - } - } - else - { - for (i = 0; i != bytewidth; ++i) - { - recon[i] = scanline[i]; - } - for (i = bytewidth; i < length; ++i) - { - /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/ - recon[i] = (scanline[i] + recon[i - bytewidth]); - } - } - break; - default: return 36; /*error: unexisting filter type given*/ - } - return 0; -} - -static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) -{ - /* - For PNG filter method 0 - this function unfilters a single image (e.g. without interlacing this is called once, with Adam7 seven times) - out must have enough bytes allocated already, in must have the scanlines + 1 filtertype byte per scanline - w and h are image dimensions or dimensions of reduced image, bpp is bits per pixel - in and out are allowed to be the same memory address (but aren't the same size since in has the extra filter bytes) - */ - - unsigned y; - unsigned char* prevline = 0; - - /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/ - size_t bytewidth = (bpp + 7) / 8; - size_t linebytes = (w * bpp + 7) / 8; - - for (y = 0; y < h; ++y) - { - size_t outindex = linebytes * y; - size_t inindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ - unsigned char filterType = in[inindex]; - - CERROR_TRY_RETURN(unfilterScanline(&out[outindex], &in[inindex + 1], prevline, bytewidth, filterType, linebytes)); - - prevline = &out[outindex]; - } - - return 0; -} - -/* -in: Adam7 interlaced image, with no padding bits between scanlines, but between - reduced images so that each reduced image starts at a byte. -out: the same pixels, but re-ordered so that they're now a non-interlaced image with size w*h -bpp: bits per pixel -out has the following size in bits: w * h * bpp. -in is possibly bigger due to padding bits between reduced images. -out must be big enough AND must be 0 everywhere if bpp < 8 in the current implementation -(because that's likely a little bit faster) -NOTE: comments about padding bits are only relevant if bpp < 8 -*/ -static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) -{ - unsigned passw[7], passh[7]; - size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned i; - - Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - if (bpp >= 8) - { - for (i = 0; i != 7; ++i) - { - unsigned x, y, b; - size_t bytewidth = bpp / 8; - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) - { - size_t pixelinstart = passstart[i] + (y * passw[i] + x) * bytewidth; - size_t pixeloutstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth; - for (b = 0; b < bytewidth; ++b) - { - out[pixeloutstart + b] = in[pixelinstart + b]; - } - } - } - } - else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ - { - for (i = 0; i != 7; ++i) - { - unsigned x, y, b; - unsigned ilinebits = bpp * passw[i]; - unsigned olinebits = bpp * w; - size_t obp, ibp; /*bit pointers (for out and in buffer)*/ - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) - { - ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp); - obp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; - for (b = 0; b < bpp; ++b) - { - unsigned char bit = readBitFromReversedStream(&ibp, in); - /*note that this function assumes the out buffer is completely 0, use setBitOfReversedStream otherwise*/ - setBitOfReversedStream0(&obp, out, bit); - } - } - } - } -} - -static void removePaddingBits(unsigned char* out, const unsigned char* in, - size_t olinebits, size_t ilinebits, unsigned h) -{ - /* - After filtering there are still padding bits if scanlines have non multiple of 8 bit amounts. They need - to be removed (except at last scanline of (Adam7-reduced) image) before working with pure image buffers - for the Adam7 code, the color convert code and the output to the user. - in and out are allowed to be the same buffer, in may also be higher but still overlapping; in must - have >= ilinebits*h bits, out must have >= olinebits*h bits, olinebits must be <= ilinebits - also used to move bits after earlier such operations happened, e.g. in a sequence of reduced images from Adam7 - only useful if (ilinebits - olinebits) is a value in the range 1..7 - */ - unsigned y; - size_t diff = ilinebits - olinebits; - size_t ibp = 0, obp = 0; /*input and output bit pointers*/ - for (y = 0; y < h; ++y) - { - size_t x; - for (x = 0; x < olinebits; ++x) - { - unsigned char bit = readBitFromReversedStream(&ibp, in); - setBitOfReversedStream(&obp, out, bit); - } - ibp += diff; - } -} - -/*out must be buffer big enough to contain full image, and in must contain the full decompressed data from -the IDAT chunks (with filter index bytes and possible padding bits) -return value is error*/ -static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, - unsigned w, unsigned h, const LodePNGInfo* info_png) -{ - /* - This function converts the filtered-padded-interlaced data into pure 2D image buffer with the PNG's colortype. - Steps: - *) if no Adam7: 1) unfilter 2) remove padding bits (= posible extra bits per scanline if bpp < 8) - *) if adam7: 1) 7x unfilter 2) 7x remove padding bits 3) Adam7_deinterlace - NOTE: the in buffer will be overwritten with intermediate data! - */ - unsigned bpp = lodepng_get_bpp(&info_png->color); - if (bpp == 0) return 31; /*error: invalid colortype*/ - - if (info_png->interlace_method == 0) - { - if (bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) - { - CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp)); - removePaddingBits(out, in, w * bpp, ((w * bpp + 7) / 8) * 8, h); - } - /*we can immediately filter into the out buffer, no other steps needed*/ - else CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp)); - } - else /*interlace_method is 1 (Adam7)*/ - { - unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned i; - - Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - for (i = 0; i != 7; ++i) - { - CERROR_TRY_RETURN(unfilter(&in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], passh[i], bpp)); - /*TODO: possible efficiency improvement: if in this reduced image the bits fit nicely in 1 scanline, - move bytes instead of bits or move not at all*/ - if (bpp < 8) - { - /*remove padding bits in scanlines; after this there still may be padding - bits between the different reduced images: each reduced image still starts nicely at a byte*/ - removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp, - ((passw[i] * bpp + 7) / 8) * 8, passh[i]); - } - } - - Adam7_deinterlace(out, in, w, h, bpp); - } - - return 0; -} - -static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) -{ - unsigned pos = 0, i; - if (color->palette) lodepng_free(color->palette); - color->palettesize = chunkLength / 3; - color->palette = (unsigned char*)lodepng_malloc(4 * color->palettesize); - if (!color->palette && color->palettesize) - { - color->palettesize = 0; - return 83; /*alloc fail*/ - } - if (color->palettesize > 256) return 38; /*error: palette too big*/ - - for (i = 0; i != color->palettesize; ++i) - { - color->palette[4 * i + 0] = data[pos++]; /*R*/ - color->palette[4 * i + 1] = data[pos++]; /*G*/ - color->palette[4 * i + 2] = data[pos++]; /*B*/ - color->palette[4 * i + 3] = 255; /*alpha*/ - } - - return 0; /* OK */ -} - -static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) -{ - unsigned i; - if (color->colortype == LCT_PALETTE) - { - /*error: more alpha values given than there are palette entries*/ - if (chunkLength > color->palettesize) return 38; - - for (i = 0; i != chunkLength; ++i) color->palette[4 * i + 3] = data[i]; - } - else if (color->colortype == LCT_GREY) - { - /*error: this chunk must be 2 bytes for greyscale image*/ - if (chunkLength != 2) return 30; - - color->key_defined = 1; - color->key_r = color->key_g = color->key_b = 256u * data[0] + data[1]; - } - else if (color->colortype == LCT_RGB) - { - /*error: this chunk must be 6 bytes for RGB image*/ - if (chunkLength != 6) return 41; - - color->key_defined = 1; - color->key_r = 256u * data[0] + data[1]; - color->key_g = 256u * data[2] + data[3]; - color->key_b = 256u * data[4] + data[5]; - } - else return 42; /*error: tRNS chunk not allowed for other color models*/ - - return 0; /* OK */ -} - - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -/*background color chunk (bKGD)*/ -static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ - if (info->color.colortype == LCT_PALETTE) - { - /*error: this chunk must be 1 byte for indexed color image*/ - if (chunkLength != 1) return 43; - - info->background_defined = 1; - info->background_r = info->background_g = info->background_b = data[0]; - } - else if (info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) - { - /*error: this chunk must be 2 bytes for greyscale image*/ - if (chunkLength != 2) return 44; - - info->background_defined = 1; - info->background_r = info->background_g = info->background_b = 256u * data[0] + data[1]; - } - else if (info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) - { - /*error: this chunk must be 6 bytes for greyscale image*/ - if (chunkLength != 6) return 45; - - info->background_defined = 1; - info->background_r = 256u * data[0] + data[1]; - info->background_g = 256u * data[2] + data[3]; - info->background_b = 256u * data[4] + data[5]; - } - - return 0; /* OK */ -} - -/*text chunk (tEXt)*/ -static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ - unsigned error = 0; - char *key = 0, *str = 0; - unsigned i; - - while (!error) /*not really a while loop, only used to break on error*/ - { - unsigned length, string2_begin; - - length = 0; - while (length < chunkLength && data[length] != 0) ++length; - /*even though it's not allowed by the standard, no error is thrown if - there's no null termination char, if the text is empty*/ - if (length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ - - key = (char*)lodepng_malloc(length + 1); - if (!key) CERROR_BREAK(error, 83); /*alloc fail*/ - - key[length] = 0; - for (i = 0; i != length; ++i) key[i] = (char)data[i]; - - string2_begin = length + 1; /*skip keyword null terminator*/ - - length = chunkLength < string2_begin ? 0 : chunkLength - string2_begin; - str = (char*)lodepng_malloc(length + 1); - if (!str) CERROR_BREAK(error, 83); /*alloc fail*/ - - str[length] = 0; - for (i = 0; i != length; ++i) str[i] = (char)data[string2_begin + i]; - - error = lodepng_add_text(info, key, str); - - break; - } - - lodepng_free(key); - lodepng_free(str); - - return error; -} - -/*compressed text chunk (zTXt)*/ -static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings, - const unsigned char* data, size_t chunkLength) -{ - unsigned error = 0; - unsigned i; - - unsigned length, string2_begin; - char *key = 0; - ucvector decoded; - - ucvector_init(&decoded); - - while (!error) /*not really a while loop, only used to break on error*/ - { - for (length = 0; length < chunkLength && data[length] != 0; ++length); - if (length + 2 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ - if (length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ - - key = (char*)lodepng_malloc(length + 1); - if (!key) CERROR_BREAK(error, 83); /*alloc fail*/ - - key[length] = 0; - for (i = 0; i != length; ++i) key[i] = (char)data[i]; - - if (data[length + 1] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ - - string2_begin = length + 2; - if (string2_begin > chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ - - length = chunkLength - string2_begin; - /*will fail if zlib error, e.g. if length is too small*/ - error = zlib_decompress(&decoded.data, &decoded.size, - (unsigned char*)(&data[string2_begin]), - length, zlibsettings); - if (error) break; - ucvector_push_back(&decoded, 0); - - error = lodepng_add_text(info, key, (char*)decoded.data); - - break; - } - - lodepng_free(key); - ucvector_cleanup(&decoded); - - return error; -} - -/*international text chunk (iTXt)*/ -static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings, - const unsigned char* data, size_t chunkLength) -{ - unsigned error = 0; - unsigned i; - - unsigned length, begin, compressed; - char *key = 0, *langtag = 0, *transkey = 0; - ucvector decoded; - ucvector_init(&decoded); - - while (!error) /*not really a while loop, only used to break on error*/ - { - /*Quick check if the chunk length isn't too small. Even without check - it'd still fail with other error checks below if it's too short. This just gives a different error code.*/ - if (chunkLength < 5) CERROR_BREAK(error, 30); /*iTXt chunk too short*/ - - /*read the key*/ - for (length = 0; length < chunkLength && data[length] != 0; ++length); - if (length + 3 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination char, corrupt?*/ - if (length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ - - key = (char*)lodepng_malloc(length + 1); - if (!key) CERROR_BREAK(error, 83); /*alloc fail*/ - - key[length] = 0; - for (i = 0; i != length; ++i) key[i] = (char)data[i]; - - /*read the compression method*/ - compressed = data[length + 1]; - if (data[length + 2] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ - - /*even though it's not allowed by the standard, no error is thrown if - there's no null termination char, if the text is empty for the next 3 texts*/ - - /*read the langtag*/ - begin = length + 3; - length = 0; - for (i = begin; i < chunkLength && data[i] != 0; ++i) ++length; - - langtag = (char*)lodepng_malloc(length + 1); - if (!langtag) CERROR_BREAK(error, 83); /*alloc fail*/ - - langtag[length] = 0; - for (i = 0; i != length; ++i) langtag[i] = (char)data[begin + i]; - - /*read the transkey*/ - begin += length + 1; - length = 0; - for (i = begin; i < chunkLength && data[i] != 0; ++i) ++length; - - transkey = (char*)lodepng_malloc(length + 1); - if (!transkey) CERROR_BREAK(error, 83); /*alloc fail*/ - - transkey[length] = 0; - for (i = 0; i != length; ++i) transkey[i] = (char)data[begin + i]; - - /*read the actual text*/ - begin += length + 1; - - length = chunkLength < begin ? 0 : chunkLength - begin; - - if (compressed) - { - /*will fail if zlib error, e.g. if length is too small*/ - error = zlib_decompress(&decoded.data, &decoded.size, - (unsigned char*)(&data[begin]), - length, zlibsettings); - if (error) break; - if (decoded.allocsize < decoded.size) decoded.allocsize = decoded.size; - ucvector_push_back(&decoded, 0); - } - else - { - if (!ucvector_resize(&decoded, length + 1)) CERROR_BREAK(error, 83 /*alloc fail*/); - - decoded.data[length] = 0; - for (i = 0; i != length; ++i) decoded.data[i] = data[begin + i]; - } - - error = lodepng_add_itext(info, key, langtag, transkey, (char*)decoded.data); - - break; - } - - lodepng_free(key); - lodepng_free(langtag); - lodepng_free(transkey); - ucvector_cleanup(&decoded); - - return error; -} - -static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ - if (chunkLength != 7) return 73; /*invalid tIME chunk size*/ - - info->time_defined = 1; - info->time.year = 256u * data[0] + data[1]; - info->time.month = data[2]; - info->time.day = data[3]; - info->time.hour = data[4]; - info->time.minute = data[5]; - info->time.second = data[6]; - - return 0; /* OK */ -} - -static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) -{ - if (chunkLength != 9) return 74; /*invalid pHYs chunk size*/ - - info->phys_defined = 1; - info->phys_x = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; - info->phys_y = 16777216u * data[4] + 65536u * data[5] + 256u * data[6] + data[7]; - info->phys_unit = data[8]; - - return 0; /* OK */ -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -/*read a PNG, the result will be in the same color type as the PNG (hence "generic")*/ -static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, - LodePNGState* state, - const unsigned char* in, size_t insize) -{ - unsigned char IEND = 0; - const unsigned char* chunk; - size_t i; - ucvector idat; /*the data from idat chunks*/ - ucvector scanlines; - size_t predict; - size_t numpixels; - size_t outsize = 0; - - /*for unknown chunk order*/ - unsigned unknown = 0; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - unsigned critical_pos = 1; /*1 = after IHDR, 2 = after PLTE, 3 = after IDAT*/ -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - - /*provide some proper output values if error will happen*/ - *out = 0; - - state->error = lodepng_inspect(w, h, state, in, insize); /*reads header and resets other parameters in state->info_png*/ - if (state->error) return; - - numpixels = *w * *h; - - /*multiplication overflow*/ - if (*h != 0 && numpixels / *h != *w) CERROR_RETURN(state->error, 92); - /*multiplication overflow possible further below. Allows up to 2^31-1 pixel - bytes with 16-bit RGBA, the rest is room for filter bytes.*/ - if (numpixels > 268435455) CERROR_RETURN(state->error, 92); - - ucvector_init(&idat); - chunk = &in[33]; /*first byte of the first chunk after the header*/ - - /*loop through the chunks, ignoring unknown chunks and stopping at IEND chunk. - IDAT data is put at the start of the in buffer*/ - while (!IEND && !state->error) - { - unsigned chunkLength; - const unsigned char* data; /*the data in the chunk*/ - - /*error: size of the in buffer too small to contain next chunk*/ - if ((size_t)((chunk - in) + 12) > insize || chunk < in) CERROR_BREAK(state->error, 30); - - /*length of the data of the chunk, excluding the length bytes, chunk type and CRC bytes*/ - chunkLength = lodepng_chunk_length(chunk); - /*error: chunk length larger than the max PNG chunk size*/ - if (chunkLength > 2147483647) CERROR_BREAK(state->error, 63); - - if ((size_t)((chunk - in) + chunkLength + 12) > insize || (chunk + chunkLength + 12) < in) - { - CERROR_BREAK(state->error, 64); /*error: size of the in buffer too small to contain next chunk*/ - } - - data = lodepng_chunk_data_const(chunk); - - /*IDAT chunk, containing compressed image data*/ - if (lodepng_chunk_type_equals(chunk, "IDAT")) - { - size_t oldsize = idat.size; - if (!ucvector_resize(&idat, oldsize + chunkLength)) CERROR_BREAK(state->error, 83 /*alloc fail*/); - for (i = 0; i != chunkLength; ++i) idat.data[oldsize + i] = data[i]; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - critical_pos = 3; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - /*IEND chunk*/ - else if (lodepng_chunk_type_equals(chunk, "IEND")) - { - IEND = 1; - } - /*palette chunk (PLTE)*/ - else if (lodepng_chunk_type_equals(chunk, "PLTE")) - { - state->error = readChunk_PLTE(&state->info_png.color, data, chunkLength); - if (state->error) break; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - critical_pos = 2; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - /*palette transparency chunk (tRNS)*/ - else if (lodepng_chunk_type_equals(chunk, "tRNS")) - { - state->error = readChunk_tRNS(&state->info_png.color, data, chunkLength); - if (state->error) break; - } -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*background color chunk (bKGD)*/ - else if (lodepng_chunk_type_equals(chunk, "bKGD")) - { - state->error = readChunk_bKGD(&state->info_png, data, chunkLength); - if (state->error) break; - } - /*text chunk (tEXt)*/ - else if (lodepng_chunk_type_equals(chunk, "tEXt")) - { - if (state->decoder.read_text_chunks) - { - state->error = readChunk_tEXt(&state->info_png, data, chunkLength); - if (state->error) break; - } - } - /*compressed text chunk (zTXt)*/ - else if (lodepng_chunk_type_equals(chunk, "zTXt")) - { - if (state->decoder.read_text_chunks) - { - state->error = readChunk_zTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); - if (state->error) break; - } - } - /*international text chunk (iTXt)*/ - else if (lodepng_chunk_type_equals(chunk, "iTXt")) - { - if (state->decoder.read_text_chunks) - { - state->error = readChunk_iTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength); - if (state->error) break; - } - } - else if (lodepng_chunk_type_equals(chunk, "tIME")) - { - state->error = readChunk_tIME(&state->info_png, data, chunkLength); - if (state->error) break; - } - else if (lodepng_chunk_type_equals(chunk, "pHYs")) - { - state->error = readChunk_pHYs(&state->info_png, data, chunkLength); - if (state->error) break; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - else /*it's not an implemented chunk type, so ignore it: skip over the data*/ - { - /*error: unknown critical chunk (5th bit of first byte of chunk type is 0)*/ - if (!lodepng_chunk_ancillary(chunk)) CERROR_BREAK(state->error, 69); - - unknown = 1; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - if (state->decoder.remember_unknown_chunks) - { - state->error = lodepng_chunk_append(&state->info_png.unknown_chunks_data[critical_pos - 1], - &state->info_png.unknown_chunks_size[critical_pos - 1], chunk); - if (state->error) break; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - - if (!state->decoder.ignore_crc && !unknown) /*check CRC if wanted, only on known chunk types*/ - { - if (lodepng_chunk_check_crc(chunk)) CERROR_BREAK(state->error, 57); /*invalid CRC*/ - } - - if (!IEND) chunk = lodepng_chunk_next_const(chunk); - } - - ucvector_init(&scanlines); - /*predict output size, to allocate exact size for output buffer to avoid more dynamic allocation. - If the decompressed size does not match the prediction, the image must be corrupt.*/ - if (state->info_png.interlace_method == 0) - { - /*The extra *h is added because this are the filter bytes every scanline starts with*/ - predict = lodepng_get_raw_size_idat(*w, *h, &state->info_png.color) + *h; - } - else - { - /*Adam-7 interlaced: predicted size is the sum of the 7 sub-images sizes*/ - const LodePNGColorMode* color = &state->info_png.color; - predict = 0; - predict += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, color) + ((*h + 7) >> 3); - if (*w > 4) predict += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, color) + ((*h + 7) >> 3); - predict += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, color) + ((*h + 3) >> 3); - if (*w > 2) predict += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, color) + ((*h + 3) >> 2); - predict += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, color) + ((*h + 1) >> 2); - if (*w > 1) predict += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, color) + ((*h + 1) >> 1); - predict += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, color) + ((*h + 0) >> 1); - } - if (!state->error && !ucvector_reserve(&scanlines, predict)) state->error = 83; /*alloc fail*/ - if (!state->error) - { - state->error = zlib_decompress(&scanlines.data, &scanlines.size, idat.data, - idat.size, &state->decoder.zlibsettings); - if (!state->error && scanlines.size != predict) state->error = 91; /*decompressed size doesn't match prediction*/ - } - ucvector_cleanup(&idat); - - if (!state->error) - { - outsize = lodepng_get_raw_size(*w, *h, &state->info_png.color); - *out = (unsigned char*)lodepng_malloc(outsize); - if (!*out) state->error = 83; /*alloc fail*/ - } - if (!state->error) - { - for (i = 0; i < outsize; i++) (*out)[i] = 0; - state->error = postProcessScanlines(*out, scanlines.data, *w, *h, &state->info_png); - } - ucvector_cleanup(&scanlines); -} - -unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, - LodePNGState* state, - const unsigned char* in, size_t insize) -{ - *out = 0; - decodeGeneric(out, w, h, state, in, insize); - if (state->error) return state->error; - if (!state->decoder.color_convert || lodepng_color_mode_equal(&state->info_raw, &state->info_png.color)) - { - /*same color type, no copying or converting of data needed*/ - /*store the info_png color settings on the info_raw so that the info_raw still reflects what colortype - the raw image has to the end user*/ - if (!state->decoder.color_convert) - { - state->error = lodepng_color_mode_copy(&state->info_raw, &state->info_png.color); - if (state->error) return state->error; - } - } - else - { - /*color conversion needed; sort of copy of the data*/ - unsigned char* data = *out; - size_t outsize; - - /*TODO: check if this works according to the statement in the documentation: "The converter can convert - from greyscale input color type, to 8-bit greyscale or greyscale with alpha"*/ - if (!(state->info_raw.colortype == LCT_RGB || state->info_raw.colortype == LCT_RGBA) - && !(state->info_raw.bitdepth == 8)) - { - return 56; /*unsupported color mode conversion*/ - } - - outsize = lodepng_get_raw_size(*w, *h, &state->info_raw); - *out = (unsigned char*)lodepng_malloc(outsize); - if (!(*out)) - { - state->error = 83; /*alloc fail*/ - } - else state->error = lodepng_convert(*out, data, &state->info_raw, - &state->info_png.color, *w, *h); - lodepng_free(data); - } - return state->error; -} - -unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, - size_t insize, LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned error; - LodePNGState state; - lodepng_state_init(&state); - state.info_raw.colortype = colortype; - state.info_raw.bitdepth = bitdepth; - error = lodepng_decode(out, w, h, &state, in, insize); - lodepng_state_cleanup(&state); - return error; -} - -unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) -{ - return lodepng_decode_memory(out, w, h, in, insize, LCT_RGBA, 8); -} - -unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) -{ - return lodepng_decode_memory(out, w, h, in, insize, LCT_RGB, 8); -} - -#ifdef LODEPNG_COMPILE_DISK -unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename, - LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned char* buffer = 0; - size_t buffersize; - unsigned error; - error = lodepng_load_file(&buffer, &buffersize, filename); - if (!error) error = lodepng_decode_memory(out, w, h, buffer, buffersize, colortype, bitdepth); - lodepng_free(buffer); - return error; -} - -unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) -{ - return lodepng_decode_file(out, w, h, filename, LCT_RGBA, 8); -} - -unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) -{ - return lodepng_decode_file(out, w, h, filename, LCT_RGB, 8); -} -#endif /*LODEPNG_COMPILE_DISK*/ - -void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings) -{ - settings->color_convert = 1; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - settings->read_text_chunks = 1; - settings->remember_unknown_chunks = 0; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - settings->ignore_crc = 0; - lodepng_decompress_settings_init(&settings->zlibsettings); -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) - -void lodepng_state_init(LodePNGState* state) -{ -#ifdef LODEPNG_COMPILE_DECODER - lodepng_decoder_settings_init(&state->decoder); -#endif /*LODEPNG_COMPILE_DECODER*/ -#ifdef LODEPNG_COMPILE_ENCODER - lodepng_encoder_settings_init(&state->encoder); -#endif /*LODEPNG_COMPILE_ENCODER*/ - lodepng_color_mode_init(&state->info_raw); - lodepng_info_init(&state->info_png); - state->error = 1; -} - -void lodepng_state_cleanup(LodePNGState* state) -{ - lodepng_color_mode_cleanup(&state->info_raw); - lodepng_info_cleanup(&state->info_png); -} - -void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source) -{ - lodepng_state_cleanup(dest); - *dest = *source; - lodepng_color_mode_init(&dest->info_raw); - lodepng_info_init(&dest->info_png); - dest->error = lodepng_color_mode_copy(&dest->info_raw, &source->info_raw); if (dest->error) return; - dest->error = lodepng_info_copy(&dest->info_png, &source->info_png); if (dest->error) return; -} - -#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */ - -#ifdef LODEPNG_COMPILE_ENCODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / PNG Encoder / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*chunkName must be string of 4 characters*/ -static unsigned addChunk(ucvector* out, const char* chunkName, const unsigned char* data, size_t length) -{ - CERROR_TRY_RETURN(lodepng_chunk_create(&out->data, &out->size, (unsigned)length, chunkName, data)); - out->allocsize = out->size; /*fix the allocsize again*/ - return 0; -} - -static void writeSignature(ucvector* out) -{ - /*8 bytes PNG signature, aka the magic bytes*/ - ucvector_push_back(out, 137); - ucvector_push_back(out, 80); - ucvector_push_back(out, 78); - ucvector_push_back(out, 71); - ucvector_push_back(out, 13); - ucvector_push_back(out, 10); - ucvector_push_back(out, 26); - ucvector_push_back(out, 10); -} - -static unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth, unsigned interlace_method) -{ - unsigned error = 0; - ucvector header; - ucvector_init(&header); - - lodepng_add32bitInt(&header, w); /*width*/ - lodepng_add32bitInt(&header, h); /*height*/ - ucvector_push_back(&header, (unsigned char)bitdepth); /*bit depth*/ - ucvector_push_back(&header, (unsigned char)colortype); /*color type*/ - ucvector_push_back(&header, 0); /*compression method*/ - ucvector_push_back(&header, 0); /*filter method*/ - ucvector_push_back(&header, interlace_method); /*interlace method*/ - - error = addChunk(out, "IHDR", header.data, header.size); - ucvector_cleanup(&header); - - return error; -} - -static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info) -{ - unsigned error = 0; - size_t i; - ucvector PLTE; - ucvector_init(&PLTE); - for (i = 0; i != info->palettesize * 4; ++i) - { - /*add all channels except alpha channel*/ - if (i % 4 != 3) ucvector_push_back(&PLTE, info->palette[i]); - } - error = addChunk(out, "PLTE", PLTE.data, PLTE.size); - ucvector_cleanup(&PLTE); - - return error; -} - -static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info) -{ - unsigned error = 0; - size_t i; - ucvector tRNS; - ucvector_init(&tRNS); - if (info->colortype == LCT_PALETTE) - { - size_t amount = info->palettesize; - /*the tail of palette values that all have 255 as alpha, does not have to be encoded*/ - for (i = info->palettesize; i != 0; --i) - { - if (info->palette[4 * (i - 1) + 3] == 255) --amount; - else break; - } - /*add only alpha channel*/ - for (i = 0; i != amount; ++i) ucvector_push_back(&tRNS, info->palette[4 * i + 3]); - } - else if (info->colortype == LCT_GREY) - { - if (info->key_defined) - { - ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255)); - } - } - else if (info->colortype == LCT_RGB) - { - if (info->key_defined) - { - ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_g >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_g & 255)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_b >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_b & 255)); - } - } - - error = addChunk(out, "tRNS", tRNS.data, tRNS.size); - ucvector_cleanup(&tRNS); - - return error; -} - -static unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, size_t datasize, - LodePNGCompressSettings* zlibsettings) -{ - ucvector zlibdata; - unsigned error = 0; - - /*compress with the Zlib compressor*/ - ucvector_init(&zlibdata); - error = zlib_compress(&zlibdata.data, &zlibdata.size, data, datasize, zlibsettings); - if (!error) error = addChunk(out, "IDAT", zlibdata.data, zlibdata.size); - ucvector_cleanup(&zlibdata); - - return error; -} - -static unsigned addChunk_IEND(ucvector* out) -{ - unsigned error = 0; - error = addChunk(out, "IEND", 0, 0); - return error; -} - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - -static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* textstring) -{ - unsigned error = 0; - size_t i; - ucvector text; - ucvector_init(&text); - for (i = 0; keyword[i] != 0; ++i) ucvector_push_back(&text, (unsigned char)keyword[i]); - if (i < 1 || i > 79) return 89; /*error: invalid keyword size*/ - ucvector_push_back(&text, 0); /*0 termination char*/ - for (i = 0; textstring[i] != 0; ++i) ucvector_push_back(&text, (unsigned char)textstring[i]); - error = addChunk(out, "tEXt", text.data, text.size); - ucvector_cleanup(&text); - - return error; -} - -static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* textstring, - LodePNGCompressSettings* zlibsettings) -{ - unsigned error = 0; - ucvector data, compressed; - size_t i, textsize = strlen(textstring); - - ucvector_init(&data); - ucvector_init(&compressed); - for (i = 0; keyword[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)keyword[i]); - if (i < 1 || i > 79) return 89; /*error: invalid keyword size*/ - ucvector_push_back(&data, 0); /*0 termination char*/ - ucvector_push_back(&data, 0); /*compression method: 0*/ - - error = zlib_compress(&compressed.data, &compressed.size, - (unsigned char*)textstring, textsize, zlibsettings); - if (!error) - { - for (i = 0; i != compressed.size; ++i) ucvector_push_back(&data, compressed.data[i]); - error = addChunk(out, "zTXt", data.data, data.size); - } - - ucvector_cleanup(&compressed); - ucvector_cleanup(&data); - return error; -} - -static unsigned addChunk_iTXt(ucvector* out, unsigned compressed, const char* keyword, const char* langtag, - const char* transkey, const char* textstring, LodePNGCompressSettings* zlibsettings) -{ - unsigned error = 0; - ucvector data; - size_t i, textsize = strlen(textstring); - - ucvector_init(&data); - - for (i = 0; keyword[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)keyword[i]); - if (i < 1 || i > 79) return 89; /*error: invalid keyword size*/ - ucvector_push_back(&data, 0); /*null termination char*/ - ucvector_push_back(&data, compressed ? 1 : 0); /*compression flag*/ - ucvector_push_back(&data, 0); /*compression method*/ - for (i = 0; langtag[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)langtag[i]); - ucvector_push_back(&data, 0); /*null termination char*/ - for (i = 0; transkey[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)transkey[i]); - ucvector_push_back(&data, 0); /*null termination char*/ - - if (compressed) - { - ucvector compressed_data; - ucvector_init(&compressed_data); - error = zlib_compress(&compressed_data.data, &compressed_data.size, - (unsigned char*)textstring, textsize, zlibsettings); - if (!error) - { - for (i = 0; i != compressed_data.size; ++i) ucvector_push_back(&data, compressed_data.data[i]); - } - ucvector_cleanup(&compressed_data); - } - else /*not compressed*/ - { - for (i = 0; textstring[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)textstring[i]); - } - - if (!error) error = addChunk(out, "iTXt", data.data, data.size); - ucvector_cleanup(&data); - return error; -} - -static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info) -{ - unsigned error = 0; - ucvector bKGD; - ucvector_init(&bKGD); - if (info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) - { - ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); - } - else if (info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) - { - ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_g >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_g & 255)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_b >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_b & 255)); - } - else if (info->color.colortype == LCT_PALETTE) - { - ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); /*palette index*/ - } - - error = addChunk(out, "bKGD", bKGD.data, bKGD.size); - ucvector_cleanup(&bKGD); - - return error; -} - -static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time) -{ - unsigned error = 0; - unsigned char* data = (unsigned char*)lodepng_malloc(7); - if (!data) return 83; /*alloc fail*/ - data[0] = (unsigned char)(time->year >> 8); - data[1] = (unsigned char)(time->year & 255); - data[2] = (unsigned char)time->month; - data[3] = (unsigned char)time->day; - data[4] = (unsigned char)time->hour; - data[5] = (unsigned char)time->minute; - data[6] = (unsigned char)time->second; - error = addChunk(out, "tIME", data, 7); - lodepng_free(data); - return error; -} - -static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info) -{ - unsigned error = 0; - ucvector data; - ucvector_init(&data); - - lodepng_add32bitInt(&data, info->phys_x); - lodepng_add32bitInt(&data, info->phys_y); - ucvector_push_back(&data, info->phys_unit); - - error = addChunk(out, "pHYs", data.data, data.size); - ucvector_cleanup(&data); - - return error; -} - -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -static void filterScanline(unsigned char* out, const unsigned char* scanline, const unsigned char* prevline, - size_t length, size_t bytewidth, unsigned char filterType) -{ - size_t i; - switch (filterType) - { - case 0: /*None*/ - for (i = 0; i != length; ++i) out[i] = scanline[i]; - break; - case 1: /*Sub*/ - for (i = 0; i != bytewidth; ++i) out[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) out[i] = scanline[i] - scanline[i - bytewidth]; - break; - case 2: /*Up*/ - if (prevline) - { - for (i = 0; i != length; ++i) out[i] = scanline[i] - prevline[i]; - } - else - { - for (i = 0; i != length; ++i) out[i] = scanline[i]; - } - break; - case 3: /*Average*/ - if (prevline) - { - for (i = 0; i != bytewidth; ++i) out[i] = scanline[i] - (prevline[i] >> 1); - for (i = bytewidth; i < length; ++i) out[i] = scanline[i] - ((scanline[i - bytewidth] + prevline[i]) >> 1); - } - else - { - for (i = 0; i != bytewidth; ++i) out[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) out[i] = scanline[i] - (scanline[i - bytewidth] >> 1); - } - break; - case 4: /*Paeth*/ - if (prevline) - { - /*paethPredictor(0, prevline[i], 0) is always prevline[i]*/ - for (i = 0; i != bytewidth; ++i) out[i] = (scanline[i] - prevline[i]); - for (i = bytewidth; i < length; ++i) - { - out[i] = (scanline[i] - paethPredictor(scanline[i - bytewidth], prevline[i], prevline[i - bytewidth])); - } - } - else - { - for (i = 0; i != bytewidth; ++i) out[i] = scanline[i]; - /*paethPredictor(scanline[i - bytewidth], 0, 0) is always scanline[i - bytewidth]*/ - for (i = bytewidth; i < length; ++i) out[i] = (scanline[i] - scanline[i - bytewidth]); - } - break; - default: return; /*unexisting filter type given*/ - } -} - -/* log2 approximation. A slight bit faster than std::log. */ -static float flog2(float f) -{ - float result = 0; - while (f > 32) { result += 4; f /= 16; } - while (f > 2) { ++result; f /= 2; } - return result + 1.442695f * (f * f * f / 3 - 3 * f * f / 2 + 3 * f - 1.83333f); -} - -static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, - const LodePNGColorMode* info, const LodePNGEncoderSettings* settings) -{ - /* - For PNG filter method 0 - out must be a buffer with as size: h + (w * h * bpp + 7) / 8, because there are - the scanlines with 1 extra byte per scanline - */ - - unsigned bpp = lodepng_get_bpp(info); - /*the width of a scanline in bytes, not including the filter type*/ - size_t linebytes = (w * bpp + 7) / 8; - /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/ - size_t bytewidth = (bpp + 7) / 8; - const unsigned char* prevline = 0; - unsigned x, y; - unsigned error = 0; - LodePNGFilterStrategy strategy = settings->filter_strategy; - - /* - There is a heuristic called the minimum sum of absolute differences heuristic, suggested by the PNG standard: - * If the image type is Palette, or the bit depth is smaller than 8, then do not filter the image (i.e. - use fixed filtering, with the filter None). - * (The other case) If the image type is Grayscale or RGB (with or without Alpha), and the bit depth is - not smaller than 8, then use adaptive filtering heuristic as follows: independently for each row, apply - all five filters and select the filter that produces the smallest sum of absolute values per row. - This heuristic is used if filter strategy is LFS_MINSUM and filter_palette_zero is true. - - If filter_palette_zero is true and filter_strategy is not LFS_MINSUM, the above heuristic is followed, - but for "the other case", whatever strategy filter_strategy is set to instead of the minimum sum - heuristic is used. - */ - if (settings->filter_palette_zero && - (info->colortype == LCT_PALETTE || info->bitdepth < 8)) strategy = LFS_ZERO; - - if (bpp == 0) return 31; /*error: invalid color type*/ - - if (strategy == LFS_ZERO) - { - for (y = 0; y != h; ++y) - { - size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ - size_t inindex = linebytes * y; - out[outindex] = 0; /*filter type byte*/ - filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, 0); - prevline = &in[inindex]; - } - } - else if (strategy == LFS_MINSUM) - { - /*adaptive filtering*/ - size_t sum[5]; - unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ - size_t smallest = 0; - unsigned char type, bestType = 0; - - for (type = 0; type != 5; ++type) - { - attempt[type] = (unsigned char*)lodepng_malloc(linebytes); - if (!attempt[type]) return 83; /*alloc fail*/ - } - - if (!error) - { - for (y = 0; y != h; ++y) - { - /*try the 5 filter types*/ - for (type = 0; type != 5; ++type) - { - filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); - - /*calculate the sum of the result*/ - sum[type] = 0; - if (type == 0) - { - for (x = 0; x != linebytes; ++x) sum[type] += (unsigned char)(attempt[type][x]); - } - else - { - for (x = 0; x != linebytes; ++x) - { - /*For differences, each byte should be treated as signed, values above 127 are negative - (converted to signed char). Filtertype 0 isn't a difference though, so use unsigned there. - This means filtertype 0 is almost never chosen, but that is justified.*/ - unsigned char s = attempt[type][x]; - sum[type] += s < 128 ? s : (255U - s); - } - } - - /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ - if (type == 0 || sum[type] < smallest) - { - bestType = type; - smallest = sum[type]; - } - } - - prevline = &in[y * linebytes]; - - /*now fill the out values*/ - out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ - for (x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; - } - } - - for (type = 0; type != 5; ++type) lodepng_free(attempt[type]); - } - else if (strategy == LFS_ENTROPY) - { - float sum[5]; - unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ - float smallest = 0; - unsigned type, bestType = 0; - unsigned count[256]; - - for (type = 0; type != 5; ++type) - { - attempt[type] = (unsigned char*)lodepng_malloc(linebytes); - if (!attempt[type]) return 83; /*alloc fail*/ - } - - for (y = 0; y != h; ++y) - { - /*try the 5 filter types*/ - for (type = 0; type != 5; ++type) - { - filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); - for (x = 0; x != 256; ++x) count[x] = 0; - for (x = 0; x != linebytes; ++x) ++count[attempt[type][x]]; - ++count[type]; /*the filter type itself is part of the scanline*/ - sum[type] = 0; - for (x = 0; x != 256; ++x) - { - float p = count[x] / (float)(linebytes + 1); - sum[type] += count[x] == 0 ? 0 : flog2(1 / p) * p; - } - /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ - if (type == 0 || sum[type] < smallest) - { - bestType = type; - smallest = sum[type]; - } - } - - prevline = &in[y * linebytes]; - - /*now fill the out values*/ - out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ - for (x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; - } - - for (type = 0; type != 5; ++type) lodepng_free(attempt[type]); - } - else if (strategy == LFS_PREDEFINED) - { - for (y = 0; y != h; ++y) - { - size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ - size_t inindex = linebytes * y; - unsigned char type = settings->predefined_filters[y]; - out[outindex] = type; /*filter type byte*/ - filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type); - prevline = &in[inindex]; - } - } - else if (strategy == LFS_BRUTE_FORCE) - { - /*brute force filter chooser. - deflate the scanline after every filter attempt to see which one deflates best. - This is very slow and gives only slightly smaller, sometimes even larger, result*/ - size_t size[5]; - unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ - size_t smallest = 0; - unsigned type = 0, bestType = 0; - unsigned char* dummy; - LodePNGCompressSettings zlibsettings = settings->zlibsettings; - /*use fixed tree on the attempts so that the tree is not adapted to the filtertype on purpose, - to simulate the true case where the tree is the same for the whole image. Sometimes it gives - better result with dynamic tree anyway. Using the fixed tree sometimes gives worse, but in rare - cases better compression. It does make this a bit less slow, so it's worth doing this.*/ - zlibsettings.btype = 1; - /*a custom encoder likely doesn't read the btype setting and is optimized for complete PNG - images only, so disable it*/ - zlibsettings.custom_zlib = 0; - zlibsettings.custom_deflate = 0; - for (type = 0; type != 5; ++type) - { - attempt[type] = (unsigned char*)lodepng_malloc(linebytes); - if (!attempt[type]) return 83; /*alloc fail*/ - } - for (y = 0; y != h; ++y) /*try the 5 filter types*/ - { - for (type = 0; type != 5; ++type) - { - unsigned testsize = linebytes; - /*if(testsize > 8) testsize /= 8;*/ /*it already works good enough by testing a part of the row*/ - - filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); - size[type] = 0; - dummy = 0; - zlib_compress(&dummy, &size[type], attempt[type], testsize, &zlibsettings); - lodepng_free(dummy); - /*check if this is smallest size (or if type == 0 it's the first case so always store the values)*/ - if (type == 0 || size[type] < smallest) - { - bestType = type; - smallest = size[type]; - } - } - prevline = &in[y * linebytes]; - out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ - for (x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; - } - for (type = 0; type != 5; ++type) lodepng_free(attempt[type]); - } - else return 88; /* unknown filter strategy */ - - return error; -} - -static void addPaddingBits(unsigned char* out, const unsigned char* in, - size_t olinebits, size_t ilinebits, unsigned h) -{ - /*The opposite of the removePaddingBits function - olinebits must be >= ilinebits*/ - unsigned y; - size_t diff = olinebits - ilinebits; - size_t obp = 0, ibp = 0; /*bit pointers*/ - for (y = 0; y != h; ++y) - { - size_t x; - for (x = 0; x < ilinebits; ++x) - { - unsigned char bit = readBitFromReversedStream(&ibp, in); - setBitOfReversedStream(&obp, out, bit); - } - /*obp += diff; --> no, fill in some value in the padding bits too, to avoid - "Use of uninitialised value of size ###" warning from valgrind*/ - for (x = 0; x != diff; ++x) setBitOfReversedStream(&obp, out, 0); - } -} - -/* -in: non-interlaced image with size w*h -out: the same pixels, but re-ordered according to PNG's Adam7 interlacing, with - no padding bits between scanlines, but between reduced images so that each - reduced image starts at a byte. -bpp: bits per pixel -there are no padding bits, not between scanlines, not between reduced images -in has the following size in bits: w * h * bpp. -out is possibly bigger due to padding bits between reduced images -NOTE: comments about padding bits are only relevant if bpp < 8 -*/ -static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) -{ - unsigned passw[7], passh[7]; - size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned i; - - Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - if (bpp >= 8) - { - for (i = 0; i != 7; ++i) - { - unsigned x, y, b; - size_t bytewidth = bpp / 8; - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) - { - size_t pixelinstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth; - size_t pixeloutstart = passstart[i] + (y * passw[i] + x) * bytewidth; - for (b = 0; b < bytewidth; ++b) - { - out[pixeloutstart + b] = in[pixelinstart + b]; - } - } - } - } - else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ - { - for (i = 0; i != 7; ++i) - { - unsigned x, y, b; - unsigned ilinebits = bpp * passw[i]; - unsigned olinebits = bpp * w; - size_t obp, ibp; /*bit pointers (for out and in buffer)*/ - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) - { - ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; - obp = (8 * passstart[i]) + (y * ilinebits + x * bpp); - for (b = 0; b < bpp; ++b) - { - unsigned char bit = readBitFromReversedStream(&ibp, in); - setBitOfReversedStream(&obp, out, bit); - } - } - } - } -} - -/*out must be buffer big enough to contain uncompressed IDAT chunk data, and in must contain the full image. -return value is error**/ -static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const unsigned char* in, - unsigned w, unsigned h, - const LodePNGInfo* info_png, const LodePNGEncoderSettings* settings) -{ - /* - This function converts the pure 2D image with the PNG's colortype, into filtered-padded-interlaced data. Steps: - *) if no Adam7: 1) add padding bits (= posible extra bits per scanline if bpp < 8) 2) filter - *) if adam7: 1) Adam7_interlace 2) 7x add padding bits 3) 7x filter - */ - unsigned bpp = lodepng_get_bpp(&info_png->color); - unsigned error = 0; - - if (info_png->interlace_method == 0) - { - *outsize = h + (h * ((w * bpp + 7) / 8)); /*image size plus an extra byte per scanline + possible padding bits*/ - *out = (unsigned char*)lodepng_malloc(*outsize); - if (!(*out) && (*outsize)) error = 83; /*alloc fail*/ - - if (!error) - { - /*non multiple of 8 bits per scanline, padding bits needed per scanline*/ - if (bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) - { - unsigned char* padded = (unsigned char*)lodepng_malloc(h * ((w * bpp + 7) / 8)); - if (!padded) error = 83; /*alloc fail*/ - if (!error) - { - addPaddingBits(padded, in, ((w * bpp + 7) / 8) * 8, w * bpp, h); - error = filter(*out, padded, w, h, &info_png->color, settings); - } - lodepng_free(padded); - } - else - { - /*we can immediately filter into the out buffer, no other steps needed*/ - error = filter(*out, in, w, h, &info_png->color, settings); - } - } - } - else /*interlace_method is 1 (Adam7)*/ - { - unsigned passw[7], passh[7]; - size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned char* adam7; - - Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - *outsize = filter_passstart[7]; /*image size plus an extra byte per scanline + possible padding bits*/ - *out = (unsigned char*)lodepng_malloc(*outsize); - if (!(*out)) error = 83; /*alloc fail*/ - - adam7 = (unsigned char*)lodepng_malloc(passstart[7]); - if (!adam7 && passstart[7]) error = 83; /*alloc fail*/ - - if (!error) - { - unsigned i; - - Adam7_interlace(adam7, in, w, h, bpp); - for (i = 0; i != 7; ++i) - { - if (bpp < 8) - { - unsigned char* padded = (unsigned char*)lodepng_malloc(padded_passstart[i + 1] - padded_passstart[i]); - if (!padded) ERROR_BREAK(83); /*alloc fail*/ - addPaddingBits(padded, &adam7[passstart[i]], - ((passw[i] * bpp + 7) / 8) * 8, passw[i] * bpp, passh[i]); - error = filter(&(*out)[filter_passstart[i]], padded, - passw[i], passh[i], &info_png->color, settings); - lodepng_free(padded); - } - else - { - error = filter(&(*out)[filter_passstart[i]], &adam7[padded_passstart[i]], - passw[i], passh[i], &info_png->color, settings); - } - - if (error) break; - } - } - - lodepng_free(adam7); - } - - return error; -} - -/* -palette must have 4 * palettesize bytes allocated, and given in format RGBARGBARGBARGBA... -returns 0 if the palette is opaque, -returns 1 if the palette has a single color with alpha 0 ==> color key -returns 2 if the palette is semi-translucent. -*/ -static unsigned getPaletteTranslucency(const unsigned char* palette, size_t palettesize) -{ - size_t i; - unsigned key = 0; - unsigned r = 0, g = 0, b = 0; /*the value of the color with alpha 0, so long as color keying is possible*/ - for (i = 0; i != palettesize; ++i) - { - if (!key && palette[4 * i + 3] == 0) - { - r = palette[4 * i + 0]; g = palette[4 * i + 1]; b = palette[4 * i + 2]; - key = 1; - i = (size_t)(-1); /*restart from beginning, to detect earlier opaque colors with key's value*/ - } - else if (palette[4 * i + 3] != 255) return 2; - /*when key, no opaque RGB may have key's RGB*/ - else if (key && r == palette[i * 4 + 0] && g == palette[i * 4 + 1] && b == palette[i * 4 + 2]) return 2; - } - return key; -} - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -static unsigned addUnknownChunks(ucvector* out, unsigned char* data, size_t datasize) -{ - unsigned char* inchunk = data; - while ((size_t)(inchunk - data) < datasize) - { - CERROR_TRY_RETURN(lodepng_chunk_append(&out->data, &out->size, inchunk)); - out->allocsize = out->size; /*fix the allocsize again*/ - inchunk = lodepng_chunk_next(inchunk); - } - return 0; -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -unsigned lodepng_encode(unsigned char** out, size_t* outsize, - const unsigned char* image, unsigned w, unsigned h, - LodePNGState* state) -{ - LodePNGInfo info; - ucvector outv; - unsigned char* data = 0; /*uncompressed version of the IDAT chunk data*/ - size_t datasize = 0; - - /*provide some proper output values if error will happen*/ - *out = 0; - *outsize = 0; - state->error = 0; - - lodepng_info_init(&info); - lodepng_info_copy(&info, &state->info_png); - - if ((info.color.colortype == LCT_PALETTE || state->encoder.force_palette) - && (info.color.palettesize == 0 || info.color.palettesize > 256)) - { - state->error = 68; /*invalid palette size, it is only allowed to be 1-256*/ - return state->error; - } - - if (state->encoder.auto_convert) - { - state->error = lodepng_auto_choose_color(&info.color, image, w, h, &state->info_raw); - } - if (state->error) return state->error; - - if (state->encoder.zlibsettings.btype > 2) - { - CERROR_RETURN_ERROR(state->error, 61); /*error: unexisting btype*/ - } - if (state->info_png.interlace_method > 1) - { - CERROR_RETURN_ERROR(state->error, 71); /*error: unexisting interlace mode*/ - } - - state->error = checkColorValidity(info.color.colortype, info.color.bitdepth); - if (state->error) return state->error; /*error: unexisting color type given*/ - state->error = checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth); - if (state->error) return state->error; /*error: unexisting color type given*/ - - if (!lodepng_color_mode_equal(&state->info_raw, &info.color)) - { - unsigned char* converted; - size_t size = (w * h * (size_t)lodepng_get_bpp(&info.color) + 7) / 8; - - converted = (unsigned char*)lodepng_malloc(size); - if (!converted && size) state->error = 83; /*alloc fail*/ - if (!state->error) - { - state->error = lodepng_convert(converted, image, &info.color, &state->info_raw, w, h); - } - if (!state->error) preProcessScanlines(&data, &datasize, converted, w, h, &info, &state->encoder); - lodepng_free(converted); - } - else preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder); - - ucvector_init(&outv); - while (!state->error) /*while only executed once, to break on error*/ - { -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - size_t i; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - /*write signature and chunks*/ - writeSignature(&outv); - /*IHDR*/ - addChunk_IHDR(&outv, w, h, info.color.colortype, info.color.bitdepth, info.interlace_method); -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*unknown chunks between IHDR and PLTE*/ - if (info.unknown_chunks_data[0]) - { - state->error = addUnknownChunks(&outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]); - if (state->error) break; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - /*PLTE*/ - if (info.color.colortype == LCT_PALETTE) - { - addChunk_PLTE(&outv, &info.color); - } - if (state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA)) - { - addChunk_PLTE(&outv, &info.color); - } - /*tRNS*/ - if (info.color.colortype == LCT_PALETTE && getPaletteTranslucency(info.color.palette, info.color.palettesize) != 0) - { - addChunk_tRNS(&outv, &info.color); - } - if ((info.color.colortype == LCT_GREY || info.color.colortype == LCT_RGB) && info.color.key_defined) - { - addChunk_tRNS(&outv, &info.color); - } -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*bKGD (must come between PLTE and the IDAt chunks*/ - if (info.background_defined) addChunk_bKGD(&outv, &info); - /*pHYs (must come before the IDAT chunks)*/ - if (info.phys_defined) addChunk_pHYs(&outv, &info); - - /*unknown chunks between PLTE and IDAT*/ - if (info.unknown_chunks_data[1]) - { - state->error = addUnknownChunks(&outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]); - if (state->error) break; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - /*IDAT (multiple IDAT chunks must be consecutive)*/ - state->error = addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings); - if (state->error) break; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*tIME*/ - if (info.time_defined) addChunk_tIME(&outv, &info.time); - /*tEXt and/or zTXt*/ - for (i = 0; i != info.text_num; ++i) - { - if (strlen(info.text_keys[i]) > 79) - { - state->error = 66; /*text chunk too large*/ - break; - } - if (strlen(info.text_keys[i]) < 1) - { - state->error = 67; /*text chunk too small*/ - break; - } - if (state->encoder.text_compression) - { - addChunk_zTXt(&outv, info.text_keys[i], info.text_strings[i], &state->encoder.zlibsettings); - } - else - { - addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]); - } - } - /*LodePNG version id in text chunk*/ - if (state->encoder.add_id) - { - unsigned alread_added_id_text = 0; - for (i = 0; i != info.text_num; ++i) - { - if (!strcmp(info.text_keys[i], "LodePNG")) - { - alread_added_id_text = 1; - break; - } - } - if (alread_added_id_text == 0) - { - addChunk_tEXt(&outv, "LodePNG", LODEPNG_VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/ - } - } - /*iTXt*/ - for (i = 0; i != info.itext_num; ++i) - { - if (strlen(info.itext_keys[i]) > 79) - { - state->error = 66; /*text chunk too large*/ - break; - } - if (strlen(info.itext_keys[i]) < 1) - { - state->error = 67; /*text chunk too small*/ - break; - } - addChunk_iTXt(&outv, state->encoder.text_compression, - info.itext_keys[i], info.itext_langtags[i], info.itext_transkeys[i], info.itext_strings[i], - &state->encoder.zlibsettings); - } - - /*unknown chunks between IDAT and IEND*/ - if (info.unknown_chunks_data[2]) - { - state->error = addUnknownChunks(&outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]); - if (state->error) break; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - addChunk_IEND(&outv); - - break; /*this isn't really a while loop; no error happened so break out now!*/ - } - - lodepng_info_cleanup(&info); - lodepng_free(data); - /*instead of cleaning the vector up, give it to the output*/ - *out = outv.data; - *outsize = outv.size; - - return state->error; -} - -unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, const unsigned char* image, - unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned error; - LodePNGState state; - lodepng_state_init(&state); - state.info_raw.colortype = colortype; - state.info_raw.bitdepth = bitdepth; - state.info_png.color.colortype = colortype; - state.info_png.color.bitdepth = bitdepth; - lodepng_encode(out, outsize, image, w, h, &state); - error = state.error; - lodepng_state_cleanup(&state); - return error; -} - -unsigned lodepng_encode32(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) -{ - return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGBA, 8); -} - -unsigned lodepng_encode24(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) -{ - return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGB, 8); -} - -#ifdef LODEPNG_COMPILE_DISK -unsigned lodepng_encode_file(const char* filename, const unsigned char* image, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned char* buffer; - size_t buffersize; - unsigned error = lodepng_encode_memory(&buffer, &buffersize, image, w, h, colortype, bitdepth); - if (!error) error = lodepng_save_file(buffer, buffersize, filename); - lodepng_free(buffer); - return error; -} - -unsigned lodepng_encode32_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) -{ - return lodepng_encode_file(filename, image, w, h, LCT_RGBA, 8); -} - -unsigned lodepng_encode24_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) -{ - return lodepng_encode_file(filename, image, w, h, LCT_RGB, 8); -} -#endif /*LODEPNG_COMPILE_DISK*/ - -void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings) -{ - lodepng_compress_settings_init(&settings->zlibsettings); - settings->filter_palette_zero = 1; - settings->filter_strategy = LFS_MINSUM; - settings->auto_convert = 1; - settings->force_palette = 0; - settings->predefined_filters = 0; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - settings->add_id = 0; - settings->text_compression = 1; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} - -#endif /*LODEPNG_COMPILE_ENCODER*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ERROR_TEXT -/* -This returns the description of a numerical error code in English. This is also -the documentation of all the error codes. -*/ -const char* lodepng_error_text(unsigned code) -{ - switch (code) - { - case 0: return "no error, everything went ok"; - case 1: return "nothing done yet"; /*the Encoder/Decoder has done nothing yet, error checking makes no sense yet*/ - case 10: return "end of input memory reached without huffman end code"; /*while huffman decoding*/ - case 11: return "error in code tree made it jump outside of huffman tree"; /*while huffman decoding*/ - case 13: return "problem while processing dynamic deflate block"; - case 14: return "problem while processing dynamic deflate block"; - case 15: return "problem while processing dynamic deflate block"; - case 16: return "unexisting code while processing dynamic deflate block"; - case 17: return "end of out buffer memory reached while inflating"; - case 18: return "invalid distance code while inflating"; - case 19: return "end of out buffer memory reached while inflating"; - case 20: return "invalid deflate block BTYPE encountered while decoding"; - case 21: return "NLEN is not ones complement of LEN in a deflate block"; - /*end of out buffer memory reached while inflating: - This can happen if the inflated deflate data is longer than the amount of bytes required to fill up - all the pixels of the image, given the color depth and image dimensions. Something that doesn't - happen in a normal, well encoded, PNG image.*/ - case 22: return "end of out buffer memory reached while inflating"; - case 23: return "end of in buffer memory reached while inflating"; - case 24: return "invalid FCHECK in zlib header"; - case 25: return "invalid compression method in zlib header"; - case 26: return "FDICT encountered in zlib header while it's not used for PNG"; - case 27: return "PNG file is smaller than a PNG header"; - /*Checks the magic file header, the first 8 bytes of the PNG file*/ - case 28: return "incorrect PNG signature, it's no PNG or corrupted"; - case 29: return "first chunk is not the header chunk"; - case 30: return "chunk length too large, chunk broken off at end of file"; - case 31: return "illegal PNG color type or bpp"; - case 32: return "illegal PNG compression method"; - case 33: return "illegal PNG filter method"; - case 34: return "illegal PNG interlace method"; - case 35: return "chunk length of a chunk is too large or the chunk too small"; - case 36: return "illegal PNG filter type encountered"; - case 37: return "illegal bit depth for this color type given"; - case 38: return "the palette is too big"; /*more than 256 colors*/ - case 39: return "more palette alpha values given in tRNS chunk than there are colors in the palette"; - case 40: return "tRNS chunk has wrong size for greyscale image"; - case 41: return "tRNS chunk has wrong size for RGB image"; - case 42: return "tRNS chunk appeared while it was not allowed for this color type"; - case 43: return "bKGD chunk has wrong size for palette image"; - case 44: return "bKGD chunk has wrong size for greyscale image"; - case 45: return "bKGD chunk has wrong size for RGB image"; - case 48: return "empty input buffer given to decoder. Maybe caused by non-existing file?"; - case 49: return "jumped past memory while generating dynamic huffman tree"; - case 50: return "jumped past memory while generating dynamic huffman tree"; - case 51: return "jumped past memory while inflating huffman block"; - case 52: return "jumped past memory while inflating"; - case 53: return "size of zlib data too small"; - case 54: return "repeat symbol in tree while there was no value symbol yet"; - /*jumped past tree while generating huffman tree, this could be when the - tree will have more leaves than symbols after generating it out of the - given lenghts. They call this an oversubscribed dynamic bit lengths tree in zlib.*/ - case 55: return "jumped past tree while generating huffman tree"; - case 56: return "given output image colortype or bitdepth not supported for color conversion"; - case 57: return "invalid CRC encountered (checking CRC can be disabled)"; - case 58: return "invalid ADLER32 encountered (checking ADLER32 can be disabled)"; - case 59: return "requested color conversion not supported"; - case 60: return "invalid window size given in the settings of the encoder (must be 0-32768)"; - case 61: return "invalid BTYPE given in the settings of the encoder (only 0, 1 and 2 are allowed)"; - /*LodePNG leaves the choice of RGB to greyscale conversion formula to the user.*/ - case 62: return "conversion from color to greyscale not supported"; - case 63: return "length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk"; /*(2^31-1)*/ - /*this would result in the inability of a deflated block to ever contain an end code. It must be at least 1.*/ - case 64: return "the length of the END symbol 256 in the Huffman tree is 0"; - case 66: return "the length of a text chunk keyword given to the encoder is longer than the maximum of 79 bytes"; - case 67: return "the length of a text chunk keyword given to the encoder is smaller than the minimum of 1 byte"; - case 68: return "tried to encode a PLTE chunk with a palette that has less than 1 or more than 256 colors"; - case 69: return "unknown chunk type with 'critical' flag encountered by the decoder"; - case 71: return "unexisting interlace mode given to encoder (must be 0 or 1)"; - case 72: return "while decoding, unexisting compression method encountering in zTXt or iTXt chunk (it must be 0)"; - case 73: return "invalid tIME chunk size"; - case 74: return "invalid pHYs chunk size"; - /*length could be wrong, or data chopped off*/ - case 75: return "no null termination char found while decoding text chunk"; - case 76: return "iTXt chunk too short to contain required bytes"; - case 77: return "integer overflow in buffer size"; - case 78: return "failed to open file for reading"; /*file doesn't exist or couldn't be opened for reading*/ - case 79: return "failed to open file for writing"; - case 80: return "tried creating a tree of 0 symbols"; - case 81: return "lazy matching at pos 0 is impossible"; - case 82: return "color conversion to palette requested while a color isn't in palette"; - case 83: return "memory allocation failed"; - case 84: return "given image too small to contain all pixels to be encoded"; - case 86: return "impossible offset in lz77 encoding (internal bug)"; - case 87: return "must provide custom zlib function pointer if LODEPNG_COMPILE_ZLIB is not defined"; - case 88: return "invalid filter strategy given for LodePNGEncoderSettings.filter_strategy"; - case 89: return "text chunk keyword too short or long: must have size 1-79"; - /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead of %) makes encoding 12% faster.*/ - case 90: return "windowsize must be a power of two"; - case 91: return "invalid decompressed idat size"; - case 92: return "too many pixels, not supported"; - case 93: return "zero width or height is invalid"; - case 94: return "header chunk must have a size of 13 bytes"; - } - return "unknown error code"; -} -#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // C++ Wrapper // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_CPP -namespace lodepng -{ - -#ifdef LODEPNG_COMPILE_DISK - unsigned load_file(std::vector& buffer, const std::string& filename) - { - long size = lodepng_filesize(filename.c_str()); - if (size < 0) return 78; - buffer.resize((size_t)size); - return size == 0 ? 0 : lodepng_buffer_file(&buffer[0], (size_t)size, filename.c_str()); - } - - /*write given buffer to the file, overwriting the file, it doesn't append to it.*/ - unsigned save_file(const std::vector& buffer, const std::string& filename) - { - return lodepng_save_file(buffer.empty() ? 0 : &buffer[0], buffer.size(), filename.c_str()); - } -#endif /* LODEPNG_COMPILE_DISK */ - -#ifdef LODEPNG_COMPILE_ZLIB -#ifdef LODEPNG_COMPILE_DECODER - unsigned decompress(std::vector& out, const unsigned char* in, size_t insize, - const LodePNGDecompressSettings& settings) - { - unsigned char* buffer = 0; - size_t buffersize = 0; - unsigned error = zlib_decompress(&buffer, &buffersize, in, insize, &settings); - if (buffer) - { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned decompress(std::vector& out, const std::vector& in, - const LodePNGDecompressSettings& settings) - { - return decompress(out, in.empty() ? 0 : &in[0], in.size(), settings); - } -#endif /* LODEPNG_COMPILE_DECODER */ - -#ifdef LODEPNG_COMPILE_ENCODER - unsigned compress(std::vector& out, const unsigned char* in, size_t insize, - const LodePNGCompressSettings& settings) - { - unsigned char* buffer = 0; - size_t buffersize = 0; - unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings); - if (buffer) - { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned compress(std::vector& out, const std::vector& in, - const LodePNGCompressSettings& settings) - { - return compress(out, in.empty() ? 0 : &in[0], in.size(), settings); - } -#endif /* LODEPNG_COMPILE_ENCODER */ -#endif /* LODEPNG_COMPILE_ZLIB */ - - -#ifdef LODEPNG_COMPILE_PNG - - State::State() - { - lodepng_state_init(this); - } - - State::State(const State& other) - { - lodepng_state_init(this); - lodepng_state_copy(this, &other); - } - - State::~State() - { - lodepng_state_cleanup(this); - } - - State& State::operator=(const State& other) - { - lodepng_state_copy(this, &other); - return *this; - } - -#ifdef LODEPNG_COMPILE_DECODER - - unsigned decode(std::vector& out, unsigned& w, unsigned& h, const unsigned char* in, - size_t insize, LodePNGColorType colortype, unsigned bitdepth) - { - unsigned char* buffer; - unsigned error = lodepng_decode_memory(&buffer, &w, &h, in, insize, colortype, bitdepth); - if (buffer && !error) - { - State state; - state.info_raw.colortype = colortype; - state.info_raw.bitdepth = bitdepth; - size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - const std::vector& in, LodePNGColorType colortype, unsigned bitdepth) - { - return decode(out, w, h, in.empty() ? 0 : &in[0], (unsigned)in.size(), colortype, bitdepth); - } - - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - State& state, - const unsigned char* in, size_t insize) - { - unsigned char* buffer = NULL; - unsigned error = lodepng_decode(&buffer, &w, &h, &state, in, insize); - if (buffer && !error) - { - size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - } - lodepng_free(buffer); - return error; - } - - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - State& state, - const std::vector& in) - { - return decode(out, w, h, state, in.empty() ? 0 : &in[0], in.size()); - } - -#ifdef LODEPNG_COMPILE_DISK - unsigned decode(std::vector& out, unsigned& w, unsigned& h, const std::string& filename, - LodePNGColorType colortype, unsigned bitdepth) - { - std::vector buffer; - unsigned error = load_file(buffer, filename); - if (error) return error; - return decode(out, w, h, buffer, colortype, bitdepth); - } -#endif /* LODEPNG_COMPILE_DECODER */ -#endif /* LODEPNG_COMPILE_DISK */ - -#ifdef LODEPNG_COMPILE_ENCODER - unsigned encode(std::vector& out, const unsigned char* in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) - { - unsigned char* buffer; - size_t buffersize; - unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth); - if (buffer) - { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned encode(std::vector& out, - const std::vector& in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) - { - if (lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; - return encode(out, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); - } - - unsigned encode(std::vector& out, - const unsigned char* in, unsigned w, unsigned h, - State& state) - { - unsigned char* buffer; - size_t buffersize; - unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state); - if (buffer) - { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned encode(std::vector& out, - const std::vector& in, unsigned w, unsigned h, - State& state) - { - if (lodepng_get_raw_size(w, h, &state.info_raw) > in.size()) return 84; - return encode(out, in.empty() ? 0 : &in[0], w, h, state); - } - -#ifdef LODEPNG_COMPILE_DISK - unsigned encode(const std::string& filename, - const unsigned char* in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) - { - std::vector buffer; - unsigned error = encode(buffer, in, w, h, colortype, bitdepth); - if (!error) error = save_file(buffer, filename); - return error; - } - - unsigned encode(const std::string& filename, - const std::vector& in, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) - { - if (lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; - return encode(filename, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); - } -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_ENCODER */ -#endif /* LODEPNG_COMPILE_PNG */ -} /* namespace lodepng */ -#endif /*LODEPNG_COMPILE_CPP*/ diff --git a/src/rgbcx/test/lodepng.h b/src/rgbcx/test/lodepng.h deleted file mode 100644 index df0f1e7..0000000 --- a/src/rgbcx/test/lodepng.h +++ /dev/null @@ -1,1761 +0,0 @@ -/* -LodePNG version 20161127 - -Copyright (c) 2005-2016 Lode Vandevenne - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. -*/ - -#ifndef LODEPNG_H -#define LODEPNG_H - -#include /*for size_t*/ - -extern const char* LODEPNG_VERSION_STRING; - -/* -The following #defines are used to create code sections. They can be disabled -to disable code sections, which can give faster compile time and smaller binary. -The "NO_COMPILE" defines are designed to be used to pass as defines to the -compiler command to disable them without modifying this header, e.g. --DLODEPNG_NO_COMPILE_ZLIB for gcc. -In addition to those below, you can also define LODEPNG_NO_COMPILE_CRC to -allow implementing a custom lodepng_crc32. -*/ -/*deflate & zlib. If disabled, you must specify alternative zlib functions in -the custom_zlib field of the compress and decompress settings*/ -#ifndef LODEPNG_NO_COMPILE_ZLIB -#define LODEPNG_COMPILE_ZLIB -#endif -/*png encoder and png decoder*/ -#ifndef LODEPNG_NO_COMPILE_PNG -#define LODEPNG_COMPILE_PNG -#endif -/*deflate&zlib decoder and png decoder*/ -#ifndef LODEPNG_NO_COMPILE_DECODER -#define LODEPNG_COMPILE_DECODER -#endif -/*deflate&zlib encoder and png encoder*/ -#ifndef LODEPNG_NO_COMPILE_ENCODER -#define LODEPNG_COMPILE_ENCODER -#endif -/*the optional built in harddisk file loading and saving functions*/ -#ifndef LODEPNG_NO_COMPILE_DISK -#define LODEPNG_COMPILE_DISK -#endif -/*support for chunks other than IHDR, IDAT, PLTE, tRNS, IEND: ancillary and unknown chunks*/ -#ifndef LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS -#define LODEPNG_COMPILE_ANCILLARY_CHUNKS -#endif -/*ability to convert error numerical codes to English text string*/ -#ifndef LODEPNG_NO_COMPILE_ERROR_TEXT -#define LODEPNG_COMPILE_ERROR_TEXT -#endif -/*Compile the default allocators (C's free, malloc and realloc). If you disable this, -you can define the functions lodepng_free, lodepng_malloc and lodepng_realloc in your -source files with custom allocators.*/ -#ifndef LODEPNG_NO_COMPILE_ALLOCATORS -#define LODEPNG_COMPILE_ALLOCATORS -#endif -/*compile the C++ version (you can disable the C++ wrapper here even when compiling for C++)*/ -#ifdef __cplusplus -#ifndef LODEPNG_NO_COMPILE_CPP -#define LODEPNG_COMPILE_CPP -#endif -#endif - -#ifdef LODEPNG_COMPILE_CPP -#include -#include -#endif /*LODEPNG_COMPILE_CPP*/ - -#ifdef LODEPNG_COMPILE_PNG -/*The PNG color types (also used for raw).*/ -typedef enum LodePNGColorType -{ - LCT_GREY = 0, /*greyscale: 1,2,4,8,16 bit*/ - LCT_RGB = 2, /*RGB: 8,16 bit*/ - LCT_PALETTE = 3, /*palette: 1,2,4,8 bit*/ - LCT_GREY_ALPHA = 4, /*greyscale with alpha: 8,16 bit*/ - LCT_RGBA = 6 /*RGB with alpha: 8,16 bit*/ -} LodePNGColorType; - -#ifdef LODEPNG_COMPILE_DECODER -/* -Converts PNG data in memory to raw pixel data. -out: Output parameter. Pointer to buffer that will contain the raw pixel data. - After decoding, its size is w * h * (bytes per pixel) bytes larger than - initially. Bytes per pixel depends on colortype and bitdepth. - Must be freed after usage with free(*out). - Note: for 16-bit per channel colors, uses big endian format like PNG does. -w: Output parameter. Pointer to width of pixel data. -h: Output parameter. Pointer to height of pixel data. -in: Memory buffer with the PNG file. -insize: size of the in buffer. -colortype: the desired color type for the raw output image. See explanation on PNG color types. -bitdepth: the desired bit depth for the raw output image. See explanation on PNG color types. -Return value: LodePNG error code (0 means no error). -*/ -unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, - const unsigned char* in, size_t insize, - LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_decode_memory, but always decodes to 32-bit RGBA raw image*/ -unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, - const unsigned char* in, size_t insize); - -/*Same as lodepng_decode_memory, but always decodes to 24-bit RGB raw image*/ -unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, - const unsigned char* in, size_t insize); - -#ifdef LODEPNG_COMPILE_DISK -/* -Load PNG from disk, from file with given name. -Same as the other decode functions, but instead takes a filename as input. -*/ -unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, - const char* filename, - LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_decode_file, but always decodes to 32-bit RGBA raw image.*/ -unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, - const char* filename); - -/*Same as lodepng_decode_file, but always decodes to 24-bit RGB raw image.*/ -unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, - const char* filename); -#endif /*LODEPNG_COMPILE_DISK*/ -#endif /*LODEPNG_COMPILE_DECODER*/ - - -#ifdef LODEPNG_COMPILE_ENCODER -/* -Converts raw pixel data into a PNG image in memory. The colortype and bitdepth - of the output PNG image cannot be chosen, they are automatically determined - by the colortype, bitdepth and content of the input pixel data. - Note: for 16-bit per channel colors, needs big endian format like PNG does. -out: Output parameter. Pointer to buffer that will contain the PNG image data. - Must be freed after usage with free(*out). -outsize: Output parameter. Pointer to the size in bytes of the out buffer. -image: The raw pixel data to encode. The size of this buffer should be - w * h * (bytes per pixel), bytes per pixel depends on colortype and bitdepth. -w: width of the raw pixel data in pixels. -h: height of the raw pixel data in pixels. -colortype: the color type of the raw input image. See explanation on PNG color types. -bitdepth: the bit depth of the raw input image. See explanation on PNG color types. -Return value: LodePNG error code (0 means no error). -*/ -unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, - const unsigned char* image, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_encode_memory, but always encodes from 32-bit RGBA raw image.*/ -unsigned lodepng_encode32(unsigned char** out, size_t* outsize, - const unsigned char* image, unsigned w, unsigned h); - -/*Same as lodepng_encode_memory, but always encodes from 24-bit RGB raw image.*/ -unsigned lodepng_encode24(unsigned char** out, size_t* outsize, - const unsigned char* image, unsigned w, unsigned h); - -#ifdef LODEPNG_COMPILE_DISK -/* -Converts raw pixel data into a PNG file on disk. -Same as the other encode functions, but instead takes a filename as output. -NOTE: This overwrites existing files without warning! -*/ -unsigned lodepng_encode_file(const char* filename, - const unsigned char* image, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_encode_file, but always encodes from 32-bit RGBA raw image.*/ -unsigned lodepng_encode32_file(const char* filename, - const unsigned char* image, unsigned w, unsigned h); - -/*Same as lodepng_encode_file, but always encodes from 24-bit RGB raw image.*/ -unsigned lodepng_encode24_file(const char* filename, - const unsigned char* image, unsigned w, unsigned h); -#endif /*LODEPNG_COMPILE_DISK*/ -#endif /*LODEPNG_COMPILE_ENCODER*/ - - -#ifdef LODEPNG_COMPILE_CPP -namespace lodepng -{ -#ifdef LODEPNG_COMPILE_DECODER - /*Same as lodepng_decode_memory, but decodes to an std::vector. The colortype - is the format to output the pixels to. Default is RGBA 8-bit per channel.*/ - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - const unsigned char* in, size_t insize, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - const std::vector& in, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); -#ifdef LODEPNG_COMPILE_DISK - /* - Converts PNG file from disk to raw pixel data in memory. - Same as the other decode functions, but instead takes a filename as input. - */ - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - const std::string& filename, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_DECODER */ - -#ifdef LODEPNG_COMPILE_ENCODER - /*Same as lodepng_encode_memory, but encodes to an std::vector. colortype - is that of the raw input data. The output PNG color type will be auto chosen.*/ - unsigned encode(std::vector& out, - const unsigned char* in, unsigned w, unsigned h, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); - unsigned encode(std::vector& out, - const std::vector& in, unsigned w, unsigned h, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); -#ifdef LODEPNG_COMPILE_DISK - /* - Converts 32-bit RGBA raw pixel data into a PNG file on disk. - Same as the other encode functions, but instead takes a filename as output. - NOTE: This overwrites existing files without warning! - */ - unsigned encode(const std::string& filename, - const unsigned char* in, unsigned w, unsigned h, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); - unsigned encode(const std::string& filename, - const std::vector& in, unsigned w, unsigned h, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_ENCODER */ -} /* namespace lodepng */ -#endif /*LODEPNG_COMPILE_CPP*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ERROR_TEXT -/*Returns an English description of the numerical error code.*/ -const char* lodepng_error_text(unsigned code); -#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ - -#ifdef LODEPNG_COMPILE_DECODER -/*Settings for zlib decompression*/ -typedef struct LodePNGDecompressSettings LodePNGDecompressSettings; -struct LodePNGDecompressSettings -{ - unsigned ignore_adler32; /*if 1, continue and don't give an error message if the Adler32 checksum is corrupted*/ - - /*use custom zlib decoder instead of built in one (default: null)*/ - unsigned(*custom_zlib)(unsigned char**, size_t*, - const unsigned char*, size_t, - const LodePNGDecompressSettings*); - /*use custom deflate decoder instead of built in one (default: null) - if custom_zlib is used, custom_deflate is ignored since only the built in - zlib function will call custom_deflate*/ - unsigned(*custom_inflate)(unsigned char**, size_t*, - const unsigned char*, size_t, - const LodePNGDecompressSettings*); - - const void* custom_context; /*optional custom settings for custom functions*/ -}; - -extern const LodePNGDecompressSettings lodepng_default_decompress_settings; -void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER -/* -Settings for zlib compression. Tweaking these settings tweaks the balance -between speed and compression ratio. -*/ -typedef struct LodePNGCompressSettings LodePNGCompressSettings; -struct LodePNGCompressSettings /*deflate = compress*/ -{ - /*LZ77 related settings*/ - unsigned btype; /*the block type for LZ (0, 1, 2 or 3, see zlib standard). Should be 2 for proper compression.*/ - unsigned use_lz77; /*whether or not to use LZ77. Should be 1 for proper compression.*/ - unsigned windowsize; /*must be a power of two <= 32768. higher compresses more but is slower. Default value: 2048.*/ - unsigned minmatch; /*mininum lz77 length. 3 is normally best, 6 can be better for some PNGs. Default: 0*/ - unsigned nicematch; /*stop searching if >= this length found. Set to 258 for best compression. Default: 128*/ - unsigned lazymatching; /*use lazy matching: better compression but a bit slower. Default: true*/ - - /*use custom zlib encoder instead of built in one (default: null)*/ - unsigned(*custom_zlib)(unsigned char**, size_t*, - const unsigned char*, size_t, - const LodePNGCompressSettings*); - /*use custom deflate encoder instead of built in one (default: null) - if custom_zlib is used, custom_deflate is ignored since only the built in - zlib function will call custom_deflate*/ - unsigned(*custom_deflate)(unsigned char**, size_t*, - const unsigned char*, size_t, - const LodePNGCompressSettings*); - - const void* custom_context; /*optional custom settings for custom functions*/ -}; - -extern const LodePNGCompressSettings lodepng_default_compress_settings; -void lodepng_compress_settings_init(LodePNGCompressSettings* settings); -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_PNG -/* -Color mode of an image. Contains all information required to decode the pixel -bits to RGBA colors. This information is the same as used in the PNG file -format, and is used both for PNG and raw image data in LodePNG. -*/ -typedef struct LodePNGColorMode -{ - /*header (IHDR)*/ - LodePNGColorType colortype; /*color type, see PNG standard or documentation further in this header file*/ - unsigned bitdepth; /*bits per sample, see PNG standard or documentation further in this header file*/ - - /* - palette (PLTE and tRNS) - - Dynamically allocated with the colors of the palette, including alpha. - When encoding a PNG, to store your colors in the palette of the LodePNGColorMode, first use - lodepng_palette_clear, then for each color use lodepng_palette_add. - If you encode an image without alpha with palette, don't forget to put value 255 in each A byte of the palette. - - When decoding, by default you can ignore this palette, since LodePNG already - fills the palette colors in the pixels of the raw RGBA output. - - The palette is only supported for color type 3. - */ - unsigned char* palette; /*palette in RGBARGBA... order. When allocated, must be either 0, or have size 1024*/ - size_t palettesize; /*palette size in number of colors (amount of bytes is 4 * palettesize)*/ - - /* - transparent color key (tRNS) - - This color uses the same bit depth as the bitdepth value in this struct, which can be 1-bit to 16-bit. - For greyscale PNGs, r, g and b will all 3 be set to the same. - - When decoding, by default you can ignore this information, since LodePNG sets - pixels with this key to transparent already in the raw RGBA output. - - The color key is only supported for color types 0 and 2. - */ - unsigned key_defined; /*is a transparent color key given? 0 = false, 1 = true*/ - unsigned key_r; /*red/greyscale component of color key*/ - unsigned key_g; /*green component of color key*/ - unsigned key_b; /*blue component of color key*/ -} LodePNGColorMode; - -/*init, cleanup and copy functions to use with this struct*/ -void lodepng_color_mode_init(LodePNGColorMode* info); -void lodepng_color_mode_cleanup(LodePNGColorMode* info); -/*return value is error code (0 means no error)*/ -unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source); - -void lodepng_palette_clear(LodePNGColorMode* info); -/*add 1 color to the palette*/ -unsigned lodepng_palette_add(LodePNGColorMode* info, - unsigned char r, unsigned char g, unsigned char b, unsigned char a); - -/*get the total amount of bits per pixel, based on colortype and bitdepth in the struct*/ -unsigned lodepng_get_bpp(const LodePNGColorMode* info); -/*get the amount of color channels used, based on colortype in the struct. -If a palette is used, it counts as 1 channel.*/ -unsigned lodepng_get_channels(const LodePNGColorMode* info); -/*is it a greyscale type? (only colortype 0 or 4)*/ -unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info); -/*has it got an alpha channel? (only colortype 2 or 6)*/ -unsigned lodepng_is_alpha_type(const LodePNGColorMode* info); -/*has it got a palette? (only colortype 3)*/ -unsigned lodepng_is_palette_type(const LodePNGColorMode* info); -/*only returns true if there is a palette and there is a value in the palette with alpha < 255. -Loops through the palette to check this.*/ -unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info); -/* -Check if the given color info indicates the possibility of having non-opaque pixels in the PNG image. -Returns true if the image can have translucent or invisible pixels (it still be opaque if it doesn't use such pixels). -Returns false if the image can only have opaque pixels. -In detail, it returns true only if it's a color type with alpha, or has a palette with non-opaque values, -or if "key_defined" is true. -*/ -unsigned lodepng_can_have_alpha(const LodePNGColorMode* info); -/*Returns the byte size of a raw image buffer with given width, height and color mode*/ -size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color); - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -/*The information of a Time chunk in PNG.*/ -typedef struct LodePNGTime -{ - unsigned year; /*2 bytes used (0-65535)*/ - unsigned month; /*1-12*/ - unsigned day; /*1-31*/ - unsigned hour; /*0-23*/ - unsigned minute; /*0-59*/ - unsigned second; /*0-60 (to allow for leap seconds)*/ -} LodePNGTime; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -/*Information about the PNG image, except pixels, width and height.*/ -typedef struct LodePNGInfo -{ - /*header (IHDR), palette (PLTE) and transparency (tRNS) chunks*/ - unsigned compression_method;/*compression method of the original file. Always 0.*/ - unsigned filter_method; /*filter method of the original file*/ - unsigned interlace_method; /*interlace method of the original file*/ - LodePNGColorMode color; /*color type and bits, palette and transparency of the PNG file*/ - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /* - suggested background color chunk (bKGD) - This color uses the same color mode as the PNG (except alpha channel), which can be 1-bit to 16-bit. - - For greyscale PNGs, r, g and b will all 3 be set to the same. When encoding - the encoder writes the red one. For palette PNGs: When decoding, the RGB value - will be stored, not a palette index. But when encoding, specify the index of - the palette in background_r, the other two are then ignored. - - The decoder does not use this background color to edit the color of pixels. - */ - unsigned background_defined; /*is a suggested background color given?*/ - unsigned background_r; /*red component of suggested background color*/ - unsigned background_g; /*green component of suggested background color*/ - unsigned background_b; /*blue component of suggested background color*/ - - /* - non-international text chunks (tEXt and zTXt) - - The char** arrays each contain num strings. The actual messages are in - text_strings, while text_keys are keywords that give a short description what - the actual text represents, e.g. Title, Author, Description, or anything else. - - A keyword is minimum 1 character and maximum 79 characters long. It's - discouraged to use a single line length longer than 79 characters for texts. - - Don't allocate these text buffers yourself. Use the init/cleanup functions - correctly and use lodepng_add_text and lodepng_clear_text. - */ - size_t text_num; /*the amount of texts in these char** buffers (there may be more texts in itext)*/ - char** text_keys; /*the keyword of a text chunk (e.g. "Comment")*/ - char** text_strings; /*the actual text*/ - - /* - international text chunks (iTXt) - Similar to the non-international text chunks, but with additional strings - "langtags" and "transkeys". - */ - size_t itext_num; /*the amount of international texts in this PNG*/ - char** itext_keys; /*the English keyword of the text chunk (e.g. "Comment")*/ - char** itext_langtags; /*language tag for this text's language, ISO/IEC 646 string, e.g. ISO 639 language tag*/ - char** itext_transkeys; /*keyword translated to the international language - UTF-8 string*/ - char** itext_strings; /*the actual international text - UTF-8 string*/ - - /*time chunk (tIME)*/ - unsigned time_defined; /*set to 1 to make the encoder generate a tIME chunk*/ - LodePNGTime time; - - /*phys chunk (pHYs)*/ - unsigned phys_defined; /*if 0, there is no pHYs chunk and the values below are undefined, if 1 else there is one*/ - unsigned phys_x; /*pixels per unit in x direction*/ - unsigned phys_y; /*pixels per unit in y direction*/ - unsigned phys_unit; /*may be 0 (unknown unit) or 1 (metre)*/ - - /* - unknown chunks - There are 3 buffers, one for each position in the PNG where unknown chunks can appear - each buffer contains all unknown chunks for that position consecutively - The 3 buffers are the unknown chunks between certain critical chunks: - 0: IHDR-PLTE, 1: PLTE-IDAT, 2: IDAT-IEND - Do not allocate or traverse this data yourself. Use the chunk traversing functions declared - later, such as lodepng_chunk_next and lodepng_chunk_append, to read/write this struct. - */ - unsigned char* unknown_chunks_data[3]; - size_t unknown_chunks_size[3]; /*size in bytes of the unknown chunks, given for protection*/ -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} LodePNGInfo; - -/*init, cleanup and copy functions to use with this struct*/ -void lodepng_info_init(LodePNGInfo* info); -void lodepng_info_cleanup(LodePNGInfo* info); -/*return value is error code (0 means no error)*/ -unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source); - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -void lodepng_clear_text(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/ -unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str); /*push back both texts at once*/ - -void lodepng_clear_itext(LodePNGInfo* info); /*use this to clear the itexts again after you filled them in*/ -unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, - const char* transkey, const char* str); /*push back the 4 texts of 1 chunk at once*/ -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -/* -Converts raw buffer from one color type to another color type, based on -LodePNGColorMode structs to describe the input and output color type. -See the reference manual at the end of this header file to see which color conversions are supported. -return value = LodePNG error code (0 if all went ok, an error if the conversion isn't supported) -The out buffer must have size (w * h * bpp + 7) / 8, where bpp is the bits per pixel -of the output color type (lodepng_get_bpp). -For < 8 bpp images, there should not be padding bits at the end of scanlines. -For 16-bit per channel colors, uses big endian format like PNG does. -Return value is LodePNG error code -*/ -unsigned lodepng_convert(unsigned char* out, const unsigned char* in, - const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in, - unsigned w, unsigned h); - -#ifdef LODEPNG_COMPILE_DECODER -/* -Settings for the decoder. This contains settings for the PNG and the Zlib -decoder, but not the Info settings from the Info structs. -*/ -typedef struct LodePNGDecoderSettings -{ - LodePNGDecompressSettings zlibsettings; /*in here is the setting to ignore Adler32 checksums*/ - - unsigned ignore_crc; /*ignore CRC checksums*/ - - unsigned color_convert; /*whether to convert the PNG to the color type you want. Default: yes*/ - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - unsigned read_text_chunks; /*if false but remember_unknown_chunks is true, they're stored in the unknown chunks*/ - /*store all bytes from unknown chunks in the LodePNGInfo (off by default, useful for a png editor)*/ - unsigned remember_unknown_chunks; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} LodePNGDecoderSettings; - -void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER -/*automatically use color type with less bits per pixel if losslessly possible. Default: AUTO*/ -typedef enum LodePNGFilterStrategy -{ - /*every filter at zero*/ - LFS_ZERO, - /*Use filter that gives minimum sum, as described in the official PNG filter heuristic.*/ - LFS_MINSUM, - /*Use the filter type that gives smallest Shannon entropy for this scanline. Depending - on the image, this is better or worse than minsum.*/ - LFS_ENTROPY, - /* - Brute-force-search PNG filters by compressing each filter for each scanline. - Experimental, very slow, and only rarely gives better compression than MINSUM. - */ - LFS_BRUTE_FORCE, - /*use predefined_filters buffer: you specify the filter type for each scanline*/ - LFS_PREDEFINED -} LodePNGFilterStrategy; - -/*Gives characteristics about the colors of the image, which helps decide which color model to use for encoding. -Used internally by default if "auto_convert" is enabled. Public because it's useful for custom algorithms.*/ -typedef struct LodePNGColorProfile -{ - unsigned colored; /*not greyscale*/ - unsigned key; /*image is not opaque and color key is possible instead of full alpha*/ - unsigned short key_r; /*key values, always as 16-bit, in 8-bit case the byte is duplicated, e.g. 65535 means 255*/ - unsigned short key_g; - unsigned short key_b; - unsigned alpha; /*image is not opaque and alpha channel or alpha palette required*/ - unsigned numcolors; /*amount of colors, up to 257. Not valid if bits == 16.*/ - unsigned char palette[1024]; /*Remembers up to the first 256 RGBA colors, in no particular order*/ - unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for greyscale only. 16 if 16-bit per channel required.*/ -} LodePNGColorProfile; - -void lodepng_color_profile_init(LodePNGColorProfile* profile); - -/*Get a LodePNGColorProfile of the image.*/ -unsigned lodepng_get_color_profile(LodePNGColorProfile* profile, - const unsigned char* image, unsigned w, unsigned h, - const LodePNGColorMode* mode_in); -/*The function LodePNG uses internally to decide the PNG color with auto_convert. -Chooses an optimal color model, e.g. grey if only grey pixels, palette if < 256 colors, ...*/ -unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out, - const unsigned char* image, unsigned w, unsigned h, - const LodePNGColorMode* mode_in); - -/*Settings for the encoder.*/ -typedef struct LodePNGEncoderSettings -{ - LodePNGCompressSettings zlibsettings; /*settings for the zlib encoder, such as window size, ...*/ - - unsigned auto_convert; /*automatically choose output PNG color type. Default: true*/ - - /*If true, follows the official PNG heuristic: if the PNG uses a palette or lower than - 8 bit depth, set all filters to zero. Otherwise use the filter_strategy. Note that to - completely follow the official PNG heuristic, filter_palette_zero must be true and - filter_strategy must be LFS_MINSUM*/ - unsigned filter_palette_zero; - /*Which filter strategy to use when not using zeroes due to filter_palette_zero. - Set filter_palette_zero to 0 to ensure always using your chosen strategy. Default: LFS_MINSUM*/ - LodePNGFilterStrategy filter_strategy; - /*used if filter_strategy is LFS_PREDEFINED. In that case, this must point to a buffer with - the same length as the amount of scanlines in the image, and each value must <= 5. You - have to cleanup this buffer, LodePNG will never free it. Don't forget that filter_palette_zero - must be set to 0 to ensure this is also used on palette or low bitdepth images.*/ - const unsigned char* predefined_filters; - - /*force creating a PLTE chunk if colortype is 2 or 6 (= a suggested palette). - If colortype is 3, PLTE is _always_ created.*/ - unsigned force_palette; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*add LodePNG identifier and version as a text chunk, for debugging*/ - unsigned add_id; - /*encode text chunks as zTXt chunks instead of tEXt chunks, and use compression in iTXt chunks*/ - unsigned text_compression; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} LodePNGEncoderSettings; - -void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings); -#endif /*LODEPNG_COMPILE_ENCODER*/ - - -#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) -/*The settings, state and information for extended encoding and decoding.*/ -typedef struct LodePNGState -{ -#ifdef LODEPNG_COMPILE_DECODER - LodePNGDecoderSettings decoder; /*the decoding settings*/ -#endif /*LODEPNG_COMPILE_DECODER*/ -#ifdef LODEPNG_COMPILE_ENCODER - LodePNGEncoderSettings encoder; /*the encoding settings*/ -#endif /*LODEPNG_COMPILE_ENCODER*/ - LodePNGColorMode info_raw; /*specifies the format in which you would like to get the raw pixel buffer*/ - LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/ - unsigned error; -#ifdef LODEPNG_COMPILE_CPP - /* For the lodepng::State subclass. */ - virtual ~LodePNGState() {} -#endif -} LodePNGState; - -/*init, cleanup and copy functions to use with this struct*/ -void lodepng_state_init(LodePNGState* state); -void lodepng_state_cleanup(LodePNGState* state); -void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source); -#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */ - -#ifdef LODEPNG_COMPILE_DECODER -/* -Same as lodepng_decode_memory, but uses a LodePNGState to allow custom settings and -getting much more information about the PNG image and color mode. -*/ -unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, - LodePNGState* state, - const unsigned char* in, size_t insize); - -/* -Read the PNG header, but not the actual data. This returns only the information -that is in the header chunk of the PNG, such as width, height and color type. The -information is placed in the info_png field of the LodePNGState. -*/ -unsigned lodepng_inspect(unsigned* w, unsigned* h, - LodePNGState* state, - const unsigned char* in, size_t insize); -#endif /*LODEPNG_COMPILE_DECODER*/ - - -#ifdef LODEPNG_COMPILE_ENCODER -/*This function allocates the out buffer with standard malloc and stores the size in *outsize.*/ -unsigned lodepng_encode(unsigned char** out, size_t* outsize, - const unsigned char* image, unsigned w, unsigned h, - LodePNGState* state); -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/* -The lodepng_chunk functions are normally not needed, except to traverse the -unknown chunks stored in the LodePNGInfo struct, or add new ones to it. -It also allows traversing the chunks of an encoded PNG file yourself. - -PNG standard chunk naming conventions: -First byte: uppercase = critical, lowercase = ancillary -Second byte: uppercase = public, lowercase = private -Third byte: must be uppercase -Fourth byte: uppercase = unsafe to copy, lowercase = safe to copy -*/ - -/* -Gets the length of the data of the chunk. Total chunk length has 12 bytes more. -There must be at least 4 bytes to read from. If the result value is too large, -it may be corrupt data. -*/ -unsigned lodepng_chunk_length(const unsigned char* chunk); - -/*puts the 4-byte type in null terminated string*/ -void lodepng_chunk_type(char type[5], const unsigned char* chunk); - -/*check if the type is the given type*/ -unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type); - -/*0: it's one of the critical chunk types, 1: it's an ancillary chunk (see PNG standard)*/ -unsigned char lodepng_chunk_ancillary(const unsigned char* chunk); - -/*0: public, 1: private (see PNG standard)*/ -unsigned char lodepng_chunk_private(const unsigned char* chunk); - -/*0: the chunk is unsafe to copy, 1: the chunk is safe to copy (see PNG standard)*/ -unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk); - -/*get pointer to the data of the chunk, where the input points to the header of the chunk*/ -unsigned char* lodepng_chunk_data(unsigned char* chunk); -const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk); - -/*returns 0 if the crc is correct, 1 if it's incorrect (0 for OK as usual!)*/ -unsigned lodepng_chunk_check_crc(const unsigned char* chunk); - -/*generates the correct CRC from the data and puts it in the last 4 bytes of the chunk*/ -void lodepng_chunk_generate_crc(unsigned char* chunk); - -/*iterate to next chunks. don't use on IEND chunk, as there is no next chunk then*/ -unsigned char* lodepng_chunk_next(unsigned char* chunk); -const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk); - -/* -Appends chunk to the data in out. The given chunk should already have its chunk header. -The out variable and outlength are updated to reflect the new reallocated buffer. -Returns error code (0 if it went ok) -*/ -unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk); - -/* -Appends new chunk to out. The chunk to append is given by giving its length, type -and data separately. The type is a 4-letter string. -The out variable and outlength are updated to reflect the new reallocated buffer. -Returne error code (0 if it went ok) -*/ -unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length, - const char* type, const unsigned char* data); - - -/*Calculate CRC32 of buffer*/ -unsigned lodepng_crc32(const unsigned char* buf, size_t len); -#endif /*LODEPNG_COMPILE_PNG*/ - - -#ifdef LODEPNG_COMPILE_ZLIB -/* -This zlib part can be used independently to zlib compress and decompress a -buffer. It cannot be used to create gzip files however, and it only supports the -part of zlib that is required for PNG, it does not support dictionaries. -*/ - -#ifdef LODEPNG_COMPILE_DECODER -/*Inflate a buffer. Inflate is the decompression step of deflate. Out buffer must be freed after use.*/ -unsigned lodepng_inflate(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings); - -/* -Decompresses Zlib data. Reallocates the out buffer and appends the data. The -data must be according to the zlib specification. -Either, *out must be NULL and *outsize must be 0, or, *out must be a valid -buffer and *outsize its size in bytes. out must be freed by user after usage. -*/ -unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGDecompressSettings* settings); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER -/* -Compresses data with Zlib. Reallocates the out buffer and appends the data. -Zlib adds a small header and trailer around the deflate data. -The data is output in the format of the zlib specification. -Either, *out must be NULL and *outsize must be 0, or, *out must be a valid -buffer and *outsize its size in bytes. out must be freed by user after usage. -*/ -unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings); - -/* -Find length-limited Huffman code for given frequencies. This function is in the -public interface only for tests, it's used internally by lodepng_deflate. -*/ -unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies, - size_t numcodes, unsigned maxbitlen); - -/*Compress a buffer with deflate. See RFC 1951. Out buffer must be freed after use.*/ -unsigned lodepng_deflate(unsigned char** out, size_t* outsize, - const unsigned char* in, size_t insize, - const LodePNGCompressSettings* settings); - -#endif /*LODEPNG_COMPILE_ENCODER*/ -#endif /*LODEPNG_COMPILE_ZLIB*/ - -#ifdef LODEPNG_COMPILE_DISK -/* -Load a file from disk into buffer. The function allocates the out buffer, and -after usage you should free it. -out: output parameter, contains pointer to loaded buffer. -outsize: output parameter, size of the allocated out buffer -filename: the path to the file to load -return value: error code (0 means ok) -*/ -unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename); - -/* -Save a file from buffer to disk. Warning, if it exists, this function overwrites -the file without warning! -buffer: the buffer to write -buffersize: size of the buffer to write -filename: the path to the file to save to -return value: error code (0 means ok) -*/ -unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename); -#endif /*LODEPNG_COMPILE_DISK*/ - -#ifdef LODEPNG_COMPILE_CPP -/* The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers. */ -namespace lodepng -{ -#ifdef LODEPNG_COMPILE_PNG - class State : public LodePNGState - { - public: - State(); - State(const State& other); - virtual ~State(); - State& operator=(const State& other); - }; - -#ifdef LODEPNG_COMPILE_DECODER - /* Same as other lodepng::decode, but using a State for more settings and information. */ - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - State& state, - const unsigned char* in, size_t insize); - unsigned decode(std::vector& out, unsigned& w, unsigned& h, - State& state, - const std::vector& in); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER - /* Same as other lodepng::encode, but using a State for more settings and information. */ - unsigned encode(std::vector& out, - const unsigned char* in, unsigned w, unsigned h, - State& state); - unsigned encode(std::vector& out, - const std::vector& in, unsigned w, unsigned h, - State& state); -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_DISK - /* - Load a file from disk into an std::vector. - return value: error code (0 means ok) - */ - unsigned load_file(std::vector& buffer, const std::string& filename); - - /* - Save the binary data in an std::vector to a file on disk. The file is overwritten - without warning. - */ - unsigned save_file(const std::vector& buffer, const std::string& filename); -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_PNG */ - -#ifdef LODEPNG_COMPILE_ZLIB -#ifdef LODEPNG_COMPILE_DECODER - /* Zlib-decompress an unsigned char buffer */ - unsigned decompress(std::vector& out, const unsigned char* in, size_t insize, - const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings); - - /* Zlib-decompress an std::vector */ - unsigned decompress(std::vector& out, const std::vector& in, - const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings); -#endif /* LODEPNG_COMPILE_DECODER */ - -#ifdef LODEPNG_COMPILE_ENCODER - /* Zlib-compress an unsigned char buffer */ - unsigned compress(std::vector& out, const unsigned char* in, size_t insize, - const LodePNGCompressSettings& settings = lodepng_default_compress_settings); - - /* Zlib-compress an std::vector */ - unsigned compress(std::vector& out, const std::vector& in, - const LodePNGCompressSettings& settings = lodepng_default_compress_settings); -#endif /* LODEPNG_COMPILE_ENCODER */ -#endif /* LODEPNG_COMPILE_ZLIB */ -} /* namespace lodepng */ -#endif /*LODEPNG_COMPILE_CPP*/ - -/* -TODO: -[.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often -[.] check compatibility with various compilers - done but needs to be redone for every newer version -[X] converting color to 16-bit per channel types -[ ] read all public PNG chunk types (but never let the color profile and gamma ones touch RGB values) -[ ] make sure encoder generates no chunks with size > (2^31)-1 -[ ] partial decoding (stream processing) -[X] let the "isFullyOpaque" function check color keys and transparent palettes too -[X] better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and "lldl" -[ ] don't stop decoding on errors like 69, 57, 58 (make warnings) -[ ] make warnings like: oob palette, checksum fail, data after iend, wrong/unknown crit chunk, no null terminator in text, ... -[ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes -[ ] allow user to provide custom color conversion functions, e.g. for premultiplied alpha, padding bits or not, ... -[ ] allow user to give data (void*) to custom allocator -*/ - -#endif /*LODEPNG_H inclusion guard*/ - -/* -LodePNG Documentation ---------------------- - -0. table of contents --------------------- - - 1. about - 1.1. supported features - 1.2. features not supported - 2. C and C++ version - 3. security - 4. decoding - 5. encoding - 6. color conversions - 6.1. PNG color types - 6.2. color conversions - 6.3. padding bits - 6.4. A note about 16-bits per channel and endianness - 7. error values - 8. chunks and PNG editing - 9. compiler support - 10. examples - 10.1. decoder C++ example - 10.2. decoder C example - 11. state settings reference - 12. changes - 13. contact information - - -1. about --------- - -PNG is a file format to store raster images losslessly with good compression, -supporting different color types and alpha channel. - -LodePNG is a PNG codec according to the Portable Network Graphics (PNG) -Specification (Second Edition) - W3C Recommendation 10 November 2003. - -The specifications used are: - -*) Portable Network Graphics (PNG) Specification (Second Edition): - http://www.w3.org/TR/2003/REC-PNG-20031110 -*) RFC 1950 ZLIB Compressed Data Format version 3.3: - http://www.gzip.org/zlib/rfc-zlib.html -*) RFC 1951 DEFLATE Compressed Data Format Specification ver 1.3: - http://www.gzip.org/zlib/rfc-deflate.html - -The most recent version of LodePNG can currently be found at -http://lodev.org/lodepng/ - -LodePNG works both in C (ISO C90) and C++, with a C++ wrapper that adds -extra functionality. - -LodePNG exists out of two files: --lodepng.h: the header file for both C and C++ --lodepng.c(pp): give it the name lodepng.c or lodepng.cpp (or .cc) depending on your usage - -If you want to start using LodePNG right away without reading this doc, get the -examples from the LodePNG website to see how to use it in code, or check the -smaller examples in chapter 13 here. - -LodePNG is simple but only supports the basic requirements. To achieve -simplicity, the following design choices were made: There are no dependencies -on any external library. There are functions to decode and encode a PNG with -a single function call, and extended versions of these functions taking a -LodePNGState struct allowing to specify or get more information. By default -the colors of the raw image are always RGB or RGBA, no matter what color type -the PNG file uses. To read and write files, there are simple functions to -convert the files to/from buffers in memory. - -This all makes LodePNG suitable for loading textures in games, demos and small -programs, ... It's less suitable for full fledged image editors, loading PNGs -over network (it requires all the image data to be available before decoding can -begin), life-critical systems, ... - -1.1. supported features ------------------------ - -The following features are supported by the decoder: - -*) decoding of PNGs with any color type, bit depth and interlace mode, to a 24- or 32-bit color raw image, - or the same color type as the PNG -*) encoding of PNGs, from any raw image to 24- or 32-bit color, or the same color type as the raw image -*) Adam7 interlace and deinterlace for any color type -*) loading the image from harddisk or decoding it from a buffer from other sources than harddisk -*) support for alpha channels, including RGBA color model, translucent palettes and color keying -*) zlib decompression (inflate) -*) zlib compression (deflate) -*) CRC32 and ADLER32 checksums -*) handling of unknown chunks, allowing making a PNG editor that stores custom and unknown chunks. -*) the following chunks are supported (generated/interpreted) by both encoder and decoder: - IHDR: header information - PLTE: color palette - IDAT: pixel data - IEND: the final chunk - tRNS: transparency for palettized images - tEXt: textual information - zTXt: compressed textual information - iTXt: international textual information - bKGD: suggested background color - pHYs: physical dimensions - tIME: modification time - -1.2. features not supported ---------------------------- - -The following features are _not_ supported: - -*) some features needed to make a conformant PNG-Editor might be still missing. -*) partial loading/stream processing. All data must be available and is processed in one call. -*) The following public chunks are not supported but treated as unknown chunks by LodePNG - cHRM, gAMA, iCCP, sRGB, sBIT, hIST, sPLT - Some of these are not supported on purpose: LodePNG wants to provide the RGB values - stored in the pixels, not values modified by system dependent gamma or color models. - - -2. C and C++ version --------------------- - -The C version uses buffers allocated with alloc that you need to free() -yourself. You need to use init and cleanup functions for each struct whenever -using a struct from the C version to avoid exploits and memory leaks. - -The C++ version has extra functions with std::vectors in the interface and the -lodepng::State class which is a LodePNGState with constructor and destructor. - -These files work without modification for both C and C++ compilers because all -the additional C++ code is in "#ifdef __cplusplus" blocks that make C-compilers -ignore it, and the C code is made to compile both with strict ISO C90 and C++. - -To use the C++ version, you need to rename the source file to lodepng.cpp -(instead of lodepng.c), and compile it with a C++ compiler. - -To use the C version, you need to rename the source file to lodepng.c (instead -of lodepng.cpp), and compile it with a C compiler. - - -3. Security ------------ - -Even if carefully designed, it's always possible that LodePNG contains possible -exploits. If you discover one, please let me know, and it will be fixed. - -When using LodePNG, care has to be taken with the C version of LodePNG, as well -as the C-style structs when working with C++. The following conventions are used -for all C-style structs: - --if a struct has a corresponding init function, always call the init function when making a new one --if a struct has a corresponding cleanup function, call it before the struct disappears to avoid memory leaks --if a struct has a corresponding copy function, use the copy function instead of "=". - The destination must also be inited already. - - -4. Decoding ------------ - -Decoding converts a PNG compressed image to a raw pixel buffer. - -Most documentation on using the decoder is at its declarations in the header -above. For C, simple decoding can be done with functions such as -lodepng_decode32, and more advanced decoding can be done with the struct -LodePNGState and lodepng_decode. For C++, all decoding can be done with the -various lodepng::decode functions, and lodepng::State can be used for advanced -features. - -When using the LodePNGState, it uses the following fields for decoding: -*) LodePNGInfo info_png: it stores extra information about the PNG (the input) in here -*) LodePNGColorMode info_raw: here you can say what color mode of the raw image (the output) you want to get -*) LodePNGDecoderSettings decoder: you can specify a few extra settings for the decoder to use - -LodePNGInfo info_png --------------------- - -After decoding, this contains extra information of the PNG image, except the actual -pixels, width and height because these are already gotten directly from the decoder -functions. - -It contains for example the original color type of the PNG image, text comments, -suggested background color, etc... More details about the LodePNGInfo struct are -at its declaration documentation. - -LodePNGColorMode info_raw -------------------------- - -When decoding, here you can specify which color type you want -the resulting raw image to be. If this is different from the colortype of the -PNG, then the decoder will automatically convert the result. This conversion -always works, except if you want it to convert a color PNG to greyscale or to -a palette with missing colors. - -By default, 32-bit color is used for the result. - -LodePNGDecoderSettings decoder ------------------------------- - -The settings can be used to ignore the errors created by invalid CRC and Adler32 -chunks, and to disable the decoding of tEXt chunks. - -There's also a setting color_convert, true by default. If false, no conversion -is done, the resulting data will be as it was in the PNG (after decompression) -and you'll have to puzzle the colors of the pixels together yourself using the -color type information in the LodePNGInfo. - - -5. Encoding ------------ - -Encoding converts a raw pixel buffer to a PNG compressed image. - -Most documentation on using the encoder is at its declarations in the header -above. For C, simple encoding can be done with functions such as -lodepng_encode32, and more advanced decoding can be done with the struct -LodePNGState and lodepng_encode. For C++, all encoding can be done with the -various lodepng::encode functions, and lodepng::State can be used for advanced -features. - -Like the decoder, the encoder can also give errors. However it gives less errors -since the encoder input is trusted, the decoder input (a PNG image that could -be forged by anyone) is not trusted. - -When using the LodePNGState, it uses the following fields for encoding: -*) LodePNGInfo info_png: here you specify how you want the PNG (the output) to be. -*) LodePNGColorMode info_raw: here you say what color type of the raw image (the input) has -*) LodePNGEncoderSettings encoder: you can specify a few settings for the encoder to use - -LodePNGInfo info_png --------------------- - -When encoding, you use this the opposite way as when decoding: for encoding, -you fill in the values you want the PNG to have before encoding. By default it's -not needed to specify a color type for the PNG since it's automatically chosen, -but it's possible to choose it yourself given the right settings. - -The encoder will not always exactly match the LodePNGInfo struct you give, -it tries as close as possible. Some things are ignored by the encoder. The -encoder uses, for example, the following settings from it when applicable: -colortype and bitdepth, text chunks, time chunk, the color key, the palette, the -background color, the interlace method, unknown chunks, ... - -When encoding to a PNG with colortype 3, the encoder will generate a PLTE chunk. -If the palette contains any colors for which the alpha channel is not 255 (so -there are translucent colors in the palette), it'll add a tRNS chunk. - -LodePNGColorMode info_raw -------------------------- - -You specify the color type of the raw image that you give to the input here, -including a possible transparent color key and palette you happen to be using in -your raw image data. - -By default, 32-bit color is assumed, meaning your input has to be in RGBA -format with 4 bytes (unsigned chars) per pixel. - -LodePNGEncoderSettings encoder ------------------------------- - -The following settings are supported (some are in sub-structs): -*) auto_convert: when this option is enabled, the encoder will -automatically choose the smallest possible color mode (including color key) that -can encode the colors of all pixels without information loss. -*) btype: the block type for LZ77. 0 = uncompressed, 1 = fixed huffman tree, - 2 = dynamic huffman tree (best compression). Should be 2 for proper - compression. -*) use_lz77: whether or not to use LZ77 for compressed block types. Should be - true for proper compression. -*) windowsize: the window size used by the LZ77 encoder (1 - 32768). Has value - 2048 by default, but can be set to 32768 for better, but slow, compression. -*) force_palette: if colortype is 2 or 6, you can make the encoder write a PLTE - chunk if force_palette is true. This can used as suggested palette to convert - to by viewers that don't support more than 256 colors (if those still exist) -*) add_id: add text chunk "Encoder: LodePNG " to the image. -*) text_compression: default 1. If 1, it'll store texts as zTXt instead of tEXt chunks. - zTXt chunks use zlib compression on the text. This gives a smaller result on - large texts but a larger result on small texts (such as a single program name). - It's all tEXt or all zTXt though, there's no separate setting per text yet. - - -6. color conversions --------------------- - -An important thing to note about LodePNG, is that the color type of the PNG, and -the color type of the raw image, are completely independent. By default, when -you decode a PNG, you get the result as a raw image in the color type you want, -no matter whether the PNG was encoded with a palette, greyscale or RGBA color. -And if you encode an image, by default LodePNG will automatically choose the PNG -color type that gives good compression based on the values of colors and amount -of colors in the image. It can be configured to let you control it instead as -well, though. - -To be able to do this, LodePNG does conversions from one color mode to another. -It can convert from almost any color type to any other color type, except the -following conversions: RGB to greyscale is not supported, and converting to a -palette when the palette doesn't have a required color is not supported. This is -not supported on purpose: this is information loss which requires a color -reduction algorithm that is beyong the scope of a PNG encoder (yes, RGB to grey -is easy, but there are multiple ways if you want to give some channels more -weight). - -By default, when decoding, you get the raw image in 32-bit RGBA or 24-bit RGB -color, no matter what color type the PNG has. And by default when encoding, -LodePNG automatically picks the best color model for the output PNG, and expects -the input image to be 32-bit RGBA or 24-bit RGB. So, unless you want to control -the color format of the images yourself, you can skip this chapter. - -6.1. PNG color types --------------------- - -A PNG image can have many color types, ranging from 1-bit color to 64-bit color, -as well as palettized color modes. After the zlib decompression and unfiltering -in the PNG image is done, the raw pixel data will have that color type and thus -a certain amount of bits per pixel. If you want the output raw image after -decoding to have another color type, a conversion is done by LodePNG. - -The PNG specification gives the following color types: - -0: greyscale, bit depths 1, 2, 4, 8, 16 -2: RGB, bit depths 8 and 16 -3: palette, bit depths 1, 2, 4 and 8 -4: greyscale with alpha, bit depths 8 and 16 -6: RGBA, bit depths 8 and 16 - -Bit depth is the amount of bits per pixel per color channel. So the total amount -of bits per pixel is: amount of channels * bitdepth. - -6.2. color conversions ----------------------- - -As explained in the sections about the encoder and decoder, you can specify -color types and bit depths in info_png and info_raw to change the default -behaviour. - -If, when decoding, you want the raw image to be something else than the default, -you need to set the color type and bit depth you want in the LodePNGColorMode, -or the parameters colortype and bitdepth of the simple decoding function. - -If, when encoding, you use another color type than the default in the raw input -image, you need to specify its color type and bit depth in the LodePNGColorMode -of the raw image, or use the parameters colortype and bitdepth of the simple -encoding function. - -If, when encoding, you don't want LodePNG to choose the output PNG color type -but control it yourself, you need to set auto_convert in the encoder settings -to false, and specify the color type you want in the LodePNGInfo of the -encoder (including palette: it can generate a palette if auto_convert is true, -otherwise not). - -If the input and output color type differ (whether user chosen or auto chosen), -LodePNG will do a color conversion, which follows the rules below, and may -sometimes result in an error. - -To avoid some confusion: --the decoder converts from PNG to raw image --the encoder converts from raw image to PNG --the colortype and bitdepth in LodePNGColorMode info_raw, are those of the raw image --the colortype and bitdepth in the color field of LodePNGInfo info_png, are those of the PNG --when encoding, the color type in LodePNGInfo is ignored if auto_convert - is enabled, it is automatically generated instead --when decoding, the color type in LodePNGInfo is set by the decoder to that of the original - PNG image, but it can be ignored since the raw image has the color type you requested instead --if the color type of the LodePNGColorMode and PNG image aren't the same, a conversion - between the color types is done if the color types are supported. If it is not - supported, an error is returned. If the types are the same, no conversion is done. --even though some conversions aren't supported, LodePNG supports loading PNGs from any - colortype and saving PNGs to any colortype, sometimes it just requires preparing - the raw image correctly before encoding. --both encoder and decoder use the same color converter. - -Non supported color conversions: --color to greyscale: no error is thrown, but the result will look ugly because -only the red channel is taken --anything to palette when that palette does not have that color in it: in this -case an error is thrown - -Supported color conversions: --anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA --any grey or grey+alpha, to grey or grey+alpha --anything to a palette, as long as the palette has the requested colors in it --removing alpha channel --higher to smaller bitdepth, and vice versa - -If you want no color conversion to be done (e.g. for speed or control): --In the encoder, you can make it save a PNG with any color type by giving the -raw color mode and LodePNGInfo the same color mode, and setting auto_convert to -false. --In the decoder, you can make it store the pixel data in the same color type -as the PNG has, by setting the color_convert setting to false. Settings in -info_raw are then ignored. - -The function lodepng_convert does the color conversion. It is available in the -interface but normally isn't needed since the encoder and decoder already call -it. - -6.3. padding bits ------------------ - -In the PNG file format, if a less than 8-bit per pixel color type is used and the scanlines -have a bit amount that isn't a multiple of 8, then padding bits are used so that each -scanline starts at a fresh byte. But that is NOT true for the LodePNG raw input and output. -The raw input image you give to the encoder, and the raw output image you get from the decoder -will NOT have these padding bits, e.g. in the case of a 1-bit image with a width -of 7 pixels, the first pixel of the second scanline will the the 8th bit of the first byte, -not the first bit of a new byte. - -6.4. A note about 16-bits per channel and endianness ----------------------------------------------------- - -LodePNG uses unsigned char arrays for 16-bit per channel colors too, just like -for any other color format. The 16-bit values are stored in big endian (most -significant byte first) in these arrays. This is the opposite order of the -little endian used by x86 CPU's. - -LodePNG always uses big endian because the PNG file format does so internally. -Conversions to other formats than PNG uses internally are not supported by -LodePNG on purpose, there are myriads of formats, including endianness of 16-bit -colors, the order in which you store R, G, B and A, and so on. Supporting and -converting to/from all that is outside the scope of LodePNG. - -This may mean that, depending on your use case, you may want to convert the big -endian output of LodePNG to little endian with a for loop. This is certainly not -always needed, many applications and libraries support big endian 16-bit colors -anyway, but it means you cannot simply cast the unsigned char* buffer to an -unsigned short* buffer on x86 CPUs. - - -7. error values ---------------- - -All functions in LodePNG that return an error code, return 0 if everything went -OK, or a non-zero code if there was an error. - -The meaning of the LodePNG error values can be retrieved with the function -lodepng_error_text: given the numerical error code, it returns a description -of the error in English as a string. - -Check the implementation of lodepng_error_text to see the meaning of each code. - - -8. chunks and PNG editing -------------------------- - -If you want to add extra chunks to a PNG you encode, or use LodePNG for a PNG -editor that should follow the rules about handling of unknown chunks, or if your -program is able to read other types of chunks than the ones handled by LodePNG, -then that's possible with the chunk functions of LodePNG. - -A PNG chunk has the following layout: - -4 bytes length -4 bytes type name -length bytes data -4 bytes CRC - -8.1. iterating through chunks ------------------------------ - -If you have a buffer containing the PNG image data, then the first chunk (the -IHDR chunk) starts at byte number 8 of that buffer. The first 8 bytes are the -signature of the PNG and are not part of a chunk. But if you start at byte 8 -then you have a chunk, and can check the following things of it. - -NOTE: none of these functions check for memory buffer boundaries. To avoid -exploits, always make sure the buffer contains all the data of the chunks. -When using lodepng_chunk_next, make sure the returned value is within the -allocated memory. - -unsigned lodepng_chunk_length(const unsigned char* chunk): - -Get the length of the chunk's data. The total chunk length is this length + 12. - -void lodepng_chunk_type(char type[5], const unsigned char* chunk): -unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type): - -Get the type of the chunk or compare if it's a certain type - -unsigned char lodepng_chunk_critical(const unsigned char* chunk): -unsigned char lodepng_chunk_private(const unsigned char* chunk): -unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk): - -Check if the chunk is critical in the PNG standard (only IHDR, PLTE, IDAT and IEND are). -Check if the chunk is private (public chunks are part of the standard, private ones not). -Check if the chunk is safe to copy. If it's not, then, when modifying data in a critical -chunk, unsafe to copy chunks of the old image may NOT be saved in the new one if your -program doesn't handle that type of unknown chunk. - -unsigned char* lodepng_chunk_data(unsigned char* chunk): -const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk): - -Get a pointer to the start of the data of the chunk. - -unsigned lodepng_chunk_check_crc(const unsigned char* chunk): -void lodepng_chunk_generate_crc(unsigned char* chunk): - -Check if the crc is correct or generate a correct one. - -unsigned char* lodepng_chunk_next(unsigned char* chunk): -const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk): - -Iterate to the next chunk. This works if you have a buffer with consecutive chunks. Note that these -functions do no boundary checking of the allocated data whatsoever, so make sure there is enough -data available in the buffer to be able to go to the next chunk. - -unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk): -unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length, - const char* type, const unsigned char* data): - -These functions are used to create new chunks that are appended to the data in *out that has -length *outlength. The append function appends an existing chunk to the new data. The create -function creates a new chunk with the given parameters and appends it. Type is the 4-letter -name of the chunk. - -8.2. chunks in info_png ------------------------ - -The LodePNGInfo struct contains fields with the unknown chunk in it. It has 3 -buffers (each with size) to contain 3 types of unknown chunks: -the ones that come before the PLTE chunk, the ones that come between the PLTE -and the IDAT chunks, and the ones that come after the IDAT chunks. -It's necessary to make the distionction between these 3 cases because the PNG -standard forces to keep the ordering of unknown chunks compared to the critical -chunks, but does not force any other ordering rules. - -info_png.unknown_chunks_data[0] is the chunks before PLTE -info_png.unknown_chunks_data[1] is the chunks after PLTE, before IDAT -info_png.unknown_chunks_data[2] is the chunks after IDAT - -The chunks in these 3 buffers can be iterated through and read by using the same -way described in the previous subchapter. - -When using the decoder to decode a PNG, you can make it store all unknown chunks -if you set the option settings.remember_unknown_chunks to 1. By default, this -option is off (0). - -The encoder will always encode unknown chunks that are stored in the info_png. -If you need it to add a particular chunk that isn't known by LodePNG, you can -use lodepng_chunk_append or lodepng_chunk_create to the chunk data in -info_png.unknown_chunks_data[x]. - -Chunks that are known by LodePNG should not be added in that way. E.g. to make -LodePNG add a bKGD chunk, set background_defined to true and add the correct -parameters there instead. - - -9. compiler support -------------------- - -No libraries other than the current standard C library are needed to compile -LodePNG. For the C++ version, only the standard C++ library is needed on top. -Add the files lodepng.c(pp) and lodepng.h to your project, include -lodepng.h where needed, and your program can read/write PNG files. - -It is compatible with C90 and up, and C++03 and up. - -If performance is important, use optimization when compiling! For both the -encoder and decoder, this makes a large difference. - -Make sure that LodePNG is compiled with the same compiler of the same version -and with the same settings as the rest of the program, or the interfaces with -std::vectors and std::strings in C++ can be incompatible. - -CHAR_BITS must be 8 or higher, because LodePNG uses unsigned chars for octets. - -*) gcc and g++ - -LodePNG is developed in gcc so this compiler is natively supported. It gives no -warnings with compiler options "-Wall -Wextra -pedantic -ansi", with gcc and g++ -version 4.7.1 on Linux, 32-bit and 64-bit. - -*) Clang - -Fully supported and warning-free. - -*) Mingw - -The Mingw compiler (a port of gcc for Windows) should be fully supported by -LodePNG. - -*) Visual Studio and Visual C++ Express Edition - -LodePNG should be warning-free with warning level W4. Two warnings were disabled -with pragmas though: warning 4244 about implicit conversions, and warning 4996 -where it wants to use a non-standard function fopen_s instead of the standard C -fopen. - -Visual Studio may want "stdafx.h" files to be included in each source file and -give an error "unexpected end of file while looking for precompiled header". -This is not standard C++ and will not be added to the stock LodePNG. You can -disable it for lodepng.cpp only by right clicking it, Properties, C/C++, -Precompiled Headers, and set it to Not Using Precompiled Headers there. - -NOTE: Modern versions of VS should be fully supported, but old versions, e.g. -VS6, are not guaranteed to work. - -*) Compilers on Macintosh - -LodePNG has been reported to work both with gcc and LLVM for Macintosh, both for -C and C++. - -*) Other Compilers - -If you encounter problems on any compilers, feel free to let me know and I may -try to fix it if the compiler is modern and standards complient. - - -10. examples ------------- - -This decoder example shows the most basic usage of LodePNG. More complex -examples can be found on the LodePNG website. - -10.1. decoder C++ example -------------------------- - -#include "lodepng.h" -#include - -int main(int argc, char *argv[]) -{ - const char* filename = argc > 1 ? argv[1] : "test.png"; - - //load and decode - std::vector image; - unsigned width, height; - unsigned error = lodepng::decode(image, width, height, filename); - - //if there's an error, display it - if(error) std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl; - - //the pixels are now in the vector "image", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ... -} - -10.2. decoder C example ------------------------ - -#include "lodepng.h" - -int main(int argc, char *argv[]) -{ - unsigned error; - unsigned char* image; - size_t width, height; - const char* filename = argc > 1 ? argv[1] : "test.png"; - - error = lodepng_decode32_file(&image, &width, &height, filename); - - if(error) printf("decoder error %u: %s\n", error, lodepng_error_text(error)); - - / * use image here * / - - free(image); - return 0; -} - -11. state settings reference ----------------------------- - -A quick reference of some settings to set on the LodePNGState - -For decoding: - -state.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums -state.decoder.zlibsettings.custom_...: use custom inflate function -state.decoder.ignore_crc: ignore CRC checksums -state.decoder.color_convert: convert internal PNG color to chosen one -state.decoder.read_text_chunks: whether to read in text metadata chunks -state.decoder.remember_unknown_chunks: whether to read in unknown chunks -state.info_raw.colortype: desired color type for decoded image -state.info_raw.bitdepth: desired bit depth for decoded image -state.info_raw....: more color settings, see struct LodePNGColorMode -state.info_png....: no settings for decoder but ouput, see struct LodePNGInfo - -For encoding: - -state.encoder.zlibsettings.btype: disable compression by setting it to 0 -state.encoder.zlibsettings.use_lz77: use LZ77 in compression -state.encoder.zlibsettings.windowsize: tweak LZ77 windowsize -state.encoder.zlibsettings.minmatch: tweak min LZ77 length to match -state.encoder.zlibsettings.nicematch: tweak LZ77 match where to stop searching -state.encoder.zlibsettings.lazymatching: try one more LZ77 matching -state.encoder.zlibsettings.custom_...: use custom deflate function -state.encoder.auto_convert: choose optimal PNG color type, if 0 uses info_png -state.encoder.filter_palette_zero: PNG filter strategy for palette -state.encoder.filter_strategy: PNG filter strategy to encode with -state.encoder.force_palette: add palette even if not encoding to one -state.encoder.add_id: add LodePNG identifier and version as a text chunk -state.encoder.text_compression: use compressed text chunks for metadata -state.info_raw.colortype: color type of raw input image you provide -state.info_raw.bitdepth: bit depth of raw input image you provide -state.info_raw: more color settings, see struct LodePNGColorMode -state.info_png.color.colortype: desired color type if auto_convert is false -state.info_png.color.bitdepth: desired bit depth if auto_convert is false -state.info_png.color....: more color settings, see struct LodePNGColorMode -state.info_png....: more PNG related settings, see struct LodePNGInfo - - -12. changes ------------ - -The version number of LodePNG is the date of the change given in the format -yyyymmdd. - -Some changes aren't backwards compatible. Those are indicated with a (!) -symbol. - -*) 27 nov 2016: grey+alpha auto color model detection bugfix -*) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort). -*) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within - the limits of pure C90). -*) 08 dec 2015: Made load_file function return error if file can't be opened. -*) 24 okt 2015: Bugfix with decoding to palette output. -*) 18 apr 2015: Boundary PM instead of just package-merge for faster encoding. -*) 23 aug 2014: Reduced needless memory usage of decoder. -*) 28 jun 2014: Removed fix_png setting, always support palette OOB for - simplicity. Made ColorProfile public. -*) 09 jun 2014: Faster encoder by fixing hash bug and more zeros optimization. -*) 22 dec 2013: Power of two windowsize required for optimization. -*) 15 apr 2013: Fixed bug with LAC_ALPHA and color key. -*) 25 mar 2013: Added an optional feature to ignore some PNG errors (fix_png). -*) 11 mar 2013 (!): Bugfix with custom free. Changed from "my" to "lodepng_" - prefix for the custom allocators and made it possible with a new #define to - use custom ones in your project without needing to change lodepng's code. -*) 28 jan 2013: Bugfix with color key. -*) 27 okt 2012: Tweaks in text chunk keyword length error handling. -*) 8 okt 2012 (!): Added new filter strategy (entropy) and new auto color mode. - (no palette). Better deflate tree encoding. New compression tweak settings. - Faster color conversions while decoding. Some internal cleanups. -*) 23 sep 2012: Reduced warnings in Visual Studio a little bit. -*) 1 sep 2012 (!): Removed #define's for giving custom (de)compression functions - and made it work with function pointers instead. -*) 23 jun 2012: Added more filter strategies. Made it easier to use custom alloc - and free functions and toggle #defines from compiler flags. Small fixes. -*) 6 may 2012 (!): Made plugging in custom zlib/deflate functions more flexible. -*) 22 apr 2012 (!): Made interface more consistent, renaming a lot. Removed - redundant C++ codec classes. Reduced amount of structs. Everything changed, - but it is cleaner now imho and functionality remains the same. Also fixed - several bugs and shrunk the implementation code. Made new samples. -*) 6 nov 2011 (!): By default, the encoder now automatically chooses the best - PNG color model and bit depth, based on the amount and type of colors of the - raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color. -*) 9 okt 2011: simpler hash chain implementation for the encoder. -*) 8 sep 2011: lz77 encoder lazy matching instead of greedy matching. -*) 23 aug 2011: tweaked the zlib compression parameters after benchmarking. - A bug with the PNG filtertype heuristic was fixed, so that it chooses much - better ones (it's quite significant). A setting to do an experimental, slow, - brute force search for PNG filter types is added. -*) 17 aug 2011 (!): changed some C zlib related function names. -*) 16 aug 2011: made the code less wide (max 120 characters per line). -*) 17 apr 2011: code cleanup. Bugfixes. Convert low to 16-bit per sample colors. -*) 21 feb 2011: fixed compiling for C90. Fixed compiling with sections disabled. -*) 11 dec 2010: encoding is made faster, based on suggestion by Peter Eastman - to optimize long sequences of zeros. -*) 13 nov 2010: added LodePNG_InfoColor_hasPaletteAlpha and - LodePNG_InfoColor_canHaveAlpha functions for convenience. -*) 7 nov 2010: added LodePNG_error_text function to get error code description. -*) 30 okt 2010: made decoding slightly faster -*) 26 okt 2010: (!) changed some C function and struct names (more consistent). - Reorganized the documentation and the declaration order in the header. -*) 08 aug 2010: only changed some comments and external samples. -*) 05 jul 2010: fixed bug thanks to warnings in the new gcc version. -*) 14 mar 2010: fixed bug where too much memory was allocated for char buffers. -*) 02 sep 2008: fixed bug where it could create empty tree that linux apps could - read by ignoring the problem but windows apps couldn't. -*) 06 jun 2008: added more error checks for out of memory cases. -*) 26 apr 2008: added a few more checks here and there to ensure more safety. -*) 06 mar 2008: crash with encoding of strings fixed -*) 02 feb 2008: support for international text chunks added (iTXt) -*) 23 jan 2008: small cleanups, and #defines to divide code in sections -*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor. -*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder. -*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added - Also various fixes, such as in the deflate and the padding bits code. -*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved - filtering code of encoder. -*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A - C++ wrapper around this provides an interface almost identical to before. - Having LodePNG be pure ISO C90 makes it more portable. The C and C++ code - are together in these files but it works both for C and C++ compilers. -*) 29 dec 2007: (!) changed most integer types to unsigned int + other tweaks -*) 30 aug 2007: bug fixed which makes this Borland C++ compatible -*) 09 aug 2007: some VS2005 warnings removed again -*) 21 jul 2007: deflate code placed in new namespace separate from zlib code -*) 08 jun 2007: fixed bug with 2- and 4-bit color, and small interlaced images -*) 04 jun 2007: improved support for Visual Studio 2005: crash with accessing - invalid std::vector element [0] fixed, and level 3 and 4 warnings removed -*) 02 jun 2007: made the encoder add a tag with version by default -*) 27 may 2007: zlib and png code separated (but still in the same file), - simple encoder/decoder functions added for more simple usage cases -*) 19 may 2007: minor fixes, some code cleaning, new error added (error 69), - moved some examples from here to lodepng_examples.cpp -*) 12 may 2007: palette decoding bug fixed -*) 24 apr 2007: changed the license from BSD to the zlib license -*) 11 mar 2007: very simple addition: ability to encode bKGD chunks. -*) 04 mar 2007: (!) tEXt chunk related fixes, and support for encoding - palettized PNG images. Plus little interface change with palette and texts. -*) 03 mar 2007: Made it encode dynamic Huffman shorter with repeat codes. - Fixed a bug where the end code of a block had length 0 in the Huffman tree. -*) 26 feb 2007: Huffman compression with dynamic trees (BTYPE 2) now implemented - and supported by the encoder, resulting in smaller PNGs at the output. -*) 27 jan 2007: Made the Adler-32 test faster so that a timewaste is gone. -*) 24 jan 2007: gave encoder an error interface. Added color conversion from any - greyscale type to 8-bit greyscale with or without alpha. -*) 21 jan 2007: (!) Totally changed the interface. It allows more color types - to convert to and is more uniform. See the manual for how it works now. -*) 07 jan 2007: Some cleanup & fixes, and a few changes over the last days: - encode/decode custom tEXt chunks, separate classes for zlib & deflate, and - at last made the decoder give errors for incorrect Adler32 or Crc. -*) 01 jan 2007: Fixed bug with encoding PNGs with less than 8 bits per channel. -*) 29 dec 2006: Added support for encoding images without alpha channel, and - cleaned out code as well as making certain parts faster. -*) 28 dec 2006: Added "Settings" to the encoder. -*) 26 dec 2006: The encoder now does LZ77 encoding and produces much smaller files now. - Removed some code duplication in the decoder. Fixed little bug in an example. -*) 09 dec 2006: (!) Placed output parameters of public functions as first parameter. - Fixed a bug of the decoder with 16-bit per color. -*) 15 okt 2006: Changed documentation structure -*) 09 okt 2006: Encoder class added. It encodes a valid PNG image from the - given image buffer, however for now it's not compressed. -*) 08 sep 2006: (!) Changed to interface with a Decoder class -*) 30 jul 2006: (!) LodePNG_InfoPng , width and height are now retrieved in different - way. Renamed decodePNG to decodePNGGeneric. -*) 29 jul 2006: (!) Changed the interface: image info is now returned as a - struct of type LodePNG::LodePNG_Info, instead of a vector, which was a bit clumsy. -*) 28 jul 2006: Cleaned the code and added new error checks. - Corrected terminology "deflate" into "inflate". -*) 23 jun 2006: Added SDL example in the documentation in the header, this - example allows easy debugging by displaying the PNG and its transparency. -*) 22 jun 2006: (!) Changed way to obtain error value. Added - loadFile function for convenience. Made decodePNG32 faster. -*) 21 jun 2006: (!) Changed type of info vector to unsigned. - Changed position of palette in info vector. Fixed an important bug that - happened on PNGs with an uncompressed block. -*) 16 jun 2006: Internally changed unsigned into unsigned where - needed, and performed some optimizations. -*) 07 jun 2006: (!) Renamed functions to decodePNG and placed them - in LodePNG namespace. Changed the order of the parameters. Rewrote the - documentation in the header. Renamed files to lodepng.cpp and lodepng.h -*) 22 apr 2006: Optimized and improved some code -*) 07 sep 2005: (!) Changed to std::vector interface -*) 12 aug 2005: Initial release (C++, decoder only) - - -13. contact information ------------------------ - -Feel free to contact me with suggestions, problems, comments, ... concerning -LodePNG. If you encounter a PNG image that doesn't work properly with this -decoder, feel free to send it and I'll use it to find and fix the problem. - -My email address is (puzzle the account and domain together with an @ symbol): -Domain: gmail dot com. -Account: lode dot vandevenne. - - -Copyright (c) 2005-2016 Lode Vandevenne -*/