[llvm-commits] [test-suite] r46444 - in /test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url: ./ Makefile headers.h medium_inputs packet.c packet.h packet_lengths.h search.c search.h url.c url.h utils.c utils.h
Chris Lattner
sabre at nondot.org
Sun Jan 27 23:09:41 PST 2008
Author: lattner
Date: Mon Jan 28 01:09:41 2008
New Revision: 46444
URL: http://llvm.org/viewvc/llvm-project?rev=46444&view=rev
Log:
Add another program. This seems to be miscompiled by llc.
Added:
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c
test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/Makefile Mon Jan 28 01:09:41 2008
@@ -0,0 +1,14 @@
+LEVEL = ../../../..
+
+PROG = netbench-url
+ifdef LARGE_PROBLEM_SIZE
+RUN_OPTIONS = $(PROJ_SRC_DIR)/medium_inputs 1400
+else
+ifdef SMALL_PROBLEM_SIZE
+RUN_OPTIONS = $(PROJ_SRC_DIR)/medium_inputs 100
+else
+RUN_OPTIONS = $(PROJ_SRC_DIR)/medium_inputs 900
+endif
+endif
+include $(LEVEL)/MultiSource/Makefile.multisrc
+
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/headers.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,102 @@
+unsigned char headers[100][36] = {
+{69, 0, 0, 60, 237, 188, 64, 0, 125, 6, 95, 223, 0, 1, 0, 1, 0, 2, 0, 1, 26, 32, 5, 119, 2, 141, 165, 39, 0, 0, 222, 220, 80, 24, 33, 209},
+{0, 114, 6, 43, 148, 0, 3, 0, 1, 0, 4, 0, 1, 11, 117, 24, 202, 0, 113, 219, 105, 32, 225, 253, 125, 80, 24, 31, 39, 58, 164, 222, 138, 1, 0, 162},
+{5, 0, 1, 18, 29, 26, 43, 14, 223, 211, 56, 0, 0, 228, 228, 80, 24, 254, 254, 58, 164, 222, 138, 1, 0, 164, 173, 69, 0, 0, 77, 18, 227, 64, 0, 123},
+{113, 220, 37, 80, 24, 63, 8, 58, 164, 222, 138, 2, 0, 166, 50, 69, 0, 0, 52, 156, 53, 64, 0, 122, 6, 12, 247, 0, 6, 0, 1, 0, 1, 0, 3, 5},
+{222, 138, 1, 0, 168, 49, 69, 0, 0, 74, 18, 228, 64, 0, 123, 6, 106, 136, 0, 4, 0, 1, 0, 7, 0, 1, 4, 139, 24, 202, 103, 113, 237, 12, 65, 209},
+{0, 5, 220, 142, 37, 64, 0, 124, 6, 117, 154, 0, 8, 0, 1, 0, 9, 0, 1, 26, 32, 13, 30, 132, 240, 181, 176, 41, 224, 24, 115, 128, 24, 68, 32, 58},
+{17, 6, 104, 0, 10, 0, 1, 0, 1, 0, 4, 105, 135, 105, 125, 0, 65, 19, 197, 58, 164, 222, 138, 2, 0, 173, 39, 58, 164, 222, 138, 1, 0, 174, 116, 69},
+{1, 0, 1, 0, 2, 0, 1, 26, 32, 5, 119, 2, 141, 165, 59, 0, 0, 222, 220, 80, 16, 33, 209, 58, 164, 222, 138, 1, 0, 174, 206, 69, 0, 5, 220, 142},
+{0, 1, 26, 32, 13, 30, 132, 240, 187, 88, 41, 224, 24, 115, 128, 16, 68, 32, 58, 164, 222, 138, 1, 0, 175, 149, 69, 0, 5, 220, 35, 112, 64, 0, 124, 6},
+{152, 99, 253, 0, 10, 2, 208, 80, 24, 33, 224, 58, 164, 222, 138, 1, 0, 176, 35, 69, 0, 2, 116, 239, 188, 64, 0, 125, 6, 91, 167, 0, 1, 0, 1, 0},
+{209, 58, 164, 222, 138, 2, 0, 176, 211, 69, 0, 0, 44, 89, 100, 64, 0, 121, 6, 170, 184, 0, 11, 0, 1, 0, 8, 0, 2, 0, 80, 5, 233, 133, 234, 167},
+{123, 6, 200, 231, 0, 8, 0, 2, 0, 11, 0, 1, 5, 233, 0, 80, 114, 12, 101, 163, 133, 234, 167, 179, 80, 16, 68, 112, 58, 164, 222, 138, 2, 0, 183, 194},
+{4, 0, 2, 26, 43, 193, 37, 1, 33, 115, 32, 26, 142, 226, 221, 80, 16, 254, 177, 58, 164, 222, 138, 1, 0, 184, 183, 69, 0, 5, 220, 98, 25, 64, 0, 124},
+{4, 198, 11, 125, 80, 16, 68, 112, 58, 164, 222, 138, 2, 0, 185, 228, 69, 0, 5, 220, 158, 203, 64, 0, 120, 6, 11, 223, 0, 12, 0, 1, 0, 4, 0, 2},
+{64, 0, 124, 6, 10, 243, 0, 1, 0, 5, 0, 13, 0, 1, 39, 14, 5, 254, 31, 143, 191, 155, 4, 198, 11, 125, 80, 24, 68, 112, 58, 164, 222, 138, 2, 0},
+{0, 2, 26, 43, 193, 37, 1, 33, 126, 136, 26, 142, 226, 221, 80, 24, 254, 177, 58, 164, 222, 138, 1, 0, 188, 136, 69, 0, 1, 98, 57, 58, 64, 0, 123, 6},
+{68, 112, 58, 164, 222, 138, 2, 0, 189, 229, 69, 16, 0, 120, 176, 81, 64, 0, 119, 6, 1, 133, 0, 14, 0, 1, 0, 8, 0, 3, 9, 196, 0, 25, 0, 159},
+{0, 192, 67, 69, 0, 0, 40, 17, 198, 64, 0, 122, 6, 19, 112, 0, 15, 0, 1, 0, 1, 0, 6, 4, 123, 18, 116, 1, 247, 207, 93, 231, 52, 1, 202, 80},
+{27, 64, 0, 124, 6, 8, 186, 0, 1, 0, 5, 0, 13, 0, 1, 39, 14, 5, 254, 31, 143, 195, 23, 4, 198, 11, 125, 80, 16, 68, 112, 58, 164, 222, 138, 1},
+{100, 1, 25, 65, 154, 24, 163, 112, 193, 80, 16, 34, 56, 58, 164, 222, 138, 1, 0, 204, 92, 69, 0, 5, 220, 188, 11, 64, 0, 125, 6, 96, 118, 0, 1, 0},
+{202, 1, 247, 207, 93, 80, 16, 68, 112, 58, 164, 222, 138, 1, 0, 205, 79, 69, 0, 5, 140, 187, 144, 64, 0, 125, 6, 24, 189, 0, 1, 0, 9, 0, 18, 0},
+{58, 164, 222, 138, 1, 0, 207, 51, 69, 0, 3, 164, 188, 12, 64, 0, 125, 6, 98, 173, 0, 1, 0, 6, 0, 15, 0, 1, 18, 116, 4, 123, 231, 52, 7, 126},
+{69, 0, 0, 40, 79, 64, 64, 0, 249, 6, 224, 29, 0, 4, 0, 2, 0, 12, 0, 1, 193, 37, 26, 43, 26, 142, 226, 221, 1, 33, 126, 136, 80, 16, 128, 0},
+{155, 0, 1, 0, 8, 0, 17, 0, 1, 4, 100, 26, 43, 24, 163, 118, 117, 1, 25, 65, 154, 80, 24, 254, 254, 58, 164, 222, 138, 1, 0, 213, 55, 69, 0, 5},
+{26, 43, 24, 163, 124, 41, 1, 25, 65, 154, 80, 24, 254, 254, 58, 164, 222, 138, 1, 0, 218, 4, 69, 0, 5, 220, 216, 118, 64, 0, 125, 6, 214, 155, 0, 1},
+{154, 80, 16, 254, 254, 58, 164, 222, 138, 1, 0, 226, 23, 69, 0, 0, 40, 104, 223, 64, 0, 56, 6, 142, 34, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238},
+{171, 64, 0, 118, 6, 60, 191, 0, 21, 0, 1, 0, 1, 0, 10, 241, 12, 206, 190, 129, 60, 126, 158, 251, 108, 252, 146, 128, 16, 68, 112, 58, 164, 222, 138, 2},
+{43, 193, 38, 1, 17, 190, 172, 26, 213, 223, 111, 80, 16, 254, 164, 58, 164, 222, 138, 2, 0, 244, 249, 69, 0, 0, 40, 116, 185, 64, 0, 117, 6, 235, 32, 0},
+{29, 160, 58, 164, 222, 138, 1, 0, 245, 184, 69, 0, 0, 40, 79, 65, 64, 0, 249, 6, 224, 28, 0, 4, 0, 2, 0, 12, 0, 1, 193, 36, 26, 43, 26, 104},
+{0, 5, 220, 161, 203, 64, 0, 120, 6, 8, 223, 0, 12, 0, 1, 0, 4, 0, 2, 26, 43, 193, 38, 1, 17, 196, 96, 26, 213, 223, 111, 80, 16, 254, 164, 58},
+{20, 26, 213, 223, 111, 80, 24, 254, 164, 58, 164, 222, 138, 2, 0, 250, 219, 69, 0, 0, 40, 18, 198, 64, 0, 122, 6, 18, 112, 0, 15, 0, 1, 0, 1, 0},
+{33, 64, 0, 61, 6, 109, 215, 0, 8, 0, 3, 0, 14, 0, 1, 0, 25, 9, 196, 30, 152, 194, 61, 0, 159, 146, 4, 80, 24, 96, 244, 58, 164, 222, 138, 2},
+{169, 0, 23, 0, 1, 0, 1, 0, 11, 0, 20, 7, 47, 9, 177, 105, 101, 2, 25, 246, 43, 128, 16, 68, 112, 58, 164, 222, 138, 1, 1, 6, 238, 69, 0, 5},
+{1, 18, 116, 4, 123, 231, 52, 10, 250, 1, 247, 207, 93, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 8, 80, 69, 0, 0, 40, 79, 66, 64, 0, 249, 6, 224},
+{20, 80, 16, 128, 0, 58, 164, 222, 138, 2, 1, 9, 40, 69, 0, 0, 40, 27, 226, 64, 0, 120, 6, 163, 224, 0, 24, 0, 1, 0, 4, 0, 3, 8, 154, 0},
+{138, 2, 1, 11, 15, 69, 0, 0, 52, 121, 162, 64, 0, 120, 6, 217, 168, 0, 23, 0, 1, 0, 1, 0, 11, 0, 20, 7, 47, 9, 177, 105, 101, 2, 25, 246},
+{69, 0, 0, 52, 84, 91, 64, 0, 120, 6, 127, 8, 0, 25, 0, 1, 0, 1, 0, 11, 0, 20, 7, 44, 109, 47, 0, 51, 2, 142, 167, 191, 128, 16, 68, 112},
+{0, 0, 143, 91, 251, 64, 0, 123, 6, 33, 44, 0, 7, 0, 1, 0, 4, 0, 1, 24, 202, 4, 139, 65, 209, 165, 21, 103, 113, 237, 46, 80, 24, 199, 50, 58},
+{1, 0, 6, 0, 15, 0, 1, 18, 116, 4, 123, 231, 52, 16, 174, 1, 247, 207, 93, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 17, 216, 69, 0, 5, 220, 68},
+{47, 0, 20, 2, 25, 246, 43, 9, 177, 105, 101, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 17, 254, 69, 0, 0, 40, 84, 92, 64, 0, 120, 6, 127, 19, 0},
+{219, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 20, 9, 69, 0, 0, 77, 18, 229, 64, 0, 123, 6, 106, 132, 0, 4, 0, 1, 0, 7, 0, 1, 4, 139, 24},
+{138, 2, 1, 20, 32, 69, 0, 0, 40, 195, 62, 64, 0, 117, 6, 196, 230, 0, 26, 0, 1, 0, 19, 0, 2, 7, 172, 0, 80, 17, 201, 176, 102, 125, 36, 102},
+{0, 1, 7, 47, 0, 20, 2, 26, 7, 71, 9, 177, 105, 101, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 24, 223, 69, 0, 0, 40, 229, 133, 64, 0, 116, 6},
+{32, 164, 222, 185, 140, 4, 58, 123, 13, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 29, 7, 69, 0, 5, 220, 70, 35, 64, 0, 125, 6, 130, 152, 0, 1, 0},
+{184, 219, 109, 47, 0, 51, 80, 24, 34, 56, 58, 164, 222, 138, 1, 1, 33, 141, 69, 0, 5, 220, 151, 94, 64, 0, 124, 6, 29, 148, 0, 1, 0, 13, 0, 28},
+{222, 185, 140, 80, 24, 33, 244, 58, 164, 222, 138, 1, 1, 33, 248, 69, 0, 5, 220, 71, 35, 64, 0, 125, 6, 129, 152, 0, 1, 0, 11, 0, 25, 0, 1, 7},
+{164, 222, 138, 2, 1, 35, 49, 69, 0, 0, 52, 61, 212, 64, 0, 116, 6, 159, 215, 0, 29, 0, 1, 0, 1, 0, 14, 26, 43, 15, 153, 212, 127, 67, 47, 61},
+{38, 69, 69, 0, 5, 220, 152, 94, 64, 0, 124, 6, 28, 148, 0, 1, 0, 13, 0, 28, 0, 1, 26, 32, 7, 119, 4, 58, 128, 193, 164, 222, 185, 140, 80, 16},
+{33, 64, 0, 124, 6, 20, 226, 0, 1, 0, 14, 0, 29, 0, 1, 15, 153, 26, 43, 61, 68, 188, 54, 212, 127, 67, 47, 80, 24, 34, 54, 58, 164, 222, 138, 1},
+{1, 0, 8, 0, 4, 15, 139, 26, 32, 0, 149, 18, 41, 4, 66, 205, 224, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 55, 121, 69, 0, 5, 220, 11, 70, 64},
+{97, 4, 75, 182, 240, 255, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 56, 21, 69, 0, 5, 220, 11, 71, 64, 0, 249, 6, 37, 6, 0, 20},
+{2, 1, 56, 252, 69, 0, 5, 220, 11, 72, 64, 0, 249, 6, 37, 5, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 182, 252, 103, 39, 105, 222, 147},
+{4, 0, 31, 0, 1, 26, 32, 15, 139, 4, 66, 205, 224, 0, 149, 18, 41, 80, 24, 33, 234, 58, 164, 222, 138, 2, 1, 57, 181, 69, 0, 5, 220, 11, 73, 64},
+{75, 183, 2, 27, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 58, 106, 69, 0, 5, 220, 11, 74, 64, 0, 249, 6, 37, 3, 0, 20, 0, 1},
+{56, 58, 164, 222, 138, 2, 1, 58, 242, 69, 0, 5, 220, 11, 75, 64, 0, 249, 6, 37, 2, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 13},
+{64, 0, 249, 6, 37, 1, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 19, 55, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 2, 1},
+{24, 34, 56, 58, 164, 222, 138, 2, 1, 60, 217, 69, 0, 5, 220, 11, 79, 64, 0, 249, 6, 36, 254, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75},
+{69, 0, 5, 220, 11, 80, 64, 0, 249, 6, 36, 253, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 42, 7, 39, 105, 222, 147, 80, 24, 34, 56},
+{1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 47, 187, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 62, 138, 69, 0, 0, 52, 19, 198, 64},
+{1, 247, 207, 93, 231, 52, 10, 250, 128, 16, 34, 56, 58, 164, 222, 138, 1, 1, 62, 191, 69, 0, 5, 220, 220, 107, 64, 0, 124, 6, 74, 24, 0, 8, 0, 4},
+{16, 33, 234, 58, 164, 222, 138, 2, 1, 63, 52, 69, 0, 5, 220, 11, 82, 64, 0, 249, 6, 36, 251, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75},
+{0, 5, 220, 142, 200, 64, 0, 252, 6, 177, 36, 0, 8, 0, 5, 0, 32, 0, 1, 201, 148, 0, 119, 225, 31, 71, 114, 81, 1, 252, 37, 80, 16, 34, 56, 58},
+{31, 77, 38, 81, 1, 252, 37, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 65, 4, 69, 0, 0, 52, 86, 7, 64, 0, 53, 6, 182, 104, 0, 33, 0, 1, 0},
+{112, 58, 164, 222, 138, 2, 1, 67, 146, 69, 0, 0, 40, 211, 16, 64, 0, 120, 6, 144, 214, 0, 34, 0, 1, 0, 1, 0, 16, 8, 110, 160, 230, 0, 93, 217},
+{104, 228, 64, 0, 56, 6, 142, 29, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 182, 252, 103, 80, 16, 192, 0, 58, 164, 222, 138},
+{22, 0, 2, 39, 14, 4, 141, 157, 116, 105, 70, 1, 152, 6, 61, 80, 24, 68, 112, 58, 164, 222, 138, 2, 1, 72, 231, 69, 0, 0, 40, 228, 156, 64, 0, 253},
+{94, 66, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 73, 45, 69, 0, 0, 40, 104, 230, 64, 0, 56, 6, 142, 27, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4},
+{69, 0, 0, 40, 117, 185, 64, 0, 117, 6, 234, 32, 0, 22, 0, 1, 0, 1, 0, 5, 7, 172, 39, 14, 0, 97, 50, 3, 57, 236, 31, 43, 80, 16, 34, 56},
+{64, 0, 56, 6, 142, 26, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 183, 19, 55, 80, 16, 192, 0, 58, 164, 222, 138, 2, 1},
+{179, 114, 12, 102, 221, 80, 24, 32, 254, 58, 164, 222, 138, 2, 1, 74, 8, 69, 0, 0, 40, 228, 157, 64, 0, 253, 6, 96, 3, 0, 32, 0, 1, 0, 8, 0},
+{64, 0, 125, 6, 96, 114, 0, 1, 0, 6, 0, 15, 0, 1, 18, 116, 4, 123, 231, 52, 22, 98, 1, 247, 207, 93, 80, 24, 68, 112, 58, 164, 222, 138, 1, 1},
+{19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 183, 24, 235, 80, 16, 192, 0, 58, 164, 222, 138, 2, 1, 75, 91, 69, 0, 5, 220, 11},
+{35, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 75, 188, 69, 0, 5, 220, 11, 84, 64, 0, 249, 6, 36, 249, 0, 20, 0, 1, 0, 19, 0},
+{1, 1, 76, 81, 69, 0, 5, 220, 142, 202, 64, 0, 252, 6, 177, 34, 0, 8, 0, 5, 0, 32, 0, 1, 201, 148, 0, 119, 225, 31, 94, 66, 81, 1, 252, 37},
+{110, 152, 238, 126, 216, 0, 93, 217, 25, 80, 16, 127, 218, 58, 164, 222, 138, 1, 1, 76, 211, 69, 0, 5, 220, 142, 203, 64, 0, 252, 6, 177, 33, 0, 8, 0},
+{69, 0, 5, 220, 11, 86, 64, 0, 249, 6, 36, 247, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 76, 63, 39, 105, 222, 147, 80, 24, 34, 56},
+{75, 183, 36, 83, 80, 16, 192, 0, 58, 164, 222, 138, 2, 1, 77, 171, 69, 0, 5, 220, 11, 87, 64, 0, 249, 6, 36, 246, 0, 20, 0, 1, 0, 19, 0, 1},
+{6, 36, 244, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 93, 91, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 79, 84, 69},
+{4, 75, 183, 99, 15, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 2, 1, 80, 23, 69, 0, 5, 220, 11, 91, 64, 0, 249, 6, 36, 242, 0, 20, 0},
+{34, 56, 58, 164, 222, 138, 1, 1, 80, 37, 69, 0, 0, 40, 104, 234, 64, 0, 56, 6, 142, 23, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105},
+{80, 207, 69, 0, 5, 220, 11, 92, 64, 0, 249, 6, 36, 241, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 110, 119, 39, 105, 222, 147, 80, 24},
+{6, 200, 60, 0, 35, 0, 1, 0, 4, 0, 4, 7, 110, 17, 80, 0, 238, 77, 101, 4, 141, 76, 110, 128, 16, 250, 0, 58, 164, 222, 138, 2, 1, 81, 107, 69},
+{247, 97, 4, 75, 183, 116, 43, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 1, 1, 81, 112, 69, 0, 5, 220, 13, 37, 64, 0, 124, 6, 77, 14, 0},
+{132, 140, 0, 93, 217, 25, 80, 16, 127, 218, 58, 164, 222, 138, 2, 1, 81, 248, 69, 0, 5, 220, 11, 94, 64, 0, 249, 6, 36, 239, 0, 20, 0, 1, 0, 19},
+{0, 5, 220, 98, 33, 64, 0, 124, 6, 241, 4, 0, 1, 0, 5, 0, 22, 0, 1, 39, 14, 7, 172, 57, 236, 35, 195, 0, 97, 50, 3, 80, 16, 68, 112, 58},
+{97, 4, 75, 183, 127, 147, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 83, 56, 69, 0, 4, 182, 91, 100, 64, 0, 121, 6, 164, 46, 0, 11},
+{168, 4, 114, 12, 102, 221, 80, 25, 32, 254, 58, 164, 222, 138, 2, 1, 83, 150, 69, 0, 5, 220, 11, 96, 64, 0, 249, 6, 36, 237, 0, 20, 0, 1, 0, 19},
+{20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 144, 175, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 2, 1, 85, 85, 69, 0, 5, 220, 11},
+{150, 99, 39, 105, 222, 147, 80, 16, 34, 56, 58, 164, 222, 138, 2, 1, 85, 119, 69, 0, 0, 40, 228, 158, 64, 0, 253, 6, 96, 2, 0, 32, 0, 1, 0, 8},
+{6, 96, 1, 0, 32, 0, 1, 0, 8, 0, 5, 0, 119, 201, 148, 81, 1, 252, 37, 225, 31, 111, 94, 80, 16, 68, 112, 58, 164, 222, 138, 1, 1, 87, 25, 69},
+{119, 0, 97, 50, 3, 80, 16, 68, 112, 58, 164, 222, 138, 2, 1, 87, 40, 69, 0, 5, 220, 11, 101, 64, 0, 249, 6, 36, 232, 0, 20, 0, 1, 0, 19, 0},
+{222, 138, 2, 1, 87, 148, 69, 0, 5, 220, 11, 102, 64, 0, 249, 6, 36, 231, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 167, 127, 39, 105},
+{103, 64, 0, 249, 6, 38, 206, 0, 20, 0, 1, 0, 19, 0, 1, 238, 247, 97, 4, 75, 183, 173, 51, 39, 105, 222, 147, 80, 24, 34, 56, 58, 164, 222, 138, 1},
+{31, 111, 94, 81, 1, 252, 37, 80, 24, 34, 56, 58, 164, 222, 138, 1, 1, 88, 245, 69, 0, 0, 40, 104, 236, 64, 0, 56, 6, 142, 21, 0, 19, 0, 1, 0},
+{89, 154, 69, 0, 0, 48, 44, 68, 64, 0, 119, 6, 194, 118, 0, 36, 0, 1, 0, 4, 0, 1, 6, 188, 24, 202, 3, 34, 61, 114, 0, 0, 0, 0, 112, 2},
+{0, 5, 220, 142, 206, 64, 0, 252, 6, 177, 30, 0, 8, 0, 5, 0, 32, 0, 1, 201, 148, 0, 119, 225, 31, 117, 18, 81, 1, 252, 37, 80, 16, 34, 56, 58},
+{37, 80, 24, 34, 56, 58, 164, 222, 138, 1, 1, 91, 66, 69, 0, 0, 40, 104, 237, 64, 0, 56, 6, 142, 20, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238},
+{238, 64, 0, 56, 6, 142, 19, 0, 19, 0, 1, 0, 20, 0, 1, 97, 4, 238, 247, 39, 105, 222, 147, 75, 183, 93, 91, 80, 16, 136, 224, 58, 164, 222, 138, 2},
+{35, 0, 1, 0, 4, 0, 4, 7, 110, 17, 80, 0, 238, 77, 101, 4, 141, 76, 110, 128, 16, 250, 0, 58, 164, 222, 138, 1, 1, 96, 85, 69, 0, 5, 220, 78},
+{110, 4, 141, 93, 138, 0, 238, 77, 101, 80, 16, 28, 167, 58, 164, 222, 138, 1, 1, 96, 176, 69, 0, 0, 40, 57, 60, 64, 0, 123, 6, 200, 228, 0, 8, 0}
+};
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/medium_inputs Mon Jan 28 01:09:41 2008
@@ -0,0 +1,400 @@
+1(5), 70, 83, 63, 36, 38
+2(9:50), 69, 34, 62, 45, 51, 76, 96, 78, 33
+1(9), 38, 72, 32, 87, 81, 78, 37, 80, 97
+2(9:50), 34, 67, 83, 33, 38, 41, 97, 68, 73
+1(12), 93, 40, 62, 76, 45, 71, 74, 45, 68, 45, 98, 89
+1(9), 33, 49, 39, 58, 94, 71, 79, 83, 57
+2(11:100), 86, 58, 90, 56, 62, 50, 33, 48, 92, 99, 75
+2(8:50), 66, 75, 73, 58, 86, 58, 68, 55
+2(19:100), 34, 40, 86, 42, 85, 71, 76, 30, 70, 84, 52, 87, 51, 35, 95, 60, 42, 43, 76
+1(7), 90, 82, 83, 92, 72, 79, 98
+1(9), 68, 51, 80, 90, 55, 65, 56, 35, 66
+1(16), 85, 71, 91, 46, 34, 59, 74, 68, 47, 99, 93, 73, 53, 88, 55, 42
+1(9), 79, 55, 65, 74, 59, 68, 91, 96, 42
+2(15:100), 70, 74, 80, 39, 74, 61, 72, 53, 67, 96, 67, 34, 49, 84, 46
+1(7), 64, 80, 77, 30, 84, 30, 100
+1(10), 91, 39, 52, 61, 88, 84, 50, 46, 83, 57
+1(10), 57, 100, 53, 52, 44, 33, 72, 62, 50, 92
+2(13:50), 71, 54, 38, 79, 63, 40, 87, 54, 93, 56, 70, 70, 76
+1(8), 92, 91, 85, 42, 52, 69, 40, 94
+1(19), 49, 72, 45, 90, 40, 70, 61, 83, 88, 80, 42, 100, 83, 99, 64, 99, 63, 48, 37
+2(7:100), 64, 96, 78, 63, 78, 76, 100
+1(10), 47, 87, 97, 40, 57, 36, 55, 55, 59, 92
+1(20), 40, 39, 69, 63, 92, 41, 69, 49, 54, 68, 93, 44, 56, 49, 75, 68, 42, 30, 77, 37
+1(6), 53, 71, 39, 100, 61, 78
+1(10), 49, 59, 56, 95, 86, 83, 63, 51, 57, 89
+1(7), 91, 39, 48, 70, 66, 93, 45
+1(11), 65, 91, 50, 76, 98, 78, 82, 36, 52, 79, 66
+1(11), 97, 95, 52, 52, 84, 52, 55, 74, 74, 50, 67
+1(13), 93, 68, 50, 82, 68, 41, 39, 72, 70, 77, 34, 60, 47
+1(9), 96, 63, 54, 97, 68, 75, 57, 73, 41
+2(11:100), 77, 85, 76, 57, 82, 51, 94, 75, 50, 36, 56
+1(16), 30, 89, 95, 88, 89, 38, 70, 68, 90, 45, 84, 94, 40, 33, 80, 96
+1(10), 60, 89, 30, 95, 47, 73, 53, 85, 57, 54
+1(8), 81, 59, 50, 42, 62, 95, 44, 35
+1(7), 47, 65, 76, 76, 72, 32, 62
+1(13), 38, 61, 99, 30, 76, 90, 68, 70, 39, 79, 63, 85, 90
+1(18), 83, 45, 43, 83, 46, 47, 69, 87, 85, 91, 88, 66, 63, 53, 95, 75, 67, 83
+1(9), 97, 93, 40, 42, 42, 39, 33, 76, 99
+2(14:100), 71, 78, 47, 100, 97, 91, 94, 59, 91, 30, 49, 73, 51, 81
+1(13), 61, 38, 46, 62, 55, 51, 87, 89, 69, 86, 72, 92, 49
+2(8:100), 30, 47, 62, 93, 86, 30, 82, 42
+1(14), 91, 93, 40, 62, 86, 63, 44, 85, 47, 39, 92, 84, 55, 35
+2(8:100), 39, 67, 74, 42, 75, 60, 51, 73
+1(7), 84, 68, 41, 59, 45, 41, 44
+1(8), 38, 98, 81, 58, 35, 94, 85, 81
+1(20), 70, 52, 57, 50, 89, 72, 54, 32, 39, 95, 51, 64, 38, 58, 83, 87, 74, 68, 63, 84
+1(18), 61, 96, 66, 93, 38, 70, 83, 50, 30, 32, 32, 46, 65, 91, 93, 37, 41, 68
+1(15), 74, 94, 92, 91, 42, 86, 87, 61, 75, 48, 95, 87, 31, 87, 93
+1(14), 87, 98, 60, 90, 34, 68, 90, 44, 40, 65, 35, 77, 38, 79
+1(7), 30, 84, 59, 64, 68, 86, 80
+1(9), 58, 87, 70, 86, 77, 38, 88, 59, 62
+1(8), 95, 97, 68, 53, 44, 100, 78, 46
+1(10), 39, 64, 79, 45, 83, 71, 66, 33, 53, 68
+1(10), 35, 61, 32, 97, 97, 32, 33, 46, 33, 73
+2(10:100), 65, 48, 83, 63, 38, 92, 97, 75, 100, 65
+1(12), 90, 31, 90, 69, 67, 44, 75, 83, 63, 84, 41, 62
+1(10), 94, 36, 59, 42, 77, 98, 38, 33, 58, 95
+1(5), 97, 88, 77, 63, 90
+1(12), 39, 91, 68, 40, 99, 61, 39, 56, 66, 36, 36, 85
+1(9), 75, 40, 83, 67, 30, 37, 79, 91, 92
+1(7), 85, 44, 61, 55, 58, 86, 45
+1(12), 54, 42, 42, 97, 66, 54, 91, 66, 81, 64, 74, 98
+1(10), 54, 80, 95, 37, 58, 65, 65, 75, 63, 61
+1(7), 75, 82, 33, 55, 55, 43, 52
+2(9:50), 65, 87, 53, 60, 61, 86, 84, 92, 81
+1(14), 95, 63, 54, 37, 34, 70, 66, 43, 40, 34, 91, 86, 31, 80
+2(15:50), 87, 92, 95, 92, 78, 58, 89, 72, 73, 93, 84, 36, 35, 93, 87
+1(13), 69, 61, 94, 41, 30, 62, 73, 82, 99, 40, 85, 65, 76
+1(10), 42, 67, 99, 64, 98, 73, 63, 95, 37, 64
+1(18), 67, 69, 50, 94, 65, 38, 82, 48, 40, 62, 54, 96, 30, 64, 73, 59, 41, 82
+1(15), 100, 38, 92, 48, 91, 40, 73, 43, 81, 42, 34, 84, 98, 33, 54
+1(11), 82, 35, 87, 58, 94, 63, 81, 62, 98, 37, 79
+1(10), 38, 83, 39, 63, 95, 31, 30, 57, 88, 42
+2(6:50), 94, 41, 65, 93, 54, 37
+1(9), 86, 87, 77, 58, 49, 87, 91, 32, 66
+1(6), 37, 84, 93, 80, 89, 90
+2(7:50), 51, 36, 64, 33, 47, 89, 36
+1(7), 77, 36, 44, 77, 69, 63, 69
+1(15), 60, 60, 59, 76, 99, 47, 43, 55, 75, 81, 99, 52, 32, 51, 42
+1(13), 98, 82, 75, 90, 71, 44, 67, 45, 56, 55, 63, 39, 36
+1(15), 61, 33, 83, 47, 31, 35, 73, 53, 43, 50, 88, 73, 80, 35, 79
+1(8), 62, 97, 58, 88, 42, 49, 46, 90
+2(15:50), 84, 96, 48, 90, 66, 93, 58, 39, 58, 76, 37, 70, 82, 90, 56
+1(11), 58, 86, 69, 52, 69, 53, 78, 42, 66, 58, 98
+1(9), 83, 60, 76, 53, 58, 52, 39, 99, 100
+1(13), 43, 75, 97, 31, 82, 66, 42, 31, 58, 44, 70, 67, 85
+2(7:50), 60, 70, 85, 45, 59, 47, 53
+1(9), 63, 60, 31, 53, 38, 61, 73, 42, 35
+1(13), 33, 72, 59, 55, 93, 63, 43, 84, 41, 88, 56, 85, 70
+1(5), 75, 63, 51, 34, 89
+1(10), 85, 60, 72, 77, 88, 90, 61, 98, 41, 95
+1(20), 54, 73, 84, 30, 90, 70, 63, 48, 91, 31, 82, 62, 90, 47, 39, 58, 67, 82, 30, 60
+1(10), 79, 58, 41, 48, 82, 31, 71, 53, 44, 75
+1(14), 34, 97, 93, 43, 71, 92, 53, 41, 63, 81, 76, 44, 40, 46
+1(18), 33, 63, 93, 88, 96, 77, 55, 78, 32, 64, 35, 88, 46, 77, 57, 69, 57, 33
+1(12), 46, 72, 85, 82, 85, 58, 39, 86, 58, 54, 95, 62
+1(7), 33, 35, 98, 56, 93, 94, 60
+1(11), 98, 93, 33, 68, 86, 55, 78, 63, 59, 60, 57
+1(5), 30, 88, 45, 43, 79
+1(10), 50, 48, 75, 59, 50, 91, 79, 82, 98, 52
+1(19), 83, 71, 83, 73, 71, 76, 41, 99, 81, 46, 94, 99, 63, 79, 57, 47, 51, 55, 93
+1(9), 31, 48, 68, 56, 30, 83, 91, 30, 37
+1(8), 42, 95, 95, 31, 39, 33, 86, 51
+1(7), 66, 77, 94, 51, 72, 71, 73
+1(11), 36, 57, 99, 43, 55, 81, 96, 31, 49, 86, 89
+1(13), 84, 38, 45, 40, 32, 46, 69, 38, 48, 37, 72, 63, 80
+1(13), 81, 36, 77, 62, 77, 83, 56, 64, 38, 75, 71, 74, 42
+2(8:50), 54, 78, 97, 36, 41, 63, 81, 59
+1(7), 82, 35, 95, 87, 47, 68, 97
+1(7), 35, 38, 36, 45, 50, 59, 57
+1(15), 69, 90, 74, 87, 52, 76, 56, 68, 37, 84, 100, 56, 48, 80, 76
+2(10:50), 60, 77, 73, 100, 62, 87, 30, 41, 87, 60
+2(15:50), 100, 93, 94, 92, 82, 59, 72, 49, 91, 42, 43, 81, 49, 53, 47
+1(14), 74, 74, 44, 37, 95, 73, 97, 40, 58, 73, 90, 69, 56, 75
+1(9), 66, 40, 94, 69, 47, 70, 76, 93, 73
+1(9), 50, 91, 31, 83, 55, 32, 35, 50, 52
+1(17), 93, 35, 40, 51, 67, 99, 35, 65, 46, 87, 43, 74, 96, 99, 40, 48, 68
+1(8), 65, 95, 97, 55, 65, 89, 80, 78
+1(8), 31, 38, 96, 55, 82, 80, 51, 31
+1(6), 64, 55, 76, 77, 96, 79
+1(20), 34, 97, 59, 52, 67, 38, 66, 54, 31, 41, 45, 30, 99, 98, 47, 99, 71, 35, 80, 77
+1(10), 50, 40, 56, 91, 72, 46, 97, 61, 31, 89
+1(10), 74, 43, 50, 37, 99, 89, 85, 56, 81, 65
+1(7), 95, 90, 88, 66, 78, 39, 88
+1(10), 51, 52, 61, 72, 87, 48, 63, 39, 95, 63
+2(12:100), 56, 59, 61, 32, 56, 67, 32, 86, 99, 64, 31, 81
+2(10:100), 65, 56, 38, 74, 93, 98, 95, 44, 65, 50
+1(10), 30, 69, 40, 39, 54, 99, 63, 60, 80, 51
+1(14), 62, 80, 87, 68, 38, 60, 63, 35, 68, 30, 51, 69, 34, 64
+1(15), 82, 56, 30, 57, 72, 52, 61, 56, 50, 66, 98, 96, 69, 61, 91
+1(16), 31, 46, 44, 91, 99, 93, 48, 41, 32, 90, 64, 37, 95, 64, 41, 47
+2(6:100), 51, 31, 73, 46, 98, 83
+2(10:50), 47, 61, 99, 68, 35, 90, 36, 68, 85, 59
+2(15:100), 72, 79, 55, 92, 50, 71, 70, 56, 76, 90, 83, 48, 62, 52, 33
+1(14), 87, 89, 63, 53, 61, 62, 31, 80, 81, 47, 91, 33, 67, 47
+1(8), 94, 70, 77, 48, 90, 85, 65, 45
+1(20), 37, 91, 73, 62, 30, 44, 96, 45, 55, 82, 66, 98, 36, 56, 85, 85, 79, 80, 35, 66
+1(19), 78, 46, 90, 74, 89, 68, 97, 64, 54, 41, 63, 38, 38, 35, 46, 30, 55, 31, 83
+1(14), 67, 40, 80, 71, 95, 47, 44, 89, 48, 82, 99, 97, 46, 84
+1(8), 63, 85, 85, 30, 96, 41, 63, 99
+1(7), 50, 71, 87, 46, 41, 52, 30
+1(10), 62, 64, 47, 33, 78, 93, 89, 80, 71, 88
+1(10), 86, 76, 46, 98, 83, 53, 91, 81, 72, 59
+1(13), 36, 67, 57, 85, 59, 82, 84, 71, 55, 53, 92, 47, 47
+2(15:50), 85, 48, 63, 60, 40, 57, 86, 61, 52, 85, 69, 94, 77, 73, 93
+1(11), 71, 75, 45, 97, 44, 82, 53, 81, 94, 81, 71
+1(10), 38, 30, 35, 47, 86, 44, 58, 97, 91, 83
+1(15), 69, 87, 40, 88, 57, 31, 90, 73, 47, 66, 74, 48, 97, 54, 93
+1(16), 63, 61, 76, 83, 48, 51, 49, 66, 52, 50, 68, 36, 78, 54, 61, 51
+1(16), 54, 73, 68, 94, 64, 72, 45, 78, 56, 45, 32, 64, 65, 73, 31, 46
+1(4), 53, 45, 40, 31
+1(12), 81, 64, 38, 77, 41, 37, 100, 43, 64, 34, 88, 38
+1(14), 59, 65, 97, 35, 40, 78, 93, 92, 58, 46, 59, 94, 60, 60
+1(8), 43, 44, 98, 64, 41, 32, 41, 49
+1(8), 70, 72, 93, 64, 68, 85, 83, 82
+1(7), 41, 59, 90, 34, 61, 78, 64
+1(10), 80, 97, 34, 82, 35, 71, 68, 92, 58, 79
+1(8), 58, 64, 67, 44, 50, 88, 91, 37
+1(10), 47, 88, 46, 83, 51, 64, 43, 56, 66, 43
+2(7:100), 39, 90, 59, 93, 42, 35, 79
+2(6:100), 56, 35, 50, 52, 52, 33
+1(7), 98, 88, 34, 50, 94, 47, 52
+1(7), 91, 86, 67, 64, 53, 84, 64
+1(16), 46, 69, 92, 54, 37, 93, 34, 96, 55, 70, 62, 36, 48, 32, 97, 67
+1(14), 79, 45, 68, 46, 35, 97, 41, 50, 35, 75, 58, 49, 71, 56
+1(6), 72, 75, 97, 45, 94, 64
+1(12), 61, 45, 59, 53, 89, 76, 82, 73, 91, 83, 63, 45
+1(14), 98, 71, 94, 64, 68, 34, 99, 99, 75, 53, 69, 48, 51, 84
+2(10:100), 59, 91, 63, 100, 46, 86, 48, 34, 91, 49
+1(5), 97, 79, 90, 50, 86
+2(7:50), 71, 68, 64, 74, 77, 91, 85
+1(12), 61, 65, 63, 78, 51, 94, 35, 32, 76, 91, 90, 83
+1(11), 57, 98, 72, 57, 52, 46, 33, 64, 79, 60, 100
+2(10:50), 63, 39, 79, 100, 68, 72, 42, 79, 67, 60
+1(13), 32, 63, 96, 66, 30, 82, 42, 56, 80, 89, 67, 35, 58
+1(13), 74, 70, 43, 90, 95, 76, 100, 67, 87, 63, 65, 85, 42
+2(18:50), 61, 77, 65, 65, 50, 93, 77, 82, 30, 94, 45, 52, 84, 79, 38, 40, 90, 31
+2(7:50), 30, 48, 68, 69, 70, 41, 91
+1(7), 84, 40, 58, 34, 97, 33, 100
+1(10), 93, 34, 61, 73, 78, 80, 65, 77, 37, 62
+1(14), 86, 61, 44, 79, 86, 66, 71, 78, 38, 47, 97, 63, 75, 43
+2(12:100), 78, 88, 64, 53, 55, 75, 84, 40, 68, 98, 31, 68
+2(10:50), 43, 81, 54, 41, 40, 49, 71, 40, 69, 60
+1(6), 52, 68, 31, 70, 75, 37
+2(15:50), 49, 40, 97, 52, 40, 68, 48, 95, 80, 64, 97, 82, 91, 52, 95
+1(13), 77, 47, 75, 60, 45, 47, 41, 36, 87, 47, 32, 70, 92
+1(10), 84, 95, 53, 41, 33, 93, 67, 34, 81, 33
+1(9), 37, 88, 45, 69, 85, 47, 35, 69, 80
+1(11), 68, 76, 59, 89, 83, 32, 81, 48, 31, 94, 84
+2(12:50), 72, 51, 43, 36, 60, 55, 63, 87, 37, 45, 32, 100
+1(20), 99, 44, 71, 64, 37, 84, 47, 60, 99, 66, 63, 96, 84, 71, 43, 68, 99, 46, 83, 71
+1(7), 45, 88, 81, 90, 81, 54, 42
+2(9:50), 59, 77, 56, 94, 66, 73, 95, 75, 54
+1(9), 74, 93, 31, 47, 76, 38, 54, 96, 81
+1(10), 62, 73, 53, 53, 57, 30, 51, 54, 82, 54
+1(11), 73, 72, 46, 79, 56, 56, 57, 53, 72, 58, 57
+1(18), 41, 65, 87, 71, 75, 36, 67, 85, 70, 52, 71, 77, 91, 44, 33, 57, 75, 62
+1(7), 63, 85, 88, 77, 78, 36, 56
+1(12), 89, 69, 48, 53, 32, 85, 76, 93, 50, 49, 95, 90
+2(12:50), 86, 39, 86, 70, 89, 57, 88, 95, 72, 96, 88, 43
+2(10:100), 54, 49, 34, 52, 96, 94, 88, 31, 40, 72
+1(8), 32, 66, 73, 78, 67, 86, 30, 64
+1(12), 86, 31, 59, 61, 85, 67, 60, 98, 67, 58, 84, 79
+1(10), 31, 49, 62, 40, 52, 44, 55, 39, 68, 68
+1(8), 83, 81, 32, 74, 85, 47, 62, 62
+1(10), 54, 33, 90, 98, 44, 69, 78, 82, 51, 90
+2(7:50), 55, 30, 100, 90, 99, 70, 69
+1(14), 34, 49, 68, 78, 99, 52, 62, 83, 63, 77, 30, 70, 74, 37
+1(10), 60, 55, 78, 66, 52, 48, 40, 79, 74, 44
+1(8), 59, 59, 65, 71, 42, 83, 61, 66
+1(12), 41, 57, 40, 80, 83, 75, 88, 66, 65, 70, 61, 31
+1(4), 60, 37, 53, 43
+2(10:50), 68, 60, 62, 32, 93, 75, 35, 58, 63, 100
+1(14), 43, 48, 59, 64, 42, 34, 95, 37, 82, 88, 75, 34, 85, 35
+1(8), 80, 31, 36, 59, 32, 83, 38, 78
+1(8), 76, 84, 74, 84, 98, 78, 66, 79
+2(15:100), 32, 70, 36, 46, 85, 74, 43, 66, 43, 32, 61, 86, 58, 46, 43
+1(12), 40, 58, 96, 48, 42, 40, 59, 81, 75, 52, 94, 32
+1(17), 51, 100, 80, 54, 73, 51, 94, 62, 88, 99, 79, 51, 31, 68, 56, 60, 50
+1(9), 68, 86, 87, 55, 95, 94, 43, 32, 59
+2(16:50), 66, 31, 38, 86, 32, 79, 60, 72, 83, 57, 97, 41, 44, 95, 42, 75
+1(8), 91, 56, 38, 44, 72, 62, 68, 65
+1(5), 55, 57, 41, 57, 35
+1(8), 35, 90, 48, 63, 43, 56, 92, 81
+1(6), 92, 57, 61, 60, 30, 49
+1(9), 72, 95, 80, 67, 93, 88, 93, 47, 58
+1(8), 88, 50, 70, 89, 80, 44, 60, 55
+1(7), 82, 48, 45, 88, 91, 67, 72
+1(14), 81, 31, 44, 96, 30, 43, 66, 55, 71, 84, 77, 39, 55, 68
+1(7), 81, 32, 88, 89, 31, 48, 93
+1(12), 63, 58, 39, 73, 70, 96, 97, 93, 100, 56, 54, 30
+2(12:50), 43, 56, 82, 83, 77, 66, 48, 100, 87, 68, 87, 93
+1(8), 88, 46, 41, 39, 47, 38, 96, 86
+1(10), 84, 99, 54, 97, 48, 41, 99, 47, 61, 81
+1(7), 75, 79, 76, 52, 95, 46, 52
+2(8:50), 89, 96, 76, 43, 62, 72, 45, 89
+2(20:50), 88, 40, 85, 66, 73, 83, 94, 65, 98, 53, 71, 63, 36, 59, 61, 58, 60, 79, 52, 88
+1(14), 81, 44, 93, 68, 76, 79, 83, 78, 100, 56, 90, 85, 54, 68
+2(10:50), 94, 95, 72, 43, 80, 55, 58, 75, 73, 53
+2(20:100), 94, 64, 48, 67, 66, 65, 33, 66, 40, 77, 94, 78, 96, 87, 60, 44, 56, 46, 94, 72
+1(14), 68, 65, 92, 37, 87, 35, 59, 78, 88, 78, 63, 57, 53, 75
+1(7), 41, 69, 60, 85, 83, 53, 67
+1(15), 74, 87, 67, 48, 85, 70, 54, 42, 85, 93, 37, 58, 68, 97, 38
+1(9), 48, 95, 75, 75, 34, 72, 51, 69, 94
+1(6), 60, 95, 31, 57, 83, 93
+2(15:50), 91, 36, 64, 60, 33, 53, 61, 87, 61, 40, 36, 45, 51, 72, 96
+1(19), 33, 43, 81, 53, 76, 54, 95, 81, 71, 31, 68, 90, 86, 62, 98, 94, 44, 99, 43
+1(10), 69, 48, 45, 95, 83, 62, 94, 90, 73, 89
+1(11), 93, 69, 58, 70, 47, 89, 85, 32, 87, 98, 48
+1(9), 86, 37, 95, 59, 87, 78, 95, 73, 63
+1(13), 92, 92, 34, 35, 66, 81, 52, 48, 99, 76, 85, 58, 85
+1(11), 85, 33, 80, 85, 89, 82, 66, 93, 92, 67, 63
+1(5), 47, 71, 64, 53, 67
+1(4), 31, 64, 48, 31
+1(14), 51, 81, 41, 71, 77, 38, 65, 77, 51, 78, 74, 52, 35, 81
+1(10), 50, 31, 58, 60, 99, 60, 88, 47, 56, 58
+1(13), 60, 41, 86, 85, 91, 47, 100, 100, 69, 80, 89, 32, 94
+1(10), 34, 95, 86, 73, 89, 73, 66, 78, 91, 46
+1(7), 86, 74, 33, 83, 99, 31, 59
+2(8:100), 80, 77, 40, 90, 41, 53, 35, 38
+1(9), 83, 35, 52, 99, 57, 100, 83, 61, 61
+1(7), 64, 64, 86, 72, 94, 44, 86
+1(7), 74, 58, 43, 70, 41, 49, 99
+1(16), 87, 61, 58, 60, 55, 41, 30, 44, 63, 87, 57, 63, 88, 51, 99, 67
+1(10), 58, 52, 54, 43, 43, 49, 97, 44, 80, 53
+2(9:100), 33, 94, 94, 30, 62, 83, 63, 94, 50
+1(13), 49, 97, 68, 42, 32, 89, 97, 72, 46, 59, 41, 78, 98
+1(10), 76, 97, 91, 59, 43, 30, 95, 70, 49, 56
+1(20), 47, 42, 59, 81, 38, 97, 88, 71, 64, 31, 44, 63, 87, 87, 82, 54, 52, 67, 66, 72
+1(10), 76, 53, 56, 72, 68, 88, 64, 88, 78, 60
+1(10), 30, 46, 100, 55, 61, 77, 77, 81, 45, 48
+1(12), 65, 84, 31, 33, 30, 63, 94, 66, 90, 47, 30, 39
+1(10), 36, 78, 52, 43, 35, 44, 41, 34, 35, 96
+2(9:50), 34, 100, 81, 39, 30, 59, 82, 66, 57
+1(8), 35, 71, 55, 35, 48, 87, 91, 81
+1(4), 63, 60, 96, 92
+2(4:100), 35, 70, 91, 75
+1(11), 32, 96, 90, 55, 37, 66, 55, 90, 73, 33, 50
+1(11), 34, 58, 30, 93, 61, 45, 40, 95, 86, 68, 76
+1(7), 72, 66, 59, 42, 94, 50, 67
+1(7), 60, 43, 59, 83, 92, 59, 74
+1(19), 45, 38, 64, 96, 71, 51, 46, 53, 32, 75, 32, 52, 59, 89, 34, 68, 35, 47, 30
+1(11), 49, 94, 40, 67, 98, 96, 52, 73, 48, 41, 92
+1(11), 62, 73, 30, 73, 43, 85, 96, 32, 99, 82, 80
+1(15), 77, 34, 55, 94, 97, 74, 71, 88, 84, 33, 71, 63, 97, 58, 64
+1(10), 92, 77, 93, 87, 37, 77, 43, 48, 65, 45
+1(10), 68, 30, 100, 90, 74, 33, 42, 57, 77, 31
+2(15:100), 73, 84, 39, 35, 60, 55, 65, 89, 77, 87, 58, 81, 67, 82, 36
+1(13), 43, 91, 67, 50, 99, 42, 85, 32, 30, 51, 74, 88, 40
+1(7), 30, 87, 97, 98, 81, 53, 56
+1(7), 69, 100, 34, 75, 71, 80, 92
+1(17), 41, 75, 58, 47, 48, 69, 45, 59, 87, 92, 99, 34, 45, 31, 59, 94, 90
+2(5:100), 45, 76, 35, 97, 70
+1(7), 87, 31, 48, 78, 87, 94, 54
+1(15), 47, 66, 72, 82, 95, 99, 49, 33, 69, 53, 50, 69, 53, 44, 42
+1(7), 38, 84, 44, 67, 64, 80, 42
+1(10), 47, 79, 47, 90, 69, 54, 37, 55, 69, 44
+1(13), 91, 45, 45, 74, 53, 52, 44, 61, 32, 51, 81, 70, 62
+1(7), 85, 59, 67, 87, 37, 36, 36
+2(8:100), 43, 97, 90, 73, 53, 88, 59, 37
+1(15), 39, 74, 43, 63, 45, 53, 81, 88, 37, 66, 97, 87, 98, 47, 45
+2(7:50), 98, 63, 89, 77, 49, 46, 68
+1(14), 58, 47, 87, 86, 90, 60, 49, 43, 66, 36, 30, 67, 72, 85
+2(10:100), 90, 89, 59, 54, 60, 77, 100, 62, 88, 48
+1(12), 45, 44, 77, 90, 69, 83, 48, 41, 39, 97, 45, 60
+1(8), 57, 100, 62, 37, 83, 37, 82, 45
+2(16:100), 42, 64, 44, 32, 64, 82, 60, 47, 78, 41, 89, 46, 71, 58, 76, 56
+1(8), 57, 50, 67, 75, 44, 63, 69, 55
+1(10), 40, 81, 68, 30, 66, 83, 73, 71, 40, 89
+1(7), 52, 35, 49, 59, 92, 84, 75
+1(9), 89, 32, 55, 69, 47, 59, 81, 76, 54
+2(4:100), 48, 86, 40, 75
+1(14), 55, 83, 94, 46, 44, 35, 83, 92, 87, 45, 45, 100, 91, 96
+1(14), 30, 74, 52, 49, 80, 75, 98, 87, 93, 80, 45, 88, 60, 40
+1(7), 44, 94, 50, 56, 84, 84, 54
+1(14), 81, 75, 58, 42, 36, 41, 53, 84, 99, 31, 81, 42, 80, 30
+1(5), 39, 73, 37, 91, 53
+1(6), 30, 36, 76, 57, 53, 77
+1(7), 68, 81, 39, 74, 54, 61, 52
+1(4), 34, 93, 73, 80
+1(11), 99, 48, 62, 37, 41, 40, 69, 56, 47, 41, 35
+1(11), 67, 41, 60, 69, 47, 34, 54, 92, 78, 79, 86
+1(20), 70, 95, 55, 99, 84, 76, 100, 30, 59, 70, 93, 32, 89, 85, 57, 94, 73, 91, 94, 92
+1(14), 59, 31, 80, 48, 79, 56, 51, 98, 31, 31, 84, 82, 85, 76
+1(14), 48, 78, 80, 73, 77, 51, 86, 61, 65, 84, 40, 32, 43, 99
+1(8), 47, 96, 49, 86, 70, 86, 77, 57
+1(7), 31, 46, 46, 34, 69, 80, 95
+1(6), 68, 64, 65, 31, 33, 78
+1(20), 73, 66, 60, 81, 81, 37, 48, 59, 67, 41, 74, 68, 80, 30, 42, 97, 40, 35, 55, 32
+1(8), 35, 36, 95, 79, 31, 64, 76, 58
+1(9), 85, 97, 83, 41, 46, 66, 48, 30, 82
+1(10), 58, 61, 50, 81, 64, 90, 58, 86, 96, 30
+1(9), 100, 36, 61, 52, 41, 47, 55, 88, 70
+1(14), 91, 89, 89, 83, 49, 48, 60, 98, 97, 84, 92, 49, 48, 45
+1(11), 82, 89, 43, 37, 57, 61, 92, 30, 99, 100, 37
+1(14), 49, 74, 78, 45, 100, 42, 77, 33, 69, 52, 32, 46, 30, 49
+1(9), 87, 99, 48, 51, 82, 71, 38, 58, 30
+1(7), 75, 65, 36, 47, 93, 36, 85
+1(8), 61, 79, 69, 67, 68, 32, 71, 58
+1(11), 60, 96, 42, 38, 71, 61, 55, 64, 79, 100, 66
+1(17), 35, 72, 32, 65, 65, 75, 60, 53, 33, 40, 78, 92, 31, 81, 70, 99, 96
+1(8), 71, 46, 39, 43, 30, 55, 91, 91
+1(11), 54, 70, 83, 44, 92, 96, 34, 39, 97, 88, 74
+1(16), 39, 41, 89, 71, 66, 100, 93, 72, 72, 84, 83, 73, 84, 93, 35, 74
+1(7), 92, 43, 64, 38, 34, 86, 73
+1(7), 61, 97, 47, 65, 63, 81, 95
+1(7), 51, 46, 77, 93, 78, 44, 81
+1(6), 33, 83, 81, 39, 65, 52
+2(5:50), 49, 60, 72, 48, 31
+1(12), 86, 38, 41, 81, 95, 93, 92, 55, 82, 74, 95, 93
+2(9:100), 70, 63, 100, 93, 85, 100, 87, 86, 87
+1(4), 63, 46, 69, 61
+1(13), 38, 93, 90, 52, 76, 49, 76, 91, 46, 63, 87, 83, 81
+1(8), 48, 33, 73, 39, 52, 81, 35, 48
+1(10), 38, 64, 73, 98, 73, 81, 30, 52, 82, 40
+1(15), 85, 71, 37, 82, 47, 78, 44, 70, 67, 92, 88, 76, 88, 86, 93
+1(20), 31, 54, 63, 74, 92, 50, 34, 89, 37, 72, 49, 45, 80, 73, 81, 70, 88, 56, 69, 87
+1(14), 70, 99, 51, 73, 99, 89, 52, 46, 82, 63, 41, 98, 60, 55
+2(4:50), 34, 59, 58, 83
+1(16), 77, 40, 34, 100, 86, 47, 38, 79, 100, 77, 42, 46, 33, 93, 65, 38
+1(9), 57, 60, 80, 72, 63, 43, 80, 100, 61
+1(10), 37, 89, 77, 38, 36, 72, 68, 34, 32, 57
+1(4), 56, 74, 46, 57
+1(8), 30, 42, 62, 38, 51, 75, 78, 58
+1(9), 91, 81, 94, 78, 82, 71, 97, 66, 58
+1(18), 33, 30, 91, 73, 54, 91, 61, 48, 39, 38, 71, 41, 84, 43, 99, 92, 71, 45
+1(8), 41, 82, 75, 81, 44, 49, 55, 87
+1(14), 92, 46, 87, 86, 52, 46, 55, 58, 91, 65, 91, 62, 52, 46
+1(7), 36, 72, 59, 48, 40, 89, 42
+2(10:100), 71, 95, 49, 66, 76, 67, 80, 62, 37, 40
+1(7), 76, 30, 55, 76, 41, 95, 51
+1(9), 57, 58, 35, 35, 48, 60, 45, 44, 57
+1(4), 61, 32, 88, 60
+1(10), 95, 76, 68, 87, 30, 50, 60, 62, 84, 63
+1(17), 34, 100, 76, 96, 35, 75, 49, 46, 77, 38, 88, 71, 64, 50, 56, 82, 71
+1(6), 58, 52, 34, 70, 97, 45
+1(8), 92, 85, 52, 57, 46, 37, 42, 54
+1(11), 46, 98, 39, 56, 48, 51, 47, 67, 78, 61, 76
+1(11), 99, 71, 94, 90, 78, 99, 94, 60, 38, 41, 41
+1(7), 39, 93, 79, 90, 75, 34, 72
+2(10:50), 67, 59, 94, 99, 34, 70, 73, 30, 57, 40
+1(7), 47, 74, 41, 93, 31, 63, 93
+1(10), 64, 36, 81, 98, 31, 38, 33, 50, 38, 45
+1(13), 60, 95, 93, 46, 64, 53, 76, 40, 59, 83, 100, 31, 47
+1(13), 80, 42, 85, 44, 61, 89, 88, 48, 94, 65, 92, 85, 36
+2(8:100), 83, 89, 58, 75, 84, 99, 33, 74
+1(15), 87, 65, 75, 89, 70, 54, 72, 68, 51, 36, 36, 66, 54, 56, 69
+2(7:50), 47, 65, 70, 95, 39, 54, 36
+1(10), 33, 40, 67, 74, 98, 78, 69, 46, 80, 85
+1(9), 76, 34, 31, 54, 85, 81, 99, 47, 72
+1(14), 69, 100, 49, 64, 88, 89, 84, 85, 44, 44, 51, 40, 77, 96
+2(8:50), 59, 42, 46, 63, 66, 48, 45, 38
+1(11), 83, 48, 34, 36, 91, 68, 68, 31, 100, 51, 86
+2(10:100), 35, 45, 65, 75, 95, 80, 69, 45, 51, 93
+1(7), 30, 49, 84, 69, 48, 68, 68
+1(9), 80, 44, 37, 35, 67, 64, 69, 100, 53
+1(10), 49, 31, 74, 92, 87, 45, 66, 67, 47, 91
+2(10:100), 68, 63, 71, 88, 75, 40, 32, 77, 91, 37
+1(5), 50, 93, 72, 30, 55
+1(6), 31, 67, 74, 91, 45, 99
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,78 @@
+/*
+ * packet.c - Implementation of the packet interface
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * You are welcome to use, share and improve this
+ * source file. You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "packet_lengths.h"
+#include "headers.h"
+#include "packet.h"
+
+/* Traces automatically drop the TCP checksum and urgent pointer, so header is 36 bytes */
+#define HEADER_SIZE 36
+int packets_processed = 0;
+
+#ifdef CONSTANT_PACKET
+unsigned int packet_index = 0;
+#endif
+
+char *
+get_next_packet ()
+{
+ char *packet;
+ unsigned int packet_length;
+
+ if (packets_processed == MAX_PACKETS)
+ {
+ fprintf (stderr, "All packets (%d) processed, recompile with larger MAX_PACKETS \n", MAX_PACKETS);
+ exit (1);
+ }
+
+ packet_length = (packet_lengths[packets_processed]);
+ if (packet_length < 40)
+ {
+ /* Should never happen */
+ fprintf (stderr, "Packet not large enough, increasing the size\n");
+ packet_length = 40;
+ }
+
+#ifdef CONSTANT_PACKET
+ /* Packets are stored in a continuous chunk in the memory, just change the index... */
+ packet = &packets[packet_index];
+ packet_index += packet_length;
+#else
+ /* Have to call malloc to create packet memory */
+ if ((packet = (char *) malloc (packet_length)) == NULL)
+ {
+ fprintf (stderr, "Not enough space to create packet data \n");
+ exit (1);
+ }
+
+ /* Copy the header information */
+ memcpy ((void *)packet, (void *)headers[packets_processed], HEADER_SIZE);
+#endif
+
+ packets_processed ++;
+ return packet;
+}
+
+/* For debugging purposes, to get the size of the packet_numberth packet */
+unsigned int
+packet_size (unsigned int packet_number)
+{
+ if (packet_number == MAX_PACKETS)
+ return (packet_lengths[packets_processed]);
+ else return (packet_lengths[packet_number]);
+}
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,22 @@
+/*
+ * packet.h - Interface for reading packet information
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * You are welcome to use, share and improve this
+ * source file. You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+#define MAX_PACKETS 1500
+
+char *get_next_packet ();
+
+/* For testing...*/
+unsigned int packet_size (unsigned int);
+
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/packet_lengths.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,10002 @@
+unsigned int packet_lengths[10000] = {
+60,
+1579,
+274,
+9552,
+256,
+56462,
+26624,
+256,
+6688,
+64768,
+42206,
+51431,
+538,
+2941,
+31750,
+6699,
+15012,
+17221,
+124,
+6465,
+63439,
+56970,
+40,
+256,
+6307,
+4350,
+118,
+9729,
+15012,
+56481,
+54751,
+61,
+5888,
+29700,
+4224,
+267,
+52,
+36699,
+1536,
+5122,
+4164,
+276,
+1839,
+57017,
+27951,
+35920,
+35330,
+17664,
+124,
+2048,
+19382,
+14588,
+7936,
+539,
+42206,
+63750,
+14394,
+1500,
+4864,
+53085,
+59962,
+56462,
+9809,
+42206,
+16384,
+551,
+20496,
+40,
+14342,
+3174,
+32006,
+256,
+27102,
+19537,
+61054,
+1500,
+9299,
+62464,
+46947,
+15012,
+17664,
+15360,
+1099,
+93,
+56418,
+19383,
+29196,
+256,
+10089,
+256,
+24882,
+513,
+249,
+24145,
+17664,
+56462,
+6178,
+56,
+256,
+36189,
+60076,
+35329,
+40,
+63271,
+28730,
+56462,
+1216,
+257,
+46998,
+257,
+10440,
+4864,
+63271,
+40,
+282,
+36563,
+20504,
+16384,
+14394,
+16384,
+256,
+56970,
+8654,
+47104,
+1792,
+10089,
+17664,
+47061,
+15012,
+56331,
+4864,
+20496,
+36119,
+123,
+10089,
+4128,
+14394,
+10344,
+1262,
+21328,
+39115,
+24655,
+56477,
+112,
+10468,
+11013,
+26724,
+58693,
+44933,
+35330,
+1500,
+4576,
+1863,
+42206,
+44608,
+12032,
+4130,
+35329,
+38912,
+44289,
+22096,
+47864,
+47616,
+13294,
+14394,
+56380,
+63103,
+62281,
+42206,
+13441,
+37312,
+19383,
+15012,
+31750,
+29197,
+15012,
+1024,
+261,
+55,
+63766,
+114,
+113,
+34117,
+43742,
+19724,
+6409,
+52708,
+4164,
+35329,
+17664,
+125,
+57375,
+53064,
+24645,
+7351,
+2120,
+953,
+2395,
+53306,
+514,
+61,
+51557,
+222,
+6177,
+124,
+4576,
+45370,
+56656,
+2048,
+60427,
+514,
+35329,
+1024,
+5127,
+39448,
+39276,
+50787,
+260,
+35329,
+19869,
+260,
+16794,
+56321,
+53760,
+14080,
+65055,
+514,
+514,
+17664,
+253,
+1912,
+2481,
+20496,
+1574,
+8630,
+37445,
+30982,
+282,
+39489,
+31515,
+46405,
+64513,
+118,
+256,
+538,
+65204,
+16384,
+12032,
+6176,
+42206,
+1866,
+43264,
+6212,
+304,
+57289,
+4576,
+20521,
+11470,
+2048,
+11834,
+1500,
+74,
+51800,
+23888,
+697,
+16384,
+11264,
+20485,
+4890,
+12422,
+35330,
+54459,
+16384,
+2048,
+263,
+222,
+50512,
+56416,
+5137,
+42206,
+56970,
+56951,
+28741,
+1024,
+651,
+35329,
+5959,
+10576,
+56418,
+2048,
+5632,
+774,
+65297,
+2816,
+1839,
+21140,
+56970,
+42994,
+64133,
+16384,
+2048,
+34560,
+23957,
+56970,
+56370,
+56832,
+6760,
+13518,
+65024,
+515,
+18245,
+53,
+43008,
+11034,
+18702,
+15012,
+14402,
+64197,
+56489,
+50899,
+32006,
+259,
+50899,
+42206,
+14394,
+63750,
+48935,
+56970,
+249,
+1099,
+8760,
+16384,
+1099,
+8760,
+50432,
+47180,
+56970,
+63750,
+4864,
+7493,
+28443,
+18768,
+259,
+32768,
+5120,
+6178,
+40,
+56,
+27816,
+56970,
+16384,
+12141,
+20496,
+40,
+5120,
+27102,
+259,
+16384,
+5120,
+26915,
+35329,
+353,
+27951,
+56970,
+16384,
+10089,
+15012,
+259,
+11050,
+44716,
+4576,
+8760,
+17664,
+5120,
+10089,
+39046,
+56,
+5120,
+6178,
+17664,
+1032,
+528,
+25601,
+15012,
+17664,
+16384,
+27102,
+15012,
+56,
+5632,
+20504,
+30726,
+46848,
+256,
+27102,
+14394,
+259,
+56,
+4608,
+5122,
+56979,
+56970,
+14592,
+5888,
+3000,
+58077,
+52,
+6400,
+56656,
+17664,
+48325,
+64000,
+17218,
+975,
+16384,
+7424,
+6798,
+37461,
+15012,
+61253,
+16384,
+8375,
+28928,
+8665,
+259,
+50699,
+1012,
+256,
+3589,
+20496,
+259,
+39106,
+1287,
+36604,
+31856,
+125,
+1738,
+256,
+36615,
+47917,
+32784,
+1039,
+16468,
+12362,
+8760,
+35329,
+49250,
+9728,
+57004,
+4421,
+31238,
+64000,
+30550,
+6394,
+21061,
+3840,
+51463,
+40381,
+9216,
+16384,
+21313,
+8760,
+15012,
+516,
+59504,
+1759,
+5970,
+15012,
+56199,
+4950,
+15012,
+576,
+31910,
+256,
+6688,
+67,
+15012,
+56970,
+56383,
+57358,
+1836,
+39106,
+38970,
+42206,
+39807,
+24912,
+16384,
+21912,
+256,
+26481,
+20496,
+56970,
+59102,
+17101,
+65194,
+50268,
+16384,
+56161,
+35330,
+35329,
+17664,
+651,
+4157,
+47429,
+18949,
+5221,
+35329,
+119,
+3840,
+18946,
+17520,
+260,
+5632,
+25547,
+1275,
+2048,
+26981,
+29319,
+14394,
+32512,
+2816,
+41897,
+35330,
+4580,
+28218,
+52,
+1615,
+3847,
+651,
+15012,
+517,
+1784,
+263,
+26915,
+42206,
+651,
+24539,
+19258,
+261,
+30214,
+7312,
+19960,
+15012,
+17664,
+37307,
+15012,
+51918,
+250,
+6173,
+30621,
+3847,
+56161,
+6177,
+60,
+31750,
+512,
+26724,
+51301,
+24912,
+35439,
+10330,
+3840,
+2941,
+17664,
+256,
+20504,
+261,
+1778,
+4164,
+15012,
+17664,
+249,
+8708,
+58596,
+27984,
+56970,
+261,
+1550,
+11116,
+3771,
+20504,
+10485,
+2048,
+56970,
+32581,
+31750,
+2048,
+13058,
+2390,
+56970,
+256,
+2390,
+8665,
+17664,
+46001,
+256,
+17622,
+517,
+256,
+7444,
+127,
+38213,
+10407,
+1032,
+36421,
+31238,
+4950,
+21562,
+1572,
+23993,
+47681,
+42206,
+256,
+36949,
+44368,
+518,
+56456,
+31245,
+39248,
+56970,
+34629,
+22518,
+17622,
+14160,
+22737,
+13560,
+50843,
+4130,
+33228,
+1681,
+80,
+29786,
+18402,
+31719,
+1702,
+35788,
+35330,
+1690,
+31750,
+2048,
+51712,
+22077,
+518,
+16384,
+256,
+1360,
+6736,
+8760,
+17664,
+1620,
+263,
+18968,
+13388,
+20496,
+35329,
+1866,
+58077,
+17664,
+8760,
+17664,
+41,
+24025,
+42206,
+17391,
+58,
+1769,
+30214,
+416,
+13340,
+56970,
+118,
+18949,
+23888,
+35329,
+16384,
+3840,
+6760,
+20496,
+519,
+124,
+256,
+56400,
+53562,
+17664,
+124,
+3072,
+5146,
+52,
+1536,
+7424,
+1222,
+263,
+3328,
+46874,
+51,
+27951,
+4130,
+42206,
+519,
+1500,
+21153,
+6178,
+42206,
+119,
+16077,
+58,
+15283,
+6144,
+4164,
+48197,
+1024,
+222,
+22096,
+1951,
+16384,
+26112,
+5200,
+17664,
+53672,
+4171,
+124,
+35608,
+24539,
+4164,
+42206,
+13562,
+1024,
+10496,
+6307,
+17520,
+1500,
+125,
+5632,
+8200,
+46149,
+5632,
+28417,
+56970,
+20496,
+52,
+1679,
+31845,
+65278,
+16384,
+6346,
+39130,
+56970,
+17680,
+119,
+2500,
+300,
+7832,
+4171,
+35329,
+30470,
+3584,
+256,
+43559,
+56523,
+15012,
+22808,
+124,
+282,
+40882,
+2993,
+42810,
+17664,
+4497,
+10496,
+56161,
+51,
+20496,
+15012,
+56645,
+3840,
+6699,
+24912,
+35329,
+124,
+20496,
+17520,
+17664,
+31750,
+282,
+31488,
+53880,
+35329,
+28730,
+25951,
+24912,
+42206,
+30726,
+274,
+520,
+10496,
+65024,
+35329,
+8760,
+10324,
+266,
+655,
+27951,
+13136,
+7814,
+59311,
+256,
+9084,
+20496,
+56970,
+17664,
+30470,
+2560,
+56970,
+41,
+256,
+49664,
+4130,
+521,
+256,
+10089,
+521,
+31750,
+2048,
+7426,
+2395,
+2384,
+14829,
+64256,
+5381,
+47334,
+521,
+1775,
+8760,
+1572,
+8197,
+8760,
+39168,
+47386,
+15012,
+62396,
+1572,
+14394,
+56331,
+5120,
+27102,
+36755,
+3007,
+256,
+8760,
+4864,
+28607,
+56970,
+14342,
+5120,
+12032,
+1500,
+5120,
+20970,
+15012,
+62475,
+54,
+10089,
+47420,
+56970,
+26927,
+7680,
+2388,
+56979,
+13136,
+50490,
+36303,
+256,
+60696,
+56970,
+17664,
+47616,
+38827,
+17664,
+263,
+45639,
+47828,
+256,
+4130,
+4107,
+5120,
+49878,
+63750,
+353,
+8760,
+521,
+50432,
+19968,
+6208,
+35329,
+56331,
+159,
+56970,
+2511,
+48,
+5343,
+64551,
+40,
+1207,
+22586,
+60940,
+56970,
+16384,
+30726,
+54864,
+17664,
+99,
+11013,
+32730,
+17680,
+63750,
+20496,
+15012,
+63673,
+36578,
+49400,
+732,
+159,
+56970,
+19428,
+30197,
+256,
+61005,
+15012,
+266,
+64006,
+9216,
+5122,
+22934,
+42206,
+266,
+17664,
+80,
+35329,
+40,
+118,
+1035,
+1058,
+15012,
+44869,
+40,
+31750,
+50688,
+256,
+15012,
+124,
+9984,
+8207,
+60866,
+522,
+6699,
+57199,
+31494,
+14030,
+8079,
+42206,
+17664,
+16384,
+256,
+51514,
+34824,
+32784,
+43637,
+11520,
+7287,
+21174,
+47584,
+256,
+31502,
+8760,
+42206,
+119,
+20594,
+13136,
+2765,
+120,
+4160,
+261,
+2048,
+1082,
+32784,
+522,
+8582,
+35608,
+47616,
+56478,
+256,
+3106,
+46829,
+17664,
+522,
+16384,
+512,
+4128,
+124,
+56951,
+36154,
+35329,
+56342,
+27904,
+1163,
+6166,
+35329,
+57793,
+27238,
+512,
+24212,
+56970,
+37411,
+1662,
+256,
+18178,
+27951,
+4130,
+23715,
+120,
+4608,
+6699,
+655,
+48384,
+4351,
+40,
+48128,
+263,
+11017,
+56656,
+52480,
+59604,
+2096,
+8464,
+35330,
+1557,
+64065,
+40283,
+16384,
+22914,
+14416,
+2984,
+61238,
+42206,
+56410,
+26297,
+256,
+5961,
+7504,
+267,
+56970,
+17664,
+21607,
+51716,
+35330,
+111,
+40077,
+27205,
+6077,
+28672,
+34665,
+2534,
+35329,
+256,
+267,
+28730,
+59689,
+6869,
+35330,
+17664,
+16384,
+768,
+11780,
+4130,
+256,
+11856,
+42206,
+43670,
+115,
+3072,
+27951,
+60752,
+3086,
+16384,
+38144,
+20816,
+35329,
+16384,
+8080,
+7931,
+14301,
+51716,
+5325,
+51525,
+122,
+260,
+2941,
+11482,
+51542,
+16849,
+59216,
+37888,
+6178,
+56901,
+2048,
+58077,
+35330,
+65525,
+32262,
+2816,
+18871,
+33053,
+43,
+655,
+42206,
+119,
+15012,
+3212,
+16384,
+58112,
+17440,
+8684,
+2816,
+6699,
+64771,
+15012,
+35329,
+3237,
+256,
+22709,
+56970,
+3262,
+48,
+252,
+21251,
+4288,
+56970,
+69,
+52992,
+256,
+1165,
+15283,
+4130,
+4096,
+256,
+11022,
+42206,
+40997,
+19978,
+15012,
+32006,
+5310,
+42,
+42206,
+16384,
+6912,
+9473,
+42206,
+23365,
+5632,
+655,
+12803,
+15622,
+50047,
+28730,
+17664,
+11034,
+525,
+1612,
+23376,
+20496,
+1686,
+51,
+269,
+1500,
+9984,
+36839,
+31245,
+42206,
+31750,
+25858,
+6774,
+21840,
+17664,
+1500,
+2388,
+35329,
+56901,
+16384,
+1642,
+1360,
+54751,
+24561,
+3072,
+15012,
+269,
+47660,
+87,
+18032,
+71,
+80,
+14596,
+11017,
+27142,
+269,
+17477,
+1662,
+25344,
+2363,
+42206,
+5120,
+14080,
+5127,
+65076,
+49201,
+125,
+3328,
+13294,
+20496,
+35329,
+25214,
+256,
+11530,
+42206,
+1163,
+6177,
+2048,
+58077,
+20497,
+3558,
+1839,
+35330,
+4096,
+63267,
+33244,
+51719,
+40438,
+42206,
+17856,
+59392,
+576,
+3632,
+3637,
+12288,
+26704,
+17446,
+1662,
+27461,
+10446,
+256,
+42206,
+14394,
+45332,
+31528,
+49210,
+17664,
+29446,
+39760,
+56331,
+1099,
+35330,
+27648,
+8760,
+26880,
+31245,
+51002,
+63750,
+369,
+46976,
+3048,
+19386,
+42206,
+11264,
+12711,
+24752,
+16384,
+256,
+8760,
+56970,
+1500,
+23296,
+12809,
+27102,
+35330,
+36404,
+494,
+56979,
+36270,
+47734,
+15012,
+56462,
+47751,
+42206,
+1639,
+24836,
+27102,
+3397,
+36266,
+256,
+336,
+16001,
+20736,
+24836,
+54016,
+6178,
+56970,
+40,
+1723,
+20496,
+41728,
+6760,
+56979,
+65201,
+16384,
+56656,
+58880,
+6688,
+20496,
+15012,
+10089,
+526,
+5888,
+47785,
+35330,
+63750,
+34599,
+4129,
+4864,
+36524,
+17520,
+3909,
+56,
+256,
+5122,
+20496,
+56970,
+6869,
+13830,
+11008,
+35330,
+1360,
+40263,
+56420,
+17330,
+1163,
+47819,
+1024,
+26877,
+50501,
+63744,
+23957,
+15012,
+122,
+1714,
+256,
+35091,
+18757,
+37573,
+49920,
+20496,
+17664,
+256,
+21288,
+20496,
+256,
+44368,
+41,
+52,
+1280,
+25773,
+256,
+32262,
+32961,
+41285,
+1779,
+256,
+57017,
+20504,
+78,
+17664,
+3979,
+42206,
+44294,
+35586,
+15984,
+33866,
+7936,
+62457,
+15012,
+256,
+24389,
+1539,
+1024,
+44201,
+8011,
+30265,
+7232,
+3840,
+1792,
+3630,
+43870,
+56971,
+124,
+18970,
+538,
+56971,
+14661,
+1662,
+21504,
+8661,
+256,
+256,
+6346,
+19728,
+10478,
+280,
+6960,
+56971,
+30726,
+35073,
+256,
+1024,
+32784,
+17664,
+16384,
+41,
+58,
+17664,
+31494,
+44544,
+4351,
+16384,
+55552,
+8760,
+1686,
+19761,
+12803,
+42206,
+513,
+1648,
+27156,
+42206,
+513,
+1653,
+6869,
+35585,
+1500,
+31750,
+256,
+13058,
+17406,
+16384,
+65282,
+257,
+43008,
+256,
+11009,
+34128,
+314,
+56432,
+27331,
+20496,
+35585,
+8976,
+4864,
+9478,
+2466,
+58,
+48307,
+538,
+15012,
+1622,
+52584,
+45294,
+43870,
+16384,
+16640,
+34628,
+3085,
+4130,
+23109,
+56576,
+256,
+27102,
+56332,
+4864,
+15012,
+31761,
+256,
+27102,
+62021,
+33982,
+12071,
+49862,
+9263,
+47927,
+24645,
+10089,
+513,
+48027,
+10089,
+513,
+37888,
+113,
+56971,
+51399,
+31494,
+5120,
+63271,
+56971,
+16384,
+31855,
+20304,
+10345,
+27207,
+24576,
+63271,
+20504,
+257,
+10345,
+4432,
+27102,
+42206,
+53061,
+1024,
+11524,
+20496,
+16896,
+10429,
+256,
+1059,
+20496,
+489,
+4537,
+20496,
+17664,
+4864,
+47373,
+32069,
+1368,
+20504,
+23598,
+62621,
+65286,
+258,
+63813,
+49920,
+256,
+27102,
+35586,
+29702,
+5120,
+27102,
+35585,
+3122,
+24576,
+6178,
+7443,
+63750,
+44294,
+42206,
+9603,
+16384,
+5120,
+21504,
+56979,
+10924,
+17664,
+31494,
+14862,
+7620,
+42206,
+63750,
+48053,
+45062,
+5120,
+15012,
+38783,
+19200,
+15757,
+15012,
+1719,
+256,
+51716,
+33018,
+258,
+17664,
+34560,
+2466,
+47427,
+42206,
+49668,
+24576,
+3072,
+49350,
+4130,
+135,
+1638,
+1262,
+36578,
+11498,
+51730,
+39183,
+680,
+49152,
+1765,
+24576,
+11290,
+18334,
+22570,
+35586,
+27973,
+52,
+1105,
+42,
+15012,
+5239,
+63750,
+19387,
+39846,
+35586,
+249,
+16032,
+56979,
+35586,
+10496,
+59595,
+36421,
+256,
+11017,
+27102,
+256,
+10089,
+28730,
+120,
+1099,
+4154,
+17664,
+249,
+289,
+15012,
+63750,
+24836,
+8760,
+56332,
+27102,
+35585,
+3157,
+4864,
+4130,
+4864,
+48235,
+35585,
+40,
+24836,
+52867,
+14342,
+512,
+63271,
+36078,
+36208,
+84,
+1216,
+41808,
+733,
+123,
+353,
+27102,
+15012,
+48197,
+16384,
+2048,
+58298,
+32736,
+4864,
+35585,
+96,
+841,
+47696,
+55621,
+33828,
+4864,
+14394,
+10746,
+114,
+353,
+10089,
+9190,
+42239,
+125,
+512,
+353,
+37707,
+35586,
+17664,
+1570,
+280,
+20480,
+41770,
+820,
+13398,
+1629,
+45544,
+43578,
+31750,
+12032,
+20504,
+31750,
+256,
+4327,
+51,
+15012,
+853,
+58077,
+55866,
+5445,
+50552,
+1755,
+57,
+10510,
+14336,
+48698,
+17664,
+41216,
+8201,
+11268,
+53085,
+56511,
+48607,
+39424,
+7789,
+4224,
+16384,
+25600,
+43148,
+259,
+32837,
+25242,
+46860,
+42222,
+4164,
+40,
+16384,
+31761,
+256,
+90,
+63,
+11119,
+14394,
+56971,
+10264,
+13760,
+259,
+124,
+32662,
+14336,
+17520,
+56508,
+22272,
+19968,
+17664,
+25626,
+4129,
+35585,
+29446,
+38981,
+28730,
+16384,
+4432,
+60808,
+59042,
+1003,
+42013,
+4129,
+28741,
+256,
+10752,
+123,
+27951,
+720,
+1500,
+31249,
+21504,
+11034,
+27951,
+52558,
+42206,
+13736,
+361,
+11008,
+20496,
+42206,
+15012,
+1024,
+1410,
+4164,
+21802,
+58769,
+58962,
+58077,
+61572,
+31750,
+11911,
+20239,
+9285,
+2366,
+21646,
+62522,
+124,
+27136,
+35585,
+38252,
+3923,
+901,
+35585,
+1362,
+38400,
+17664,
+21639,
+45326,
+8760,
+58539,
+222,
+1500,
+20737,
+35585,
+47872,
+56951,
+56462,
+2246,
+35585,
+256,
+20496,
+11077,
+57631,
+19678,
+25773,
+260,
+16384,
+1500,
+1280,
+40,
+256,
+25773,
+15012,
+8150,
+2048,
+62690,
+44101,
+8167,
+260,
+517,
+256,
+20504,
+6725,
+124,
+56577,
+28674,
+42309,
+1621,
+65063,
+8962,
+17664,
+56418,
+2609,
+58698,
+6159,
+64774,
+18178,
+1222,
+118,
+1327,
+35585,
+457,
+49563,
+252,
+35074,
+28730,
+1333,
+37378,
+256,
+36930,
+10468,
+508,
+16384,
+656,
+6178,
+1280,
+64000,
+22064,
+21316,
+10468,
+8218,
+1715,
+2048,
+56951,
+25294,
+1280,
+1391,
+37946,
+31381,
+125,
+67,
+4288,
+1422,
+121,
+21333,
+32768,
+35586,
+1703,
+3088,
+35585,
+20104,
+261,
+16384,
+1453,
+517,
+35585,
+12421,
+31750,
+256,
+2808,
+58,
+261,
+29758,
+222,
+28730,
+51055,
+56832,
+56971,
+17664,
+38656,
+256,
+2388,
+39444,
+42206,
+2539,
+124,
+778,
+6699,
+12229,
+22750,
+35586,
+16384,
+256,
+1360,
+503,
+6178,
+1500,
+1709,
+4130,
+262,
+10340,
+42206,
+1566,
+538,
+44368,
+46661,
+8192,
+56971,
+3397,
+1280,
+24451,
+59188,
+15012,
+262,
+21353,
+53187,
+16568,
+1536,
+290,
+32826,
+1664,
+27005,
+39943,
+65221,
+8360,
+5888,
+31380,
+26411,
+262,
+40,
+32448,
+25088,
+53120,
+50385,
+12544,
+1222,
+56971,
+47182,
+31750,
+8249,
+24539,
+15012,
+282,
+64212,
+6159,
+56971,
+56518,
+30470,
+60269,
+14394,
+17664,
+16384,
+8704,
+3847,
+6345,
+43600,
+35585,
+16384,
+2048,
+652,
+65201,
+17664,
+13754,
+15012,
+1760,
+8798,
+28730,
+42206,
+1615,
+256,
+6346,
+3605,
+14394,
+124,
+29440,
+33399,
+20816,
+1129,
+31246,
+228,
+35586,
+1923,
+1500,
+30726,
+1836,
+652,
+57199,
+31238,
+1098,
+28060,
+5712,
+42565,
+41276,
+15910,
+1453,
+33433,
+4130,
+35585,
+16384,
+39680,
+80,
+25951,
+16794,
+58181,
+31494,
+6699,
+20496,
+16384,
+29319,
+55990,
+3106,
+53683,
+42206,
+16384,
+256,
+45417,
+65194,
+17664,
+15872,
+11034,
+10720,
+58,
+1774,
+26724,
+656,
+7504,
+35585,
+16384,
+1663,
+1165,
+29818,
+35699,
+4164,
+8760,
+135,
+256,
+42206,
+14342,
+52,
+3589,
+14333,
+30001,
+45970,
+2369,
+1091,
+30080,
+35586,
+10365,
+123,
+6688,
+1082,
+23632,
+15012,
+2199,
+10565,
+56520,
+49299,
+8417,
+15012,
+56355,
+45662,
+12032,
+80,
+14394,
+11333,
+16384,
+13568,
+28820,
+56971,
+30726,
+61175,
+20496,
+139,
+42,
+264,
+2278,
+32006,
+106,
+33796,
+42206,
+19484,
+42206,
+6207,
+1536,
+28496,
+17664,
+63750,
+4864,
+16794,
+35586,
+16384,
+27015,
+4130,
+14394,
+1500,
+256,
+27102,
+256,
+56979,
+56971,
+5120,
+274,
+6204,
+53760,
+48389,
+6177,
+52736,
+25626,
+19388,
+7464,
+32006,
+61175,
+15632,
+521,
+1776,
+353,
+521,
+17664,
+9163,
+353,
+15012,
+48140,
+61175,
+14394,
+19200,
+256,
+48458,
+56971,
+3211,
+56979,
+14736,
+40,
+14342,
+256,
+1262,
+27102,
+4164,
+16384,
+5120,
+12041,
+31087,
+20496,
+19489,
+125,
+45,
+538,
+44,
+15012,
+35586,
+44,
+301,
+15012,
+35586,
+1334,
+15012,
+249,
+4864,
+1688,
+35586,
+1574,
+4864,
+49950,
+256,
+56979,
+43589,
+1574,
+1216,
+35408,
+15012,
+1677,
+11034,
+30550,
+56971,
+16384,
+256,
+353,
+20857,
+42206,
+521,
+31750,
+8960,
+13568,
+40528,
+42206,
+17664,
+124,
+256,
+49,
+4224,
+35586,
+45469,
+16384,
+256,
+51723,
+28544,
+2497,
+16384,
+14848,
+2304,
+6869,
+265,
+97,
+11264,
+17664,
+4171,
+35585,
+22645,
+59648,
+1801,
+24084,
+56971,
+27200,
+2547,
+521,
+56971,
+7439,
+15012,
+17664,
+1361,
+5122,
+12329,
+2015,
+1572,
+31750,
+6699,
+15005,
+32080,
+2581,
+1622,
+35952,
+4112,
+42206,
+55552,
+2609,
+35393,
+35585,
+58949,
+1649,
+4888,
+2467,
+42206,
+38144,
+1208,
+17218,
+56971,
+2633,
+123,
+4352,
+2048,
+656,
+47184,
+56971,
+62208,
+6798,
+17664,
+5248,
+25620,
+30214,
+25601,
+51514,
+35585,
+40,
+39680,
+25626,
+2384,
+8760,
+31165,
+30726,
+40308,
+15113,
+28730,
+35586,
+30726,
+538,
+42206,
+42206,
+2747,
+119,
+63750,
+6918,
+6177,
+56971,
+2773,
+45972,
+1031,
+13058,
+42206,
+56475,
+965,
+26724,
+2048,
+14665,
+35585,
+249,
+2962,
+35453,
+35408,
+35585,
+122,
+1762,
+11034,
+49664,
+42206,
+31750,
+2481,
+58118,
+42206,
+30533,
+16384,
+7351,
+41728,
+7789,
+16223,
+4531,
+58,
+29702,
+1280,
+6178,
+253,
+20737,
+64518,
+16925,
+16384,
+3584,
+8080,
+2986,
+56418,
+2048,
+768,
+16829,
+32080,
+1280,
+21374,
+17664,
+1361,
+12317,
+49240,
+2048,
+8207,
+50142,
+20496,
+16384,
+19975,
+6307,
+6177,
+523,
+256,
+1897,
+6465,
+17664,
+13732,
+2072,
+5325,
+523,
+37278,
+5325,
+21573,
+111,
+47836,
+56491,
+125,
+58819,
+57567,
+13312,
+1077,
+42206,
+3072,
+57304,
+15012,
+17664,
+6346,
+45417,
+42206,
+37892,
+5781,
+41797,
+249,
+4864,
+33070,
+3077,
+15012,
+249,
+27005,
+56979,
+56971,
+63750,
+1099,
+57199,
+268,
+30726,
+31311,
+50304,
+17664,
+120,
+63271,
+33506,
+3101,
+1500,
+256,
+6178,
+56979,
+5120,
+56979,
+17664,
+4864,
+31087,
+14394,
+6469,
+9116,
+19390,
+11348,
+14342,
+256,
+10846,
+8760,
+11716,
+3254,
+1024,
+40167,
+268,
+9797,
+6346,
+55691,
+33605,
+1571,
+61175,
+56122,
+22853,
+256,
+61175,
+6175,
+268,
+57,
+256,
+48715,
+15012,
+376,
+51712,
+43066,
+18820,
+10345,
+36137,
+105,
+33792,
+8760,
+17664,
+96,
+44,
+7174,
+26167,
+13882,
+5120,
+10089,
+8005,
+1571,
+15143,
+56971,
+1790,
+15012,
+43357,
+353,
+27102,
+15012,
+36373,
+11154,
+256,
+5961,
+20496,
+4164,
+35586,
+24901,
+116,
+24576,
+1091,
+6380,
+10810,
+40,
+3335,
+901,
+42206,
+524,
+12470,
+124,
+4608,
+256,
+56979,
+15012,
+268,
+16384,
+80,
+19390,
+24820,
+13398,
+3585,
+58298,
+58,
+124,
+36318,
+55045,
+124,
+37889,
+56971,
+124,
+2048,
+17664,
+10249,
+44428,
+17664,
+22570,
+5684,
+1304,
+122,
+13568,
+8192,
+29204,
+6177,
+525,
+15622,
+256,
+12218,
+42206,
+16384,
+266,
+26481,
+49210,
+31813,
+16384,
+256,
+28999,
+7201,
+42206,
+3373,
+3648,
+10392,
+8758,
+13991,
+15745,
+40859,
+44289,
+269,
+52293,
+5120,
+20496,
+364,
+8576,
+1500,
+53454,
+1288,
+16829,
+19795,
+4130,
+3430,
+16559,
+36352,
+8197,
+20504,
+3435,
+1500,
+45568,
+3271,
+59255,
+56971,
+17664,
+252,
+36578,
+1024,
+15012,
+1617,
+63271,
+4666,
+17664,
+15360,
+2048,
+14658,
+35586,
+1567,
+31744,
+10752,
+19436,
+1242,
+32006,
+282,
+65050,
+33070,
+20504,
+50471,
+32000,
+14394,
+3277,
+1099,
+15012,
+3281,
+19390,
+42206,
+3284,
+48829,
+35586,
+9077,
+10089,
+35586,
+19390,
+4164,
+3545,
+152,
+6178,
+16384,
+45863,
+16384,
+1262,
+15012,
+56332,
+24836,
+37552,
+269,
+56,
+353,
+14394,
+31750,
+56971,
+249,
+27102,
+3051,
+20496,
+16384,
+10089,
+55365,
+1262,
+29312,
+40,
+19200,
+19391,
+35586,
+353,
+58,
+256,
+28114,
+3581,
+48955,
+3585,
+99,
+24836,
+48967,
+15012,
+17664,
+10089,
+58949,
+256,
+22439,
+35586,
+62476,
+4130,
+17664,
+9533,
+512,
+3602,
+63750,
+1677,
+63271,
+34874,
+24663,
+6699,
+49152,
+17165,
+17956,
+2048,
+8981,
+22586,
+3840,
+1032,
+56413,
+35585,
+52,
+6699,
+15012,
+1500,
+124,
+52992,
+64204,
+15012,
+35586,
+16384,
+64071,
+47880,
+27102,
+20504,
+270,
+16384,
+34560,
+35408,
+62522,
+3726,
+10258,
+7622,
+25626,
+43077,
+31719,
+4164,
+10401,
+35585,
+56460,
+135,
+536,
+38912,
+19258,
+77,
+65483,
+42055,
+512,
+526,
+56971,
+7878,
+84,
+13568,
+18256,
+46405,
+19477,
+14394,
+124,
+12218,
+10136,
+16384,
+56,
+15012,
+17664,
+25406,
+4666,
+17664,
+15012,
+252,
+36677,
+36578,
+31750,
+256,
+10094,
+58,
+15012,
+17664,
+16384,
+35586,
+44680,
+64000,
+45568,
+30017,
+51959,
+8424,
+125,
+11008,
+61100,
+17664,
+120,
+902,
+63439,
+35586,
+2048,
+17520,
+22016,
+2562,
+42206,
+256,
+11780,
+1059,
+40,
+125,
+512,
+24120,
+6173,
+9649,
+1500,
+13317,
+124,
+1654,
+38144,
+2048,
+1024,
+17856,
+6160,
+249,
+902,
+42206,
+63439,
+56972,
+41,
+26724,
+96,
+46661,
+115,
+512,
+6688,
+35997,
+20496,
+17664,
+8192,
+20504,
+256,
+17664,
+47647,
+35841,
+1695,
+1024,
+7424,
+17619,
+4224,
+15012,
+56972,
+10319,
+1124,
+28218,
+512,
+179,
+256,
+1597,
+65082,
+53,
+256,
+62006,
+33920,
+42206,
+1500,
+80,
+50402,
+1024,
+43870,
+20504,
+124,
+4096,
+1098,
+46112,
+11988,
+58,
+122,
+14848,
+4096,
+6960,
+23376,
+42206,
+137,
+1147,
+31311,
+56972,
+60132,
+125,
+6688,
+38162,
+56972,
+17664,
+10086,
+56972,
+54853,
+6699,
+56972,
+16384,
+52,
+13440,
+20504,
+35841,
+31750,
+8704,
+4350,
+10317,
+16384,
+8425,
+20504,
+16384,
+19391,
+42206,
+71,
+56979,
+42206,
+63750,
+8760,
+17664,
+48719,
+56972,
+16384,
+6178,
+5120,
+56333,
+529,
+61859,
+35842,
+1028,
+10346,
+19391,
+42206,
+56333,
+1099,
+42206,
+56333,
+256,
+56979,
+17664,
+30470,
+9998,
+7504,
+52172,
+14394,
+58693,
+5120,
+1222,
+15012,
+17664,
+120,
+24836,
+6145,
+45370,
+31750,
+15012,
+12357,
+14342,
+25651,
+56972,
+20942,
+38895,
+42352,
+43967,
+15012,
+343,
+25343,
+11034,
+49206,
+35842,
+357,
+249,
+16763,
+56972,
+17664,
+4130,
+56972,
+62208,
+49240,
+65188,
+1573,
+13882,
+366,
+256,
+9729,
+42042,
+37707,
+56972,
+30464,
+4864,
+6869,
+1283,
+6394,
+56972,
+23350,
+1360,
+42885,
+9631,
+6346,
+36684,
+16472,
+55065,
+14394,
+10346,
+2469,
+5712,
+61545,
+1024,
+261,
+49280,
+47669,
+30464,
+42206,
+25580,
+56972,
+118,
+256,
+6688,
+4111,
+15012,
+257,
+31750,
+256,
+6409,
+11722,
+26170,
+476,
+1500,
+301,
+6970,
+23109,
+56545,
+31750,
+25603,
+42206,
+256,
+20484,
+62522,
+10372,
+1624,
+256,
+3840,
+6346,
+20916,
+524,
+49920,
+25626,
+4224,
+546,
+31238,
+2816,
+51770,
+58,
+35842,
+52,
+6021,
+256,
+51463,
+39272,
+4351,
+16384,
+39272,
+35842,
+252,
+512,
+15012,
+2048,
+50000,
+48186,
+17664,
+8304,
+514,
+56133,
+56600,
+51777,
+47685,
+16384,
+6688,
+4351,
+34814,
+1024,
+14908,
+6212,
+56972,
+7704,
+18859,
+19392,
+19781,
+1638,
+45417,
+6178,
+42206,
+30982,
+1024,
+13576,
+51823,
+29697,
+42435,
+28730,
+32006,
+1024,
+260,
+3328,
+14394,
+60,
+3840,
+55270,
+58,
+57755,
+41984,
+32031,
+514,
+56320,
+16599,
+59912,
+56457,
+9472,
+2941,
+124,
+256,
+6699,
+36124,
+754,
+56614,
+56972,
+1280,
+6869,
+17664,
+125,
+2048,
+1500,
+15012,
+1774,
+6400,
+64595,
+35842,
+249,
+8760,
+56333,
+256,
+6178,
+23552,
+56972,
+16384,
+4864,
+8760,
+1500,
+19392,
+35842,
+249,
+1099,
+35841,
+52745,
+768,
+27102,
+20496,
+17664,
+53504,
+353,
+56979,
+2304,
+26373,
+56979,
+56333,
+10089,
+60741,
+12289,
+249,
+8760,
+17664,
+159,
+10089,
+8784,
+15012,
+14413,
+14342,
+6346,
+32736,
+40,
+46642,
+20483,
+42294,
+20496,
+17664,
+1725,
+256,
+9697,
+17664,
+58624,
+53031,
+10346,
+25936,
+1500,
+1642,
+42206,
+1537,
+94,
+4130,
+20235,
+20496,
+17664,
+36032,
+1341,
+17218,
+56972,
+17664,
+252,
+453,
+26981,
+58,
+886,
+4585,
+9217,
+20496,
+892,
+56950,
+38336,
+4164,
+35841,
+6409,
+2452,
+10328,
+42206,
+124,
+159,
+1165,
+14658,
+20496,
+15012,
+28485,
+56,
+57243,
+8888,
+40253,
+27984,
+58,
+56972,
+1624,
+35841,
+16384,
+56,
+417,
+1262,
+40214,
+49494,
+959,
+1688,
+720,
+9029,
+125,
+256,
+41434,
+27005,
+15012,
+1291,
+28999,
+57308,
+35842,
+1280,
+11072,
+41434,
+1776,
+29161,
+15012,
+16894,
+29958,
+265,
+56972,
+19264,
+51723,
+516,
+7453,
+106,
+8668,
+27136,
+8926,
+42206,
+16384,
+62134,
+282,
+6688,
+15012,
+16384,
+10752,
+57199,
+260,
+6869,
+17664,
+1024,
+56972,
+18944,
+27005,
+6667,
+19393,
+28730,
+17664,
+47898,
+35842,
+25925,
+16384,
+1099,
+39991,
+43088,
+15012,
+16384,
+61780,
+20504,
+56348,
+5888,
+282,
+42,
+15012,
+1500,
+256,
+16666,
+15012,
+1500,
+2048,
+28447,
+35842,
+34304,
+49502,
+35842,
+1500,
+13312,
+56979,
+1500,
+42206,
+56333,
+4130,
+16384,
+19393,
+516,
+256,
+14394,
+123,
+61175,
+56144,
+256,
+14394,
+27219,
+1098,
+327,
+1262,
+4130,
+56333,
+256,
+56979,
+1482,
+8918,
+63271,
+35842,
+1557,
+56979,
+1262,
+26724,
+261,
+22081,
+36007,
+1024,
+60240,
+6706,
+27229,
+50401,
+3072,
+56979,
+8760,
+42206,
+5120,
+55079,
+38981,
+2905,
+56972,
+16384,
+20720,
+35841,
+16384,
+40960,
+6688,
+56979,
+3942,
+56972,
+628,
+31750,
+5120,
+30466,
+42160,
+1099,
+17025,
+517,
+30214,
+256,
+60473,
+39604,
+42206,
+17664,
+4352,
+7168,
+37892,
+42206,
+38725,
+1538,
+256,
+20504,
+17664,
+125,
+2560,
+35079,
+3976,
+14394,
+30211,
+31750,
+3051,
+1688,
+29568,
+56972,
+125,
+78,
+57,
+6179,
+39692,
+8829,
+282,
+6177,
+45125,
+10402,
+31750,
+113,
+20504,
+1462,
+56339,
+62208,
+51463,
+11524,
+20504,
+15012,
+124,
+2048,
+35152,
+1500,
+13568,
+37889,
+1518,
+8218,
+63627,
+3840,
+20496,
+21573,
+64204,
+11032,
+39846,
+56972,
+63750,
+16641,
+13882,
+29253,
+1777,
+1285,
+33253,
+14394,
+49221,
+1539,
+6699,
+59392,
+6240,
+12488,
+119,
+1777,
+1866,
+149,
+4129,
+518,
+40,
+30981,
+256,
+56161,
+14394,
+35841,
+1738,
+37039,
+8364,
+41530,
+123,
+256,
+370,
+15012,
+226,
+16384,
+6346,
+4224,
+42206,
+34028,
+1500,
+61,
+29568,
+1764,
+256,
+6760,
+1718,
+10323,
+14854,
+47908,
+51536,
+49210,
+4432,
+30671,
+6208,
+262,
+12357,
+56460,
+15646,
+20496,
+35841,
+3942,
+35841,
+10422,
+31494,
+24416,
+28730,
+19731,
+18949,
+56972,
+50555,
+57519,
+592,
+212,
+7983,
+4272,
+14978,
+32730,
+16384,
+1612,
+1287,
+14658,
+49210,
+1579,
+512,
+9998,
+8188,
+17664,
+25098,
+39805,
+84,
+2213,
+5200,
+35842,
+1500,
+1759,
+50459,
+61572,
+17664,
+9728,
+479,
+15012,
+56,
+1453,
+48175,
+28218,
+35842,
+282,
+49485,
+16077,
+57402,
+1893,
+1500,
+256,
+15012,
+11264,
+42028,
+17518,
+56972,
+10475,
+1759,
+43507,
+28218,
+16384,
+5120,
+10089,
+48197,
+8894,
+25851,
+6213,
+8890,
+49787,
+35842,
+249,
+39719,
+519,
+63750,
+1099,
+42206,
+16384,
+19394,
+42206,
+249,
+56979,
+17664,
+63750,
+19394,
+63258,
+35842,
+1570,
+49913,
+17664,
+35986,
+717,
+20504,
+56972,
+256,
+36352,
+1202,
+56979,
+6211,
+40363,
+10346,
+1792,
+5120,
+80,
+30145,
+20496,
+7424,
+10089,
+20504,
+56972,
+4864,
+9729,
+17232,
+17664,
+35830,
+256,
+3923,
+49924,
+57925,
+717,
+8760,
+35842,
+1574,
+28218,
+16384,
+49951,
+56972,
+17664,
+16384,
+49958,
+35841,
+16384,
+9342,
+6380,
+13882,
+17664,
+1601,
+1262,
+56378,
+31238,
+53,
+61175,
+49964,
+1991,
+29745,
+2048,
+15130,
+20496,
+8760,
+519,
+37445,
+35808,
+113,
+2220,
+1024,
+49744,
+35842,
+16384,
+10752,
+63258,
+14394,
+59024,
+17152,
+57359,
+63258,
+35841,
+17664,
+20496,
+263,
+14342,
+61175,
+22608,
+15012,
+4677,
+256,
+9312,
+31246,
+6398,
+2071,
+124,
+256,
+20307,
+15012,
+119,
+256,
+3923,
+28730,
+17664,
+6699,
+6760,
+122,
+44032,
+15360,
+43889,
+20496,
+17664,
+4306,
+15104,
+13689,
+40,
+13751,
+256,
+6688,
+2128,
+4350,
+17664,
+768,
+4576,
+49664,
+56972,
+40,
+1650,
+57199,
+4350,
+17664,
+21598,
+16566,
+47461,
+5840,
+16384,
+14592,
+6688,
+21402,
+7789,
+15012,
+56493,
+32006,
+6688,
+31901,
+2213,
+13341,
+13568,
+63032,
+42206,
+43883,
+30470,
+1280,
+2222,
+7673,
+256,
+6346,
+11856,
+1500,
+57632,
+55610,
+49300,
+122,
+256,
+8326,
+252,
+20496,
+8960,
+34560,
+21407,
+16384,
+57017,
+264,
+35841,
+2048,
+8760,
+9984,
+19876,
+56972,
+13340,
+37632,
+8349,
+39680,
+33439,
+6760,
+35841,
+20496,
+42206,
+47872,
+4363,
+36578,
+49920,
+31105,
+42206,
+17664,
+512,
+67,
+265,
+7424,
+6960,
+21306,
+2360,
+10754,
+1556,
+20485,
+4164,
+35842,
+2377,
+29446,
+1629,
+23710,
+15012,
+2386,
+13859,
+1754,
+282,
+14481,
+720,
+56972,
+62080,
+256,
+8064,
+15012,
+15941,
+355,
+94,
+42206,
+29747,
+16384,
+17664,
+20762,
+11009,
+56700,
+33872,
+45312,
+20748,
+62281,
+8760,
+15012,
+40156,
+16384,
+256,
+1024,
+38162,
+33251,
+8250,
+17664,
+116,
+2048,
+27374,
+20504,
+35841,
+1801,
+15012,
+256,
+51112,
+56576,
+124,
+256,
+26724,
+57361,
+15012,
+48402,
+256,
+6699,
+24882,
+15012,
+5888,
+2120,
+19541,
+32581,
+52480,
+50731,
+6212,
+35841,
+117,
+96,
+652,
+15012,
+56530,
+536,
+4130,
+29253,
+45,
+780,
+15362,
+28690,
+124,
+33441,
+41384,
+60474,
+52,
+1691,
+256,
+1880,
+35841,
+16384,
+40,
+35842,
+266,
+2048,
+59728,
+522,
+16270,
+8192,
+22709,
+20504,
+15012,
+17664,
+118,
+31716,
+20496,
+40,
+1948,
+1280,
+49785,
+2642,
+30214,
+6688,
+30329,
+58,
+56972,
+28216,
+266,
+31494,
+51,
+27951,
+2668,
+15012,
+256,
+61509,
+256,
+1839,
+59985,
+20496,
+522,
+32006,
+56712,
+2693,
+17664,
+31750,
+40529,
+35841,
+20444,
+15360,
+58077,
+60,
+120,
+1608,
+5922,
+63656,
+522,
+2048,
+63656,
+2395,
+39676,
+16384,
+1723,
+370,
+55610,
+1670,
+3130,
+29954,
+20496,
+15012,
+16384,
+4096,
+37497,
+8610,
+13381,
+16450,
+8760,
+2781,
+56381,
+2048,
+8196,
+40,
+5658,
+58298,
+4127,
+35841,
+354,
+96,
+20487,
+33251,
+4164,
+267,
+17664,
+26229,
+1839,
+52727,
+48720,
+28218,
+56972,
+2856,
+64382,
+2048,
+28177,
+50214,
+28218,
+14976,
+51253,
+62976,
+6773,
+20504,
+64069,
+1564,
+44058,
+33251,
+6177,
+34885,
+16384,
+6699,
+56972,
+17664,
+16384,
+44973,
+52480,
+2048,
+717,
+19395,
+56972,
+17664,
+1098,
+25773,
+17828,
+30145,
+3808,
+267,
+44034,
+11264,
+65188,
+1500,
+124,
+256,
+6869,
+27561,
+16384,
+512,
+20496,
+2927,
+1500,
+31750,
+538,
+62522,
+17664,
+16384,
+2048,
+2220,
+49661,
+4176,
+44101,
+28160,
+27102,
+1570,
+49975,
+16384,
+18715,
+523,
+1567,
+4864,
+8760,
+8842,
+10089,
+30277,
+52727,
+15684,
+55877,
+16384,
+8836,
+30146,
+56972,
+249,
+40615,
+4164,
+35842,
+1500,
+1787,
+49685,
+19395,
+1500,
+794,
+63271,
+523,
+31750,
+4864,
+10911,
+16384,
+4864,
+8760,
+40538,
+56333,
+2048,
+52295,
+4350,
+34373,
+19395,
+42020,
+249,
+13576,
+24290,
+56,
+52,
+15872,
+4130,
+56972,
+16384,
+54528,
+62976,
+20496,
+16384,
+53,
+1262,
+33872,
+16384,
+18334,
+9216,
+45584,
+2048,
+353,
+50141,
+42206,
+2999,
+1716,
+24832,
+37707,
+28218,
+267,
+60317,
+45942,
+24576,
+265,
+717,
+17518,
+523,
+40,
+57468,
+1839,
+56979,
+3019,
+5120,
+8760,
+16384,
+42206,
+3021,
+42206,
+2048,
+15702,
+267,
+10279,
+256,
+31488,
+56979,
+35842,
+16384,
+1024,
+27102,
+6212,
+17664,
+51968,
+51716,
+48732,
+35842,
+35933,
+5120,
+63271,
+4130,
+35841,
+10346,
+28928,
+282,
+4164,
+3043,
+31494,
+6175,
+41595,
+35842,
+256,
+52727,
+27984,
+267,
+7168,
+57375,
+15332,
+15012,
+43772,
+54274,
+15012,
+1617,
+94,
+45370,
+49209,
+6346,
+94,
+10713,
+31238,
+5325,
+63813,
+42206,
+1759,
+26724,
+42,
+35842,
+13867,
+10089,
+9483,
+15012,
+17664,
+1628,
+4576,
+370,
+15012,
+51904,
+1964,
+46160,
+17664,
+31238,
+1280,
+27005,
+11008,
+6398,
+29958,
+2816,
+8356,
+3923,
+56972,
+56401,
+37888,
+263,
+46829,
+4384,
+49152,
+359,
+25850,
+4115,
+17664,
+124,
+4692,
+4288,
+40,
+4576,
+63258,
+56972,
+16384,
+53,
+11125,
+6211,
+17664,
+20992,
+35842,
+27465,
+524,
+5640,
+11012,
+42206,
+20452,
+282,
+4351,
+124,
+361,
+17518,
+10302,
+39168,
+28730,
+60354,
+2128,
+15012,
+32006,
+31368,
+8196,
+21641,
+3330,
+113,
+4637,
+17518,
+26693,
+2048,
+11201,
+6398,
+17664,
+56972,
+525,
+1567,
+11016,
+20658,
+58,
+3356,
+39767,
+113,
+11800,
+22837,
+42206,
+17664,
+27313,
+8448,
+1024,
+12041,
+8434,
+38956,
+35841,
+16384,
+2048,
+20496,
+42206,
+31045,
+2481,
+48464,
+14661,
+123,
+6699,
+26981,
+794,
+21459,
+28218,
+123,
+9984,
+63258,
+15012,
+29745,
+54,
+6773,
+924,
+256,
+30146,
+20451,
+3564,
+256,
+14394,
+21048,
+24064,
+2855,
+35842,
+16384,
+61175,
+6178,
+17664,
+16384,
+1099,
+14394,
+16384,
+2220,
+27102,
+17664,
+768,
+15429,
+8780,
+525,
+1676,
+6773,
+56972,
+56,
+56979,
+42206,
+3428,
+16384,
+6699,
+63271,
+6960,
+32826,
+56972,
+14342,
+4864,
+14394,
+56334,
+2220,
+27102,
+42206,
+628,
+16384,
+4864,
+20496,
+30221,
+56458,
+256,
+49887,
+6960,
+6212,
+35842,
+16384,
+16640,
+21568,
+56972,
+27330,
+256,
+52727,
+3463,
+125,
+256,
+50409,
+269,
+16384,
+717,
+4677,
+31761,
+8081,
+256,
+8760,
+36968,
+63750,
+52727,
+37296,
+1500,
+1099,
+6736,
+56972,
+8079,
+6699,
+49925,
+50430,
+56972,
+3486,
+32006,
+4864,
+15646,
+19968,
+4164,
+269,
+123,
+20224,
+28928,
+2290,
+717,
+6736,
+60395,
+32863,
+256,
+49943,
+21501,
+35841,
+17664,
+6699,
+45370,
+12828,
+49300,
+56335,
+17664,
+125,
+2048,
+44058,
+63660,
+42206,
+26110,
+302,
+20496,
+42206,
+54872,
+56577,
+35841,
+1500,
+31494,
+5120,
+2092,
+6465,
+56972,
+126,
+6918,
+20496,
+42206,
+28928,
+6869,
+5267,
+32006,
+282,
+41762,
+20496,
+35841,
+17664,
+45056,
+388,
+34798,
+3574,
+2048,
+58298,
+58781,
+9984,
+222,
+35842,
+124,
+1885,
+26481,
+526,
+17664,
+56419,
+1757,
+1035,
+36252,
+50161,
+270,
+124,
+256,
+6145,
+42214,
+56972,
+1760,
+5632,
+5120,
+28730,
+3644,
+19373,
+33624,
+8760,
+17664,
+125,
+15012,
+21929,
+17520,
+1500,
+1536,
+5122,
+6721,
+65188,
+16384,
+1024,
+59188,
+15012,
+56972,
+256,
+4224,
+30214,
+25936,
+31290,
+270,
+125,
+512,
+16849,
+20496,
+526,
+16384,
+4625,
+58596,
+14394,
+35841,
+1720,
+3840,
+5961,
+4130,
+17664,
+30055,
+256,
+4352,
+11600,
+4129,
+270,
+3772,
+256,
+28673,
+4130,
+46661,
+48128,
+1540,
+42206,
+256,
+3924,
+42464,
+14394,
+2373,
+69,
+3076,
+42878,
+21714,
+47736,
+56972,
+1500,
+27951,
+65043,
+1178,
+4130,
+19525,
+1500,
+16384,
+6699,
+2384,
+42206,
+16384,
+1792,
+35842,
+64001,
+15012,
+20496,
+59133,
+6798,
+55435,
+15012,
+25502,
+2048,
+20496,
+3874,
+2048,
+63439,
+527,
+1759,
+56577,
+15012,
+17664,
+32262,
+7168,
+14658,
+1436,
+60051,
+57359,
+35841,
+64518,
+24882,
+42206,
+32006,
+57199,
+4129,
+3902,
+16384,
+147,
+295,
+28730,
+1500,
+16384,
+40529,
+36729,
+17792,
+36656,
+5781,
+8659,
+17664,
+8760,
+4531,
+28416,
+8400,
+36098,
+1500,
+28416,
+508,
+1629,
+34731,
+40036,
+4130,
+56973,
+3840,
+55424,
+10468,
+97,
+45240,
+22031,
+65082,
+9925,
+48224,
+256,
+1453,
+41384,
+65082,
+45824,
+57632,
+56973,
+16384,
+508,
+581,
+16384,
+13514,
+6177,
+13551,
+6688,
+15889,
+42051,
+52,
+42206,
+56463,
+11008,
+16384,
+32466,
+256,
+1723,
+56524,
+20496,
+56973,
+60,
+27951,
+14661,
+256,
+36671,
+1477,
+50872,
+4130,
+8261,
+1583,
+43589,
+16384,
+20737,
+17664,
+8192,
+6211,
+16384,
+256,
+902,
+30550,
+42206,
+40,
+14238,
+252,
+44949,
+56973,
+12510,
+1590,
+11264,
+53085,
+47872,
+15012,
+3611,
+8192,
+256,
+4864,
+44949,
+512,
+50483,
+42206,
+32827,
+8746,
+50501,
+31557,
+24359,
+51781,
+1280,
+36097,
+63750,
+263,
+10089,
+56973,
+63750,
+61175,
+14394,
+256,
+10089,
+31813,
+35880,
+14394,
+10468,
+24836,
+8760,
+3640,
+8760,
+38139,
+256,
+10089,
+27102,
+58192,
+12613,
+256,
+63439,
+36097,
+64518,
+20480,
+33616,
+16384,
+31238,
+361,
+13542,
+51258,
+11012,
+64549,
+24084,
+8760,
+864,
+58611,
+17664,
+8713,
+19397,
+20496,
+1571,
+50681,
+8285,
+42206,
+187,
+1631,
+27102,
+36098,
+26317,
+64549,
+30544,
+44357,
+4864,
+26724,
+35863,
+24836,
+6211,
+49733,
+1032,
+6992,
+51813,
+1024,
+902,
+15012,
+282,
+256,
+26829,
+37984,
+14394,
+36098,
+8594,
+216,
+1216,
+512,
+42206,
+10259,
+13136,
+60040,
+5049,
+1024,
+90,
+4130,
+256,
+2560,
+201,
+49210,
+258,
+15366,
+512,
+7148,
+3664,
+15012,
+123,
+7424,
+51712,
+56973,
+40,
+178,
+7940,
+28730,
+257,
+35747,
+31750,
+6912,
+265,
+902,
+42206,
+56973,
+40074,
+1297,
+1193,
+56656,
+69,
+1024,
+31528,
+36097,
+13056,
+34842,
+17664,
+2048,
+3979,
+27003,
+58,
+30054,
+17664,
+26880,
+6688,
+37090,
+4159,
+1500,
+27398,
+36578,
+32350,
+371,
+36864,
+1902,
+60951,
+15012,
+10408,
+10467,
+388,
+16384,
+6224,
+312,
+256,
+513,
+11264,
+46978,
+35840,
+56573,
+30470,
+25344,
+26668,
+59450,
+16384,
+52626,
+20504,
+4421,
+56539,
+6699,
+260,
+257,
+40000,
+1707,
+15012,
+124,
+280,
+513,
+256,
+1101,
+40976,
+36097,
+16384,
+256,
+6145,
+11600,
+36097,
+252,
+953,
+4351,
+52,
+7789,
+58464,
+59036,
+256,
+8192,
+28485,
+3584,
+3075,
+8760,
+16384,
+15685,
+42206,
+10447,
+56973,
+249,
+10089,
+1500,
+19398,
+27973,
+4864,
+42206,
+13893,
+19398,
+56389,
+1099,
+56973,
+256,
+56979,
+17664,
+36875,
+17664,
+19398,
+53829,
+44175,
+64920,
+1099,
+17664,
+25424,
+282,
+1676,
+1360,
+37707,
+4130,
+56466,
+35847,
+1360,
+14394,
+56,
+6175,
+33955,
+533,
+353,
+10534,
+50854,
+56973,
+258,
+14336,
+50877,
+514,
+8670,
+50983,
+5120,
+27003,
+15012,
+252,
+1099,
+514,
+55296,
+56979,
+21573,
+256,
+15362,
+16384,
+1024,
+43066,
+55085,
+7237,
+37632,
+57199,
+249,
+40984,
+21867,
+16384,
+1712,
+2816,
+50436,
+29523,
+39366,
+32826,
+258,
+1500,
+61797,
+14394,
+36097,
+576,
+26660,
+45922,
+1885,
+32043,
+4130,
+685,
+56378,
+256,
+1144,
+13032,
+47133,
+17664,
+124,
+137,
+20485,
+44945,
+514,
+51329,
+122,
+42,
+51754,
+1500,
+29958,
+256,
+453,
+24882,
+36097,
+5028,
+74,
+56656,
+56463,
+388,
+4129,
+64769,
+11898,
+258,
+28296,
+1248,
+1753,
+8192,
+67,
+8760,
+799,
+29190,
+11268,
+13058,
+17664,
+55552,
+5122,
+259,
+32512,
+260,
+59245,
+15012,
+42206,
+17664,
+11520,
+41472,
+15012,
+576,
+14351,
+3463,
+20496,
+15012,
+10565,
+16384,
+32006,
+42497,
+3942,
+36097,
+256,
+11018,
+51712,
+4227,
+515,
+13321,
+31238,
+6699,
+40065,
+63568,
+1612,
+282,
+20341,
+65278,
+1500,
+15130,
+36097,
+52,
+253,
+42829,
+16976,
+56463,
+1280,
+56833,
+56654,
+42206,
+92,
+50176,
+948,
+121,
+256,
+41256,
+18178,
+12032,
+7228,
+15012,
+49705,
+120,
+256,
+22906,
+8760,
+259,
+29411,
+29472,
+42206,
+2048,
+15873,
+15012,
+17664,
+50992,
+55827,
+1093,
+32579,
+35277,
+1065,
+20496,
+6699,
+6465,
+16384,
+20496,
+57669,
+256,
+27102,
+3714,
+8760,
+36098,
+2048,
+28455,
+516,
+50176,
+19519,
+2663,
+249,
+44,
+51037,
+56973,
+1569,
+1964,
+27102,
+36098,
+24836,
+14394,
+56334,
+50957,
+17664,
+10089,
+40,
+5120,
+27102,
+5878,
+56419,
+35819,
+256,
+353,
+24882,
+15012,
+10347,
+56979,
+15012,
+52,
+125,
+1262,
+35579,
+62277,
+2048,
+256,
+353,
+51117,
+10347,
+2220,
+611,
+31312,
+1085,
+3741,
+19399,
+36098,
+117,
+44032,
+10089,
+65278,
+56339,
+44032,
+794,
+28420,
+20496,
+42206,
+31494,
+1280,
+1262,
+657,
+35623,
+28218,
+40,
+43264,
+27102,
+17664,
+65215,
+2048,
+657,
+36354,
+42206,
+17664,
+37153,
+50031,
+20496,
+34555,
+30468,
+1957,
+1130,
+17664,
+58615,
+7168,
+11125,
+15360,
+20496,
+22016,
+2220,
+17518,
+42206,
+4165,
+16384,
+7164,
+11008,
+56973,
+36098,
+33954,
+124,
+41552,
+55610,
+24832,
+90,
+30147,
+13392,
+56973,
+44058,
+50071,
+42206,
+31494,
+63744,
+46181,
+4154,
+45381,
+16384,
+6699,
+50087,
+36097,
+1500,
+5093,
+13576,
+4422,
+23203,
+1500,
+768,
+11016,
+31488,
+23211,
+40,
+178,
+53,
+717,
+4979,
+42206,
+1233,
+17664,
+41863,
+256,
+1092,
+17218,
+36097,
+40,
+16384,
+1091,
+6177,
+40,
+29440,
+44058,
+24539,
+56973,
+628,
+31750,
+1866,
+4649,
+36098,
+17664,
+32006,
+50135,
+63258,
+56973,
+256,
+41552,
+1272,
+16384,
+20496,
+31494,
+30017,
+17520,
+1282,
+17664,
+2048,
+453,
+20496,
+54597,
+16384,
+94,
+50157,
+20496,
+15012,
+36097,
+17664,
+20790,
+1761,
+21248,
+17408,
+55599,
+28218,
+23406,
+178,
+50974,
+20496,
+56973,
+17664,
+56432,
+28928,
+1065,
+63258,
+11405,
+28928,
+8061,
+20496,
+56973,
+13109,
+32848,
+1338,
+40,
+21353,
+717,
+17520,
+42206,
+27057,
+56,
+256,
+302,
+58,
+56973,
+36098,
+40764,
+178,
+31488,
+18809,
+13392,
+20241,
+16384,
+8758,
+36097,
+23806,
+11012,
+50205,
+64080,
+261,
+1590,
+1092,
+15012,
+53248,
+8704,
+63258,
+52727,
+56973,
+32006,
+256,
+1092,
+39366,
+4164,
+42206,
+49989,
+64006,
+1024,
+8322,
+59717,
+14336,
+56577,
+42206,
+25503,
+17518,
+17664,
+21670,
+16384,
+6688,
+52727,
+17520,
+36098,
+33814,
+122,
+1092,
+17408,
+34544,
+2048,
+30699,
+28218,
+40,
+1603,
+90,
+52727,
+20504,
+42206,
+11016,
+4979,
+517,
+1024,
+2220,
+22742,
+20496,
+20805,
+114,
+10829,
+6177,
+4096,
+7174,
+8888,
+4130,
+17664,
+31494,
+17920,
+2094,
+20496,
+15012,
+6699,
+12803,
+53840,
+56973,
+1469,
+1597,
+8710,
+20496,
+56973,
+17664,
+31494,
+2048,
+9220,
+1500,
+20504,
+56973,
+12928,
+6400,
+47616,
+44058,
+1492,
+17664,
+40,
+7095,
+23331,
+22018,
+36097,
+116,
+6400,
+45056,
+717,
+29492,
+17518,
+1507,
+17664,
+16384,
+178,
+282,
+11125,
+717,
+28730,
+31045,
+273,
+539,
+62301,
+14395,
+24834,
+517,
+2220,
+42206,
+6699,
+390,
+17680,
+37707,
+1540,
+1185,
+31238,
+42206,
+1542,
+200,
+60527,
+34039,
+80,
+717,
+6160,
+15012,
+123,
+17408,
+43430,
+33616,
+36098,
+40,
+44288,
+256,
+42206,
+52,
+257,
+717,
+27907,
+32768,
+42206,
+24328,
+17408,
+4979,
+56973,
+1649,
+2048,
+2220,
+11125,
+56477,
+42206,
+17664,
+41472,
+30148,
+13045,
+123,
+8608,
+30214,
+59748,
+56334,
+5120,
+4979,
+1500,
+256,
+2220,
+37707,
+8665,
+32006,
+28928,
+56973,
+16384,
+2560,
+36115,
+15012,
+43561,
+249,
+5120,
+6178,
+19775,
+3766,
+14394,
+36097,
+16384,
+123,
+32512,
+2048,
+15303,
+518,
+17408,
+408,
+53829,
+27444,
+14336,
+47616,
+23377,
+42206,
+22592,
+60547,
+36608,
+24063,
+8589,
+26407,
+5725,
+56973,
+262,
+40,
+7069,
+91,
+56979,
+13392,
+20504,
+36098,
+26963,
+10347,
+7067,
+58710,
+518,
+56334,
+51719,
+14394,
+60553,
+8583,
+49152,
+22341,
+33792,
+10089,
+17989,
+39168,
+56,
+63258,
+1664,
+56461,
+24576,
+1536,
+63258,
+34283,
+256,
+1262,
+6736,
+56973,
+56464,
+178,
+2048,
+13312,
+36098,
+1708,
+2048,
+717,
+17518,
+37861,
+40,
+32006,
+15360,
+13576,
+38162,
+30800,
+65280,
+15573,
+45568,
+53,
+6773,
+20496,
+17518,
+56973,
+13354,
+46206,
+42752,
+262,
+1500,
+8760,
+10476,
+1569,
+16167,
+20496,
+17664,
+3795,
+10089,
+59450,
+53829,
+123,
+47616,
+51238,
+48256,
+4164,
+39749,
+56,
+113,
+19400,
+33115,
+518,
+57925,
+2048,
+24836,
+23379,
+17664,
+16384,
+4864,
+6699,
+8705,
+717,
+3942,
+1730,
+15576,
+45,
+4979,
+56973,
+55621,
+16384,
+256,
+2220,
+36786,
+42206,
+1739,
+9073,
+47917,
+28730,
+1742,
+512,
+13964,
+36097,
+31238,
+11125,
+25773,
+1218,
+3072,
+42206,
+58,
+64518,
+14336,
+15012,
+32006,
+188,
+50485,
+45370,
+34048,
+17520,
+14336,
+57633,
+16384,
+188,
+6773,
+48186,
+1775,
+16384,
+5712,
+20496,
+44058,
+6736,
+30789,
+1500,
+117,
+58880,
+36097,
+15012,
+58620,
+2220,
+23894,
+17520,
+47685,
+252,
+5225,
+263,
+40,
+16384,
+53,
+11201,
+23866,
+15012,
+36098,
+7336,
+28928,
+282,
+11012,
+20737,
+32006,
+23443,
+3229,
+4164,
+1830,
+16384,
+1566,
+1024,
+508,
+10476,
+1593,
+49664,
+8474,
+50543,
+6736,
+14394,
+36098,
+120,
+1024,
+36352,
+46860,
+41474,
+20496,
+15012,
+1853,
+30982,
+6145,
+265,
+263,
+56832,
+216,
+11461,
+28730,
+36097,
+13576,
+1261,
+20504,
+42206,
+125,
+256,
+29492,
+65278,
+17664,
+16384,
+256,
+4350,
+10390,
+122,
+1092,
+4979,
+56973,
+26437,
+1563,
+12032,
+15362,
+32784,
+14336,
+50583,
+25249,
+1297,
+768,
+3051,
+149,
+42206,
+50245,
+16384,
+54016,
+13576,
+8418,
+28730,
+37744,
+28928,
+1092,
+30778,
+36098,
+46149,
+17434,
+6269,
+17664,
+31494,
+56,
+4346,
+37035,
+29746,
+11013,
+10839,
+50615,
+1940,
+51269,
+16384,
+32006,
+52224,
+48128,
+8375,
+238,
+4118,
+42206,
+44101,
+628,
+1245,
+9112,
+36097,
+125,
+39090,
+40584,
+56973,
+45893,
+32006,
+51200,
+45568,
+11016,
+23513,
+52727,
+17518,
+263,
+16384,
+23808,
+53,
+15012,
+36098,
+17664,
+31494,
+12495,
+20496,
+43077,
+768,
+50043,
+42206,
+41797,
+10382,
+23515,
+29492,
+42206,
+21760,
+3610,
+52304,
+13927,
+36098,
+628,
+48128,
+282,
+36097,
+16384,
+20496,
+263,
+32006,
+1839,
+25820,
+64183,
+256,
+46860,
+52727,
+65410,
+63258,
+2050,
+124,
+44,
+50693,
+58,
+3823,
+123,
+29696,
+6688,
+20496,
+42206,
+123,
+29696,
+38970,
+20504,
+56973,
+10476,
+1675,
+178,
+1092,
+841,
+6736,
+56973,
+4165,
+62014,
+17408,
+31105,
+42206,
+628,
+1601,
+11008,
+5781,
+56973,
+41474,
+45381,
+249,
+44058,
+23579,
+54608,
+52293,
+31494,
+74,
+17408,
+14242,
+15012,
+52549,
+5120,
+41474,
+520,
+1569,
+57127,
+60997,
+63750,
+51447,
+42206,
+42752,
+51453,
+17518,
+27470,
+27392,
+56979,
+36098,
+27471,
+26880,
+92,
+18338,
+17664,
+2053,
+56979,
+1500,
+282,
+56979,
+27102,
+63750,
+45778,
+8680,
+264,
+1569,
+10089,
+36098,
+12101,
+4864,
+1099,
+13392,
+36098,
+5120,
+56979,
+56973,
+16384,
+494,
+36419,
+8760,
+3833,
+768,
+63271,
+20496,
+42206,
+2156,
+30150,
+32730,
+17664,
+19864,
+29492,
+36097,
+31494,
+17792,
+2165,
+16514,
+16384,
+45312,
+5120,
+4164,
+36097,
+59248,
+44058,
+57332,
+51584,
+15012,
+32940,
+125,
+1650,
+41472,
+4979,
+17520,
+36097,
+1639,
+13576,
+50459,
+41552,
+2189,
+49152,
+1790,
+26481,
+42206,
+37701,
+17434,
+30150,
+58,
+15012,
+44493,
+17408,
+50807,
+13392,
+2202,
+56973,
+1500,
+119,
+25936,
+40723,
+768,
+45904,
+40872,
+14394,
+1024,
+8760,
+530,
+43967,
+32768,
+17664,
+28218,
+36098,
+16384,
+1571,
+10089,
+44437,
+1500,
+25825,
+1024,
+353,
+2500,
+16077,
+17518,
+2226,
+31494,
+8760,
+17664,
+122,
+31238,
+1581,
+6957,
+8025,
+6212,
+56973,
+11159,
+44034,
+717,
+20504,
+56973,
+50842,
+16384,
+2246,
+47843,
+56973,
+17664,
+7824,
+9216,
+42914,
+28730,
+31883,
+6346,
+55925,
+56871,
+1500,
+35840,
+45568,
+92,
+15696,
+58938,
+13079,
+9998,
+35657,
+42206,
+17664,
+53,
+64990,
+520,
+192,
+768,
+31488,
+56973,
+62746,
+33605,
+256,
+6699,
+23866,
+31105,
+1500,
+23866,
+42206,
+7936,
+4363,
+58,
+2316,
+17664,
+40,
+1563,
+28928,
+15872,
+29492,
+41552,
+8760,
+36097,
+122,
+28928,
+63258,
+42206,
+10090,
+123,
+63152,
+28928,
+35588,
+6166,
+36098,
+17664,
+13095,
+31238,
+256,
+6699,
+4979,
+20496,
+17664,
+56371,
+14854,
+768,
+30150,
+4130,
+265,
+13100,
+1566,
+1024,
+22264,
+42206,
+17664,
+6923,
+256,
+47500,
+42368,
+42206,
+2387,
+125,
+7168,
+717,
+52727,
+20504,
+36098,
+44101,
+56540,
+25783,
+6699,
+31488,
+32784,
+13329,
+7174,
+768,
+6699,
+4070,
+55680,
+2423,
+7786,
+4864,
+794,
+3924,
+52727,
+8504,
+36097,
+65280,
+49697,
+6736,
+65082,
+56526,
+45568,
+717,
+6736,
+36098,
+40,
+2220,
+22018,
+28730,
+56371,
+7168,
+26496,
+17518,
+125,
+768,
+6699,
+6773,
+4164,
+521,
+29747,
+124,
+51914,
+20496,
+15012,
+22528,
+1536,
+11016,
+18432,
+32325,
+1280,
+97,
+60595,
+8760,
+2529,
+28928,
+60617,
+63258,
+2539,
+16384,
+2110,
+4164,
+2544,
+256,
+63258,
+31750,
+5781,
+265,
+9073,
+30626,
+63818,
+768,
+20915,
+56973,
+40,
+6699,
+56973,
+4165,
+16384,
+6699,
+34722,
+52727,
+6212,
+266,
+17856,
+31494,
+51726,
+1166,
+17520,
+53061,
+256,
+416,
+4409,
+4129,
+17664,
+55552,
+4568,
+41,
+11013,
+6736,
+65221,
+54069,
+51287,
+33872,
+33861,
+16384,
+63258,
+20496,
+36098,
+538,
+56973,
+2048,
+13576,
+30151,
+58,
+60781,
+3520,
+6699,
+20496,
+2048,
+3098,
+15524,
+17664,
+58088,
+53,
+717,
+20496,
+42206,
+18225,
+17965,
+6875,
+256,
+53,
+54751,
+17520,
+56371,
+1747,
+44058,
+51143,
+17518,
+6213,
+40,
+120,
+1636,
+6699,
+10356,
+51159,
+14394,
+2672,
+56492,
+31494,
+51167,
+17518,
+56973,
+25707,
+1024,
+52727,
+20504,
+56973,
+56371,
+1706,
+3328,
+51189,
+38268,
+17664,
+53,
+1098,
+41474,
+24656,
+42206,
+266,
+50757,
+125,
+113,
+11013,
+2724,
+1349,
+1712,
+11016,
+1954,
+46307,
+40,
+28177,
+266,
+32006,
+28928,
+22018,
+56973,
+2048,
+16671,
+36097,
+123,
+20487,
+18688,
+15012,
+64774,
+2999,
+29952,
+17518,
+36097,
+32006,
+6699,
+51239,
+52727,
+2782,
+116,
+28928,
+13576,
+63258,
+8760,
+59489,
+61816,
+60119,
+37189,
+96,
+1360,
+16290,
+522,
+29747,
+2048,
+29305,
+15012,
+63,
+6736,
+2309,
+291,
+20496,
+5120,
+45716,
+43554,
+15012,
+2832,
+33533,
+2048,
+15012,
+32006,
+768,
+53,
+32105,
+6773,
+6736,
+7538,
+15012,
+17664,
+16384,
+57088,
+53,
+6699,
+33251,
+28730,
+2861,
+256,
+2048,
+7450,
+17520,
+36097,
+124,
+8029,
+58,
+44288,
+256,
+302,
+6736,
+65280,
+43776,
+2048,
+1032,
+60288,
+31232,
+179,
+2193,
+63258,
+53120,
+56973,
+21371,
+32006,
+28928,
+2048,
+56973,
+15920,
+4148,
+1861,
+16384,
+53,
+58113,
+11376,
+22853,
+56344,
+124,
+36724,
+265,
+64918,
+56973,
+267,
+628,
+16384,
+31750,
+11016,
+612,
+56973,
+36097,
+1562,
+2048,
+768,
+1165,
+41552,
+42206,
+17856,
+30726,
+30152,
+20496,
+6212,
+36098,
+53,
+44058,
+6798,
+56973,
+17664,
+16384,
+59868,
+22018,
+20496,
+2977,
+3072,
+22665,
+56419,
+31721,
+256,
+772,
+15012,
+2213,
+56973,
+1500,
+2053,
+19633,
+34373,
+256,
+28730,
+36098,
+2241,
+2048,
+51347,
+36098,
+31494,
+3328,
+13991,
+57814,
+31238,
+51716,
+6212,
+56360,
+1024,
+56973,
+27015,
+18919,
+256,
+9217,
+4163,
+64518,
+639,
+44289,
+42053,
+11268,
+37204,
+20504,
+15012,
+34629,
+28416,
+63927,
+65278,
+49664,
+1590,
+40295,
+13882,
+50757,
+13574,
+28416,
+15012,
+30010,
+16890,
+30470,
+222,
+62544,
+56973,
+36097,
+8182,
+2048,
+80,
+15646,
+3161,
+8197,
+62329,
+17680,
+20510,
+47162,
+4130,
+42206,
+24431,
+124,
+42638,
+60,
+27648,
+51748,
+17664,
+58382,
+4420,
+56973,
+63813,
+8760,
+30400,
+41,
+65278,
+58,
+179,
+2193,
+60131,
+42206,
+222,
+4130,
+17664,
+1622,
+1039,
+52644,
+15012,
+30470,
+1098,
+62027,
+4129,
+42206,
+44284,
+8960,
+17954,
+34896,
+15012,
+36097,
+17664,
+118,
+256,
+25773,
+31312,
+256,
+55717,
+16384,
+1024,
+16208,
+3318,
+256,
+6241,
+269,
+1758,
+43776,
+508,
+118,
+5380,
+57,
+24025,
+3365,
+3507,
+61034,
+94,
+45893,
+1675,
+4864,
+9160,
+15012,
+525,
+24882,
+42206,
+269,
+1500,
+51,
+4130,
+269,
+10320,
+1024,
+40699,
+15012,
+19600,
+1024,
+408,
+30123,
+36098,
+36098,
+23844,
+36433,
+44544,
+1361,
+42206,
+4357,
+4864,
+22552,
+20496,
+56973,
+16384,
+37888,
+3924,
+42206,
+40171,
+48896,
+56890,
+24594,
+58,
+59717,
+256,
+61409,
+35680,
+3509,
+32006,
+9183,
+222,
+56973,
+10412,
+45824,
+15788,
+3533,
+30726,
+56973,
+16965,
+119,
+5632,
+256,
+4727,
+26075,
+28730,
+36097,
+58718,
+42206,
+15012,
+628,
+33548,
+6224,
+3574,
+16384,
+14592,
+17664,
+54786,
+50176,
+11034,
+29090,
+3607,
+10460,
+12356,
+4386,
+15012,
+270,
+1695,
+1124,
+56951,
+36098,
+17664,
+1601,
+4864,
+16134,
+62464,
+15012,
+16384,
+19626,
+1685,
+6346,
+11782,
+52618,
+15012,
+29446,
+34560,
+612,
+50124,
+15012,
+31750,
+711,
+26075,
+8760,
+56973,
+50106,
+50124,
+56973,
+17664,
+31750,
+39424,
+1836,
+49325,
+20496,
+3700,
+13568,
+8204,
+37707,
+46661,
+40,
+29440,
+256,
+8375,
+17390,
+36097,
+116,
+20504,
+56973,
+17664,
+6798,
+526,
+256,
+17623,
+42206,
+41,
+256,
+27102,
+8513,
+17520,
+63750,
+49446,
+36098,
+8509,
+276,
+50929,
+38400,
+36422,
+36098,
+30726,
+2491,
+20496,
+3864,
+42206,
+17664,
+5081,
+3072,
+2309,
+56979,
+64000,
+54032,
+44,
+6178,
+27504,
+276,
+20496,
+3805,
+6346,
+20496,
+15012,
+249,
+14171,
+58871,
+256,
+32665,
+62789,
+19402,
+526,
+19402,
+36098,
+10089,
+51841,
+38970,
+3832,
+256,
+5854,
+64621,
+263,
+17664,
+6408,
+56,
+23704,
+63546,
+1500,
+16384,
+14598,
+10034,
+902,
+527,
+1500,
+30214,
+15360,
+64918,
+4872,
+3885,
+28229,
+4864,
+31056,
+33605,
+3884,
+5632,
+56973,
+9450,
+6346,
+4130,
+3890,
+256,
+38480,
+4336,
+42206,
+17664,
+4864,
+201,
+20480,
+59969,
+56974,
+14598,
+4864,
+32336,
+42206,
+28928,
+717,
+717,
+32896,
+7257,
+31494,
+768,
+6699,
+18978,
+63258,
+40762,
+9417,
+56422,
+28928,
+50459,
+51431,
+36354,
+27904,
+45178,
+12848,
+48565,
+4420,
+35141,
+24424,
+17584,
+14394,
+17664,
+30726,
+53,
+16077,
+6736,
+42206,
+45125,
+13238,
+1565,
+256,
+6346,
+20496,
+15012,
+24133,
+29747,
+1562,
+3328,
+264,
+11144,
+17520,
+36354,
+10477,
+1646,
+361,
+30153,
+52727,
+106,
+10477,
+1745,
+41474,
+20504,
+512,
+1500,
+25602,
+1536,
+1059,
+4164,
+36354,
+57344,
+6699,
+25900,
+13882,
+63813,
+16384,
+30153,
+52727,
+36354,
+1668,
+13312,
+63258,
+6736,
+166,
+4353,
+1360,
+52727,
+17518,
+17664,
+1756,
+56885,
+41474,
+20504,
+42206,
+48602,
+1326,
+36354,
+1500,
+113,
+2718,
+54278,
+4127,
+16384,
+1024,
+41552,
+15012,
+30464,
+42206,
+2048,
+291,
+4164,
+1500,
+32444,
+113,
+6699,
+15012,
+512,
+16384,
+2220,
+37006,
+256,
+123,
+81,
+30153,
+54606,
+19626,
+17672,
+50699,
+256,
+46307,
+65082,
+4164,
+8343,
+7749,
+26501,
+31494,
+28164,
+52727,
+6177,
+16384,
+4352,
+6346,
+15012,
+17664,
+63750,
+576,
+40309,
+45882,
+60938,
+768,
+20496,
+56974,
+29747,
+1570,
+717,
+57199,
+56974,
+122,
+42608,
+53840,
+15012,
+513,
+56432,
+2048,
+63258,
+7808,
+60940,
+194,
+717,
+42206,
+15641,
+17664,
+16384,
+113,
+14658,
+2105,
+63258,
+36353,
+16384,
+6739,
+53,
+30153,
+44962,
+4112,
+29958,
+256,
+24025,
+8760,
+349,
+369,
+6736,
+56974,
+42012,
+256,
+717,
+23376,
+42206,
+124,
+54784,
+10761,
+28730,
+56333,
+30464,
+46581,
+63045,
+40,
+6177,
+794,
+65525,
+17664,
+16384,
+63488,
+51655,
+28218,
+36026,
+10478,
+179,
+6760,
+63258,
+56974,
+40,
+7307,
+2048,
+16896,
+20496,
+257,
+31750,
+1112,
+20496,
+15012,
+47334,
+4608,
+31105,
+15012,
+24812,
+65024,
+11195,
+15012,
+1500,
+59833,
+12357,
+56546,
+8448,
+53328,
+48,
+8280,
+7436,
+52282,
+21057,
+620,
+42206,
+16384,
+35610,
+19565,
+40,
+12045,
+44949,
+17520,
+258,
+30408,
+12288,
+4224,
+258,
+17664,
+16384,
+1760,
+58707,
+8760,
+12352,
+1589,
+256,
+23267,
+45370,
+57858,
+29190,
+11201,
+17664,
+125,
+514,
+21076,
+1542,
+1049,
+37023,
+17664,
+1760,
+264,
+19626,
+36194,
+42206,
+40,
+58118,
+7760,
+62413,
+6699,
+48720,
+120,
+280,
+59250,
+15012,
+83,
+256,
+18964,
+42206,
+16384,
+58298,
+15872,
+44189,
+56974,
+17681,
+256,
+22455,
+752,
+24832,
+6688,
+11366,
+15012,
+31246,
+26192,
+259,
+17520,
+63045,
+6688,
+23376,
+17520,
+798,
+30726,
+6760,
+259,
+119,
+8192,
+26915,
+64069,
+8192,
+6178,
+824,
+14998,
+17664,
+10448,
+6400,
+31940,
+42206,
+1076,
+34628,
+8685,
+17664,
+58800,
+2048,
+848,
+62522,
+16384,
+47939,
+20496,
+36353,
+28906,
+8199,
+17520,
+36353,
+57126,
+6688,
+2562,
+15012,
+41570,
+34560,
+47627,
+56974,
+118,
+27951,
+13904,
+42206,
+1500,
+16384,
+11520,
+6408,
+36354,
+1420,
+198,
+282,
+56974,
+1536,
+58216,
+17520,
+259,
+16384,
+2239,
+265,
+1013,
+28912,
+53587,
+31750,
+2074,
+42206,
+1280,
+6688,
+6469,
+45370,
+64151,
+53760,
+17664,
+1280,
+123,
+50880,
+36353,
+16584,
+14848,
+60162,
+30716,
+516,
+29446,
+32512,
+1280,
+30748,
+22782,
+47685,
+59550,
+7694,
+3716,
+28496,
+16384,
+1280,
+5204,
+36353,
+16384,
+8196,
+8080,
+36354,
+36353,
+30982,
+1049,
+12032,
+58216,
+260,
+516,
+52,
+1543,
+1500,
+42206,
+1139,
+30470,
+512,
+58448,
+10442,
+35249,
+35588,
+14160,
+4130,
+6204,
+119,
+256,
+1880,
+47627,
+42206,
+41730,
+1702,
+42206,
+16384,
+261,
+25773,
+30726,
+35078,
+8720,
+18944,
+11831,
+1024,
+57017,
+4224,
+56974,
+125,
+12032,
+657,
+8576,
+56514,
+40,
+8574,
+516,
+56515,
+1024,
+54751,
+50899,
+1291,
+7936,
+261,
+68,
+32006,
+1024,
+27005,
+48289,
+31824,
+9657,
+1545,
+63271,
+25940,
+20496,
+56333,
+52,
+39150,
+20496,
+17664,
+35704,
+256,
+21760,
+56974,
+16384,
+43520,
+22785,
+6212,
+35141,
+9318,
+44949,
+28594,
+249,
+3072,
+2415,
+14394,
+16384,
+4864,
+6178,
+56335,
+56,
+27102,
+62021,
+56335,
+256,
+8760,
+56335,
+256,
+8760,
+1500,
+32768,
+40,
+65280,
+9955,
+4125,
+249,
+1353,
+9235,
+64000,
+6178,
+36354,
+14342,
+256,
+292,
+36353,
+1675,
+8720,
+1675,
+27102,
+6398,
+261,
+40,
+5120,
+52654,
+20496,
+18714,
+6178,
+40,
+57118,
+33616,
+17856,
+24836,
+6178,
+56335,
+353,
+27102,
+17664,
+16384,
+10089,
+4351,
+16384,
+26880,
+282,
+37707,
+15012,
+16384,
+126,
+256,
+4130,
+56389,
+27102,
+4111,
+10089,
+3072,
+56979,
+56974,
+30470,
+54751,
+53657,
+256,
+9998,
+56979,
+36353,
+16384,
+280,
+64806,
+40809,
+3072,
+5892,
+17664,
+9998,
+63741,
+44,
+20224,
+9472,
+57049,
+61,
+1477,
+20504,
+27662,
+15012,
+57359,
+45745,
+31813,
+26223,
+1801,
+15012,
+1552,
+31750,
+56974,
+52260,
+282,
+80,
+10441,
+52889,
+6177,
+11845,
+16384,
+6699,
+15012,
+518,
+1536,
+3979,
+13737,
+14394,
+648,
+2048,
+17420,
+4224,
+24867,
+40,
+37100,
+22552,
+56400,
+1500,
+125,
+23040,
+3106,
+49198,
+8760,
+33707,
+63750,
+1319,
+18334,
+33084,
+28730,
+17664,
+24832,
+19843,
+4164,
+58,
+10382,
+2048,
+11012,
+14394,
+1500,
+5122,
+27392,
+42206,
+36354,
+3471,
+61035,
+47500,
+20504,
+61,
+256,
+6823,
+15012,
+125,
+56974,
+1804,
+55109,
+6688,
+24897,
+519,
+1605,
+15012,
+10490,
+1024,
+6688,
+43967,
+15012,
+17664,
+6400,
+256,
+31488,
+39168,
+263,
+123,
+256,
+2718,
+46515,
+58,
+56974,
+31750,
+92,
+34560,
+1297,
+1857,
+125,
+15360,
+65188,
+42223,
+37084,
+62186,
+15012,
+196,
+2048,
+2292,
+25100,
+16384,
+15320,
+56974,
+56507,
+1024,
+228,
+1920,
+21592,
+256,
+57453,
+56420,
+58,
+20496,
+56974,
+16384,
+42206,
+35200,
+58,
+31750,
+3072,
+47500,
+56974,
+3840,
+49325,
+15012,
+1759,
+256,
+1629,
+42080,
+17520,
+263,
+32433,
+256,
+1314,
+20496,
+63750,
+19403,
+56974,
+63750,
+52155,
+519,
+27102,
+3956,
+1836,
+6178,
+3959,
+19403,
+58727,
+5120,
+56979,
+53,
+52246,
+519,
+18688,
+10089,
+263,
+16384,
+52274,
+56389,
+256,
+56979,
+4421,
+256,
+45461,
+20496,
+16384,
+256,
+30541,
+6469,
+16637,
+23621,
+4864,
+653,
+8280,
+27569,
+35662,
+29218,
+20496,
+10454,
+16384,
+256,
+56103,
+44101,
+1694,
+17426,
+19404,
+36353,
+27973,
+1585,
+1112,
+36353,
+16384,
+256,
+36135,
+653,
+24912,
+25668,
+32000,
+51463,
+2539,
+520,
+43815,
+28730,
+10289,
+1262,
+25089,
+520,
+1500,
+50688,
+64080,
+42206,
+36353,
+63750,
+5122,
+12106,
+12368,
+62479,
+4864,
+8760,
+520,
+13312,
+6688,
+56161,
+20193,
+42206,
+24836,
+23808,
+36353,
+17664,
+22029,
+1032,
+56656,
+1706,
+34842,
+56974,
+46143,
+16384,
+1739,
+78,
+36578,
+54166,
+17664,
+16384,
+4158,
+10240,
+36353,
+16384,
+30174,
+1358,
+2256,
+31238,
+10496,
+58382,
+65278,
+57344,
+3335,
+57458,
+56302,
+124,
+536,
+20421,
+42206,
+52800,
+51463,
+720,
+56974,
+15199,
+256,
+44750,
+15012,
+31494,
+3072,
+6699,
+36353,
+11373,
+31246,
+8250,
+13565,
+16529,
+6212,
+24832,
+31105,
+16529,
+17520,
+18757,
+56822,
+6144,
+34033,
+42206,
+1500,
+3840,
+8708,
+8080,
+56974,
+18718,
+18947,
+1222,
+120,
+295,
+26724,
+40,
+14592,
+1024,
+4130,
+53829,
+1288,
+256,
+34960,
+42206,
+10260,
+10496,
+37678,
+51452,
+2393,
+11333,
+1611,
+256,
+58888,
+56400,
+32006,
+27005,
+3924,
+56161,
+17664,
+10510,
+58077,
+55866,
+10324,
+30726,
+6400,
+5122,
+62544,
+56974,
+34420,
+13056,
+11069,
+56951,
+42206,
+36677,
+31494,
+6869,
+17520,
+1880,
+6211,
+96,
+2481,
+4164,
+521,
+14478,
+2816,
+263,
+56848,
+4130,
+521,
+4625,
+26981,
+8250,
+92,
+23808,
+42206,
+17664,
+36226,
+6212,
+9808,
+42206,
+4224,
+25157,
+96,
+6044,
+36353,
+32006,
+2309,
+59905,
+29264,
+56974,
+25711,
+32006,
+53,
+22096,
+5953,
+32429,
+256,
+51716,
+266,
+36987,
+19404,
+10560,
+29446,
+96,
+11017,
+13904,
+17664,
+1629,
+40529,
+17520,
+7680,
+9697,
+15012,
+64518,
+508,
+4164,
+15012,
+17664,
+1459,
+1631,
+13294,
+36353,
+8192,
+4666,
+10565,
+24467,
+1372,
+43967,
+266,
+29976,
+36354,
+7098,
+42206,
+8714,
+21061,
+124,
+5888,
+45,
+2722,
+125,
+45147,
+20504,
+25157,
+117,
+1024,
+6688,
+222,
+15012,
+57099,
+8760,
+266,
+2048,
+56974,
+44544,
+19223,
+48709,
+8363,
+490,
+37289,
+1620,
+1099,
+52383,
+17664,
+256,
+27102,
+56974,
+249,
+1099,
+14394,
+24462,
+27102,
+1712,
+56979,
+1735,
+256,
+10089,
+56335,
+1541,
+64549,
+10347,
+51300,
+266,
+10347,
+256,
+56979,
+36353,
+49252,
+35636,
+5120,
+1410,
+56974,
+124,
+19405,
+56974,
+1631,
+18461,
+15012,
+24460,
+10089,
+4164,
+45137,
+56979,
+10324,
+56951,
+4351,
+30726,
+34048,
+20496,
+17664,
+263,
+61175,
+8668,
+17664,
+9984,
+61175,
+48388,
+27607,
+10496,
+4130,
+2816,
+1222,
+522,
+58812,
+45824,
+12122,
+1500,
+256,
+15012,
+16384,
+25344,
+25773,
+6807,
+361,
+2539,
+10320,
+52926,
+6269,
+56463,
+34665,
+20496,
+53336,
+42206,
+16384,
+4130,
+676,
+5120,
+27102,
+1571,
+52600,
+56974,
+16384,
+1024,
+10089,
+848,
+36353,
+56,
+256,
+51796,
+52608,
+14394,
+56327,
+119,
+30550,
+5840,
+12189,
+123,
+9984,
+6869,
+32768,
+16384,
+13568,
+47373,
+6177,
+245,
+56055,
+4130,
+22117,
+52,
+125,
+6144,
+20970,
+36354,
+46917,
+16384,
+41472,
+369,
+16529,
+30719,
+7424,
+56974,
+15012,
+22863,
+8192,
+60672,
+8682,
+56974,
+13541,
+2962,
+28060,
+267,
+17664,
+86,
+21872,
+16794,
+523,
+16384,
+256,
+25858,
+32826,
+3017,
+16384,
+28928,
+9984,
+539,
+56951,
+14394,
+41541,
+11843,
+280,
+31056,
+120,
+292,
+17664,
+22784,
+6212,
+1500,
+31238,
+36354,
+40307,
+17664,
+1280,
+32792,
+1368,
+56974,
+31636,
+37632,
+22096,
+36354,
+122,
+768,
+56974,
+2309,
+42206,
+125,
+256,
+263,
+52627,
+53306,
+17664,
+40,
+1657,
+9984,
+3293,
+26481,
+48,
+124,
+256,
+51,
+42206,
+17664,
+14374,
+124,
+6580,
+14394,
+26830,
+124,
+256,
+238,
+36354,
+16384,
+6346,
+54096,
+65082,
+6725,
+9984,
+5658,
+12032,
+65082,
+39234,
+51,
+20504,
+17664,
+30612,
+263,
+8230,
+9040,
+36353,
+51591,
+7024,
+23267,
+4130,
+3203,
+29446,
+2048,
+515,
+36354,
+22659,
+31246,
+32784,
+524,
+3072,
+58,
+17664,
+1759,
+256,
+2048,
+35664,
+17664,
+1768,
+48888,
+55632,
+3251,
+1586,
+1273,
+52638,
+36353,
+56340,
+11520,
+23893,
+42206,
+16384,
+260,
+33536,
+27102,
+42206,
+581,
+9817,
+524,
+30976,
+8192,
+8760,
+21317,
+16384,
+63886,
+17664,
+256,
+8760,
+256,
+56979,
+40,
+256,
+44090,
+58,
+16384,
+1099,
+21328,
+268,
+249,
+56979,
+63750,
+4130,
+16384,
+52788,
+17664,
+16637,
+31750,
+10089,
+33872,
+16384,
+27102,
+3311,
+13446,
+22844,
+3318,
+40,
+56885,
+25424,
+57038,
+6699,
+13136,
+120,
+39680,
+282,
+11639,
+14394,
+8776,
+10089,
+65278,
+63750,
+1099,
+525,
+16384,
+256,
+658,
+8760,
+525,
+7493,
+40,
+30982,
+63271,
+20496,
+6645,
+25858,
+20496,
+31750,
+5632,
+7444,
+61193,
+6160,
+525,
+17664,
+124,
+256,
+9776,
+57017,
+42206,
+249,
+1083,
+20504,
+1500,
+1675,
+35920,
+56974,
+16384,
+2158,
+45370,
+17358,
+256,
+6144,
+525,
+4352,
+42206,
+16384,
+60,
+18968,
+292,
+15012,
+119,
+6346,
+34265,
+51463,
+24602,
+56974,
+18176,
+37756,
+53719,
+38059,
+40,
+16384,
+256,
+30550,
+56974,
+3489,
+30726,
+9754,
+57359,
+22096,
+42565,
+50432,
+40202,
+34860,
+525,
+40,
+1702,
+256,
+8710,
+4164,
+525,
+2933,
+44208,
+17664,
+125,
+2816,
+22552,
+6212,
+50757,
+15959,
+2640,
+28730,
+40,
+14080,
+2558,
+42206,
+1500,
+6346,
+20504,
+525,
+53,
+40302,
+20504,
+44,
+295,
+6380,
+32784,
+270,
+16384,
+256,
+30550,
+56974,
+1024,
+37090,
+56974,
+17664,
+538,
+6212,
+3629,
+41984,
+6699,
+24897,
+1500,
+3441,
+13136,
+62522,
+16384,
+256,
+6699,
+3325,
+55808,
+38426,
+10780,
+15012,
+20837,
+63750,
+256,
+42108,
+56400,
+32262,
+24836,
+42206,
+44101,
+8274,
+1216,
+36353,
+40773,
+4352,
+4130,
+56974,
+4608,
+3925,
+42206,
+4098,
+281,
+35397,
+19156,
+12041,
+8760,
+27656,
+8760,
+65093,
+4864,
+27768,
+1674,
+57315,
+36353,
+17664,
+5120,
+10089,
+14405,
+13657,
+4130,
+3701,
+14342,
+3335,
+10089,
+17664,
+62208,
+53011,
+526,
+35570,
+19407,
+42206,
+27664,
+5120,
+42206,
+15012,
+17664,
+52331,
+16384,
+4864,
+59906,
+32826,
+40,
+52871,
+256,
+15226,
+28496,
+36354,
+3740,
+5895,
+23040,
+10089,
+17664,
+256,
+56447,
+46026,
+42709,
+10089,
+36354,
+31750,
+256,
+20069,
+34874,
+56336,
+10089,
+56974,
+4864,
+27102,
+17520,
+3770,
+5122,
+30550,
+42206,
+55498,
+42752,
+263,
+21974,
+36354,
+29446,
+37707,
+3828,
+117,
+6688,
+6178,
+120,
+4224,
+20430,
+17664,
+38162,
+8250,
+2048,
+9890,
+17664,
+20496,
+527,
+11201,
+27264,
+48384,
+8665,
+17664,
+29629,
+16384,
+1215,
+20496,
+50490,
+9754,
+51796,
+3771,
+9552,
+32006,
+216,
+36400,
+37968,
+36609,
+16384,
+6400,
+282,
+6177,
+17664,
+125,
+54016,
+1500,
+25726,
+37888,
+14829,
+56951,
+512,
+5304,
+13824,
+67,
+512,
+1024,
+6736,
+29923,
+10374,
+45,
+14394,
+512,
+31101,
+52399,
+303,
+31949,
+6398,
+131,
+9984,
+7983,
+11439,
+20504,
+55621,
+40,
+43258,
+512,
+17664,
+5120,
+37461,
+20496,
+1545,
+1129,
+37461,
+37278,
+4164,
+49466,
+32006,
+6400,
+62413,
+20496,
+17664,
+28928,
+36609,
+29850,
+6688,
+15270,
+6177,
+288,
+124,
+13824,
+539,
+15909,
+44155,
+20496,
+36610,
+44,
+13574,
+48189,
+7077,
+5120,
+56975,
+22022,
+64266,
+15012,
+16384,
+46860,
+37495,
+20504,
+257,
+13437,
+2816,
+6699,
+15162,
+359,
+16384,
+37707,
+11201,
+36609,
+36771,
+20487,
+16112,
+36609,
+15012,
+513,
+124,
+512,
+22065,
+38882,
+16384,
+20737,
+26693,
+16384,
+9697,
+513,
+1731,
+972,
+2048,
+14394,
+17664,
+52,
+56979,
+64295,
+256,
+53148,
+36610,
+8760,
+16384,
+4864,
+28730,
+122,
+256,
+40082,
+36609,
+4864,
+42206,
+16384,
+16825,
+58,
+16384,
+5120,
+37707,
+17664,
+2304,
+703,
+58,
+50787,
+12439,
+6177,
+58655,
+44024,
+36609,
+8840,
+36610,
+36471,
+10023,
+15012,
+29253,
+41984,
+10089,
+513,
+124,
+256,
+31105,
+10053,
+64518,
+3926,
+42206,
+40,
+52224,
+1839,
+3926,
+58939,
+2117,
+120,
+51456,
+4363,
+2163,
+42206,
+4864,
+1262,
+27428,
+42206,
+32006,
+256,
+56975,
+249,
+11047,
+1861,
+4864,
+14394,
+31750,
+6346,
+2474,
+257,
+31729,
+63271,
+56975,
+56,
+24836,
+58192,
+16384,
+11201,
+60474,
+17884,
+26724,
+514,
+21061,
+16384,
+1540,
+6688,
+42206,
+42206,
+2907,
+12800,
+6699,
+16640,
+20496,
+37189,
+13312,
+51723,
+20504,
+38213,
+13482,
+13312,
+18871,
+64581,
+31750,
+256,
+6178,
+63750,
+42720,
+4350,
+53351,
+2048,
+33723,
+53324,
+36609,
+21000,
+50681,
+563,
+44288,
+2159,
+3926,
+15012,
+36610,
+16384,
+18688,
+21504,
+40960,
+63382,
+60229,
+1760,
+27005,
+5707,
+61765,
+73,
+1477,
+39482,
+34751,
+5840,
+56975,
+40,
+31105,
+8760,
+640,
+17664,
+11520,
+8192,
+1216,
+14394,
+36609,
+17664,
+15386,
+7444,
+38509,
+56975,
+47429,
+16384,
+4096,
+256,
+1242,
+29187,
+56975,
+31750,
+31105,
+29815,
+53529,
+11264,
+1086,
+56975,
+55154,
+6688,
+8218,
+56975,
+9541,
+280,
+58,
+30726,
+57199,
+17664,
+120,
+21361,
+42206,
+51013,
+14829,
+58,
+932,
+5632,
+658,
+61008,
+56975,
+322,
+256,
+32105,
+51,
+658,
+4130,
+56975,
+1591,
+6400,
+42051,
+56442,
+15012,
+38213,
+18835,
+18423,
+15012,
+3535,
+29952,
+260,
+16640,
+20496,
+31750,
+192,
+6699,
+63588,
+59786,
+64817,
+64570,
+10576,
+19145,
+31494,
+8760,
+40,
+19239,
+1567,
+19408,
+259,
+4191,
+24576,
+27102,
+64000,
+56336,
+1911,
+10089,
+1500,
+256,
+27102,
+24269,
+8164,
+35623,
+515,
+8160,
+53450,
+36610,
+32006,
+256,
+27102,
+15012,
+14394,
+17664,
+56979,
+56975,
+9567,
+24836,
+16208,
+36609,
+56497,
+38285,
+24836,
+26724,
+886,
+84,
+353,
+20496,
+17664,
+256,
+63271,
+19408,
+36609,
+1536,
+256,
+5241,
+56979,
+56975,
+56,
+4576,
+19409,
+909,
+124,
+256,
+6699,
+25658,
+17232,
+8672,
+28955,
+14592,
+19409,
+9285,
+16384,
+33041,
+2885,
+1567,
+20263,
+36610,
+1500,
+30726,
+49,
+53553,
+259,
+16384,
+215,
+353,
+56975,
+40,
+29702,
+21504,
+353,
+27951,
+53551,
+259,
+14342,
+3072,
+46976,
+948,
+1719,
+19798,
+4129,
+17664,
+16384,
+63827,
+5241,
+44950,
+56975,
+15012,
+45862,
+58880,
+7905,
+51269,
+28957,
+53562,
+17520,
+8448,
+369,
+40529,
+56975,
+24836,
+55577,
+259,
+66,
+22530,
+259,
+24576,
+40976,
+64000,
+10323,
+1760,
+58192,
+260,
+124,
+256,
+20739,
+14336,
+28730,
+1045,
+48390,
+2560,
+46104,
+17520,
+15012,
+56975,
+1075,
+56416,
+16384,
+16077,
+20496,
+56975,
+13592,
+17199,
+42206,
+17519,
+117,
+1727,
+57065,
+41,
+31105,
+20538,
+1101,
+33291,
+1682,
+2996,
+28730,
+10270,
+124,
+4864,
+20739,
+42910,
+1125,
+64669,
+17025,
+65188,
+31238,
+13056,
+51815,
+40381,
+36610,
+17664,
+1590,
+16896,
+15012,
+7168,
+1368,
+56951,
+39738,
+31870,
+13338,
+41984,
+65201,
+20858,
+56975,
+1500,
+13304,
+55552,
+25759,
+59392,
+51823,
+40529,
+42206,
+36609,
+9436,
+16384,
+1024,
+40556,
+56975,
+10752,
+34602,
+6178,
+1199,
+32262,
+4608,
+6346,
+56951,
+56975,
+49253,
+1500,
+58112,
+4130,
+56975,
+1230,
+4352,
+13136,
+55610,
+17664,
+116,
+6912,
+43005,
+56975,
+1247,
+15360,
+40309,
+53562,
+42206,
+22031,
+56133,
+78,
+61776,
+16384,
+30550,
+53561,
+36610,
+16384,
+3098,
+31105,
+15012,
+6699,
+4300,
+17664,
+256,
+3926,
+1320,
+249,
+17688,
+25705,
+12561,
+16384,
+5888,
+20739,
+27400,
+4130,
+10320,
+11034,
+14394,
+1500,
+124,
+1536,
+4164,
+17664,
+53523,
+2048,
+46174,
+15012,
+256,
+12963,
+17939,
+14049,
+51,
+36610,
+17664,
+10340,
+282,
+24008,
+12032,
+42206,
+24812,
+1630,
+20496,
+1388,
+1774,
+11008,
+24008,
+14394,
+125,
+955,
+17520,
+517,
+17664,
+1500,
+31750,
+1024,
+1024,
+6465,
+8807,
+30464,
+5658,
+8710,
+56610,
+261,
+16384,
+353,
+23555,
+20504,
+4386,
+2159,
+17232,
+53306,
+16581,
+123,
+12032,
+1024,
+58298,
+17767,
+124,
+256,
+2128,
+261,
+256,
+31105,
+15012,
+1500,
+3328,
+26932,
+56975,
+1499,
+21729,
+2816,
+1028,
+53725,
+36610,
+50176,
+10089,
+517,
+1536,
+1099,
+517,
+4238,
+11264,
+56975,
+4240,
+28607,
+34885,
+96,
+65196,
+63750,
+56979,
+10348,
+4864,
+20496,
+56975,
+32718,
+29188,
+58,
+34065,
+11264,
+55202,
+65535,
+256,
+57199,
+47429,
+19518,
+45856,
+1541,
+32003,
+1567,
+53667,
+28730,
+17664,
+8760,
+5178,
+31494,
+4864,
+8760,
+4864,
+6178,
+22085,
+24594,
+56336,
+8760,
+5120,
+10089,
+53689,
+42206,
+7870,
+18818,
+6687,
+11015,
+31368,
+32768,
+27772,
+65147,
+36610,
+33792,
+53769,
+42206,
+249,
+4864,
+56979,
+36677,
+17664,
+31494,
+256,
+22871,
+36609,
+113,
+1099,
+3463,
+1589,
+10348,
+28928,
+5120,
+34663,
+58298,
+42206,
+15987,
+22393,
+262,
+49742,
+13576,
+11125,
+1614,
+17664,
+10449,
+2048,
+6699,
+11017,
+64918,
+36609,
+51525,
+19905,
+32256,
+5632,
+717,
+20496,
+26189,
+51200,
+56979,
+1565,
+256,
+717,
+58298,
+28218,
+52,
+7546,
+4864,
+6699,
+15012,
+11333,
+120,
+57746,
+11125,
+57017,
+64000,
+1657,
+31750,
+30720,
+37651,
+42,
+8692,
+23365,
+21733,
+52736,
+51777,
+15012,
+1666,
+17664,
+1759,
+538,
+12032,
+20496,
+15012,
+31494,
+768,
+263,
+1105,
+56975,
+20504,
+56372,
+32006,
+7424,
+18237,
+17518,
+1622,
+97,
+6178,
+42206,
+1500,
+123,
+2220,
+16290,
+63741,
+42206,
+124,
+30154,
+51783,
+20496,
+17664,
+16497,
+2048,
+8194,
+1059,
+17664,
+31494,
+28999,
+34709,
+11589,
+16384,
+28928,
+35920,
+52279,
+40,
+6655,
+22018,
+15012,
+1750,
+125,
+16056,
+22352,
+17664,
+123,
+52727,
+15012,
+518,
+16384,
+1024,
+7450,
+17518,
+40,
+97,
+6736,
+42206,
+16384,
+1032,
+4164,
+40,
+369,
+42206,
+252,
+51839,
+17680,
+65376,
+256,
+22018,
+20496,
+14394,
+17664,
+120,
+34816,
+13576,
+41913,
+4130,
+56975,
+30533,
+13382,
+13576,
+5122,
+51,
+5896,
+56420,
+25471,
+11264,
+18564,
+4130,
+14394,
+36610,
+9536,
+124,
+256,
+17298,
+4130,
+13384,
+256,
+768,
+36253,
+41474,
+20496,
+28928,
+41067,
+47952,
+28730,
+13268,
+16384,
+1577,
+4096,
+44962,
+15012,
+1500,
+768,
+8192,
+47010,
+14394,
+20049,
+63233,
+52727,
+46328,
+263,
+13396,
+19456,
+6699,
+1422,
+20496,
+26181,
+16384,
+53,
+58249,
+6212,
+36609,
+16384,
+9998,
+63258,
+17520,
+38411,
+18432,
+53,
+290,
+56975,
+56372,
+44058,
+63258,
+20496,
+60692,
+3072,
+44058,
+24602,
+42206,
+56,
+3072,
+12696,
+8760,
+1932,
+17664,
+33251,
+1936,
+5186,
+1782,
+11016,
+3808,
+28218,
+120,
+954,
+31105,
+4676,
+628,
+123,
+20224,
+53,
+11034,
+4350,
+13407,
+28928,
+47105,
+8760,
+31494,
+2048,
+8888,
+45882,
+43904,
+15012,
+36609,
+13412,
+56576,
+51,
+20496,
+42206,
+17664,
+16384,
+256,
+21504,
+47105,
+6212,
+42206,
+48112,
+125,
+28928,
+4576,
+50554,
+16384,
+2048,
+51991,
+52727,
+519,
+64774,
+27102,
+252,
+24882,
+42206,
+1500,
+7476,
+256,
+56979,
+1500,
+28928,
+20011,
+28730,
+36677,
+4864,
+42206,
+123,
+67,
+9998,
+8760,
+17218,
+1500,
+1099,
+36609,
+56372,
+5120,
+848,
+42206,
+14342,
+14394,
+2019,
+5120,
+30155,
+58,
+31494,
+2048,
+61175,
+15012,
+17664,
+14342,
+44058,
+15012,
+16384,
+256,
+263,
+2048,
+39760,
+64518,
+16072,
+56336,
+54055,
+36610,
+4864,
+63718,
+36609,
+16384,
+14394,
+256,
+27102,
+40684,
+42206,
+53886,
+55713,
+17664,
+26270,
+353,
+28730,
+39749,
+58835,
+45111,
+6760,
+32006,
+6699,
+63271,
+57215,
+2059,
+1623,
+2220,
+30155,
+19410,
+46650,
+1631,
+22257,
+56144,
+2064,
+1500,
+31494,
+22018,
+23866,
+2048,
+45,
+46522,
+60288,
+9141,
+40,
+256,
+8760,
+56336,
+19410,
+42206,
+1571,
+10089,
+17664,
+11520,
+56979,
+61253,
+13576,
+12190,
+20496,
+14394,
+36609,
+27811,
+113,
+27102,
+63258,
+63546,
+32387,
+20496,
+28218,
+17664,
+31750,
+5127,
+63258,
+6736,
+36609,
+2124,
+17664,
+56329,
+2220,
+31923,
+52727,
+264,
+1599,
+7168,
+11264,
+12272,
+36609,
+45824,
+2560,
+256,
+27465,
+20504,
+36609,
+16384,
+28928,
+2048,
+2220,
+1313,
+249,
+19411,
+6736,
+56975,
+123,
+23296,
+1262,
+42326,
+51329,
+17824,
+50254,
+44058,
+44374,
+4131,
+40773,
+1561,
+28928,
+4864,
+42206,
+17664,
+124,
+28928,
+11125,
+50518,
+36326,
+62,
+63258,
+63258,
+48664,
+16384,
+51354,
+15757,
+8760,
+39237,
+29748,
+32006,
+256,
+6699,
+30155,
+717,
+8672,
+55049,
+32006,
+266,
+62720,
+15012,
+57396,
+1500,
+1536,
+6400,
+11373,
+30155,
+17518,
+520,
+1024,
+37762,
+63258,
+62591,
+2220,
+32442,
+45381,
+3648,
+521,
+17664,
+56340,
+6688,
+32171,
+41552,
+63557,
+1699,
+58880,
+17520,
+36610,
+44177,
+6699,
+6736,
+15012,
+40,
+31761,
+34473,
+6688,
+4176,
+15012,
+123,
+9472,
+17518,
+36609,
+40,
+6050,
+47828,
+16568,
+538,
+8098,
+15012,
+14569,
+41533,
+1024,
+6736,
+15012,
+32006,
+768,
+53,
+64806,
+40,
+30726,
+59136,
+36610,
+123,
+256,
+64848,
+19915,
+26268,
+1629,
+30156,
+52727,
+265,
+125,
+34048,
+256,
+53,
+3865,
+33872,
+32006,
+11125,
+56979,
+4164,
+42206,
+55877,
+61173,
+256,
+6346,
+659,
+4164,
+42206,
+13381,
+245,
+13058,
+52727,
+20496,
+30158,
+40,
+32000,
+256,
+3601,
+42206,
+14394,
+36610,
+1500,
+50673,
+11016,
+41474,
+20504,
+15012,
+265,
+16384,
+263,
+303,
+42206,
+30976,
+6400,
+6688,
+717,
+15012,
+36609,
+1500,
+1775,
+16077,
+521,
+249,
+58151,
+2467,
+113,
+19411,
+249,
+26724,
+265,
+4336,
+45568,
+19411,
+4164,
+56975,
+1500,
+19411,
+14394,
+63750,
+32592,
+44869,
+1561,
+30156,
+6178,
+36610,
+19411,
+17520,
+46324,
+64273,
+10496,
+1262,
+52727,
+14394,
+27205,
+40940,
+31855,
+265,
+4347,
+24836,
+4164,
+1500,
+5120,
+37144,
+19411,
+42206,
+10752,
+23335,
+41530,
+56,
+256,
+717,
+4351,
+64,
+34798,
+53,
+52295,
+8603,
+50496,
+6178,
+32006,
+64,
+30712,
+8250,
+18963,
+35397,
+1723,
+41474,
+31856,
+2514,
+27838,
+6912,
+717,
+19411,
+42206,
+628,
+35393,
+3463,
+10348,
+11016,
+52048,
+2528,
+16384,
+29440,
+11317,
+4164,
+58785,
+10496,
+30156,
+13689,
+17664,
+7936,
+2220,
+7288,
+56975,
+40,
+53,
+51364,
+15012,
+16384,
+659,
+44058,
+36610,
+256,
+14394,
+27102,
+4373,
+1083,
+13541,
+41552,
+65082,
+124,
+28928,
+10089,
+6736,
+2570,
+659,
+4164,
+266,
+56,
+7424,
+44058,
+56979,
+20496,
+1500,
+1662,
+10510,
+15685,
+52727,
+42206,
+23808,
+2220,
+12117,
+30156,
+522,
+32006,
+6912,
+41474,
+6212,
+56975,
+};
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,408 @@
+/*
+ * search.c - Searching routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ *
+ * Permission is granted to anyone to make or distribute copies
+ * of this source code, either as received or modified, in any
+ * medium, provided that all copyright notices, permission and
+ * nonwarranty notices are preserved, and that the distributor
+ * grants the recipient permission for further redistribution as
+ * permitted by this document.
+ *
+ * Permission is granted to distribute this file in compiled
+ * or executable form under the same conditions that apply for
+ * source code, provied that either:
+ *
+ * A. it is accompanied by the corresponding machine-readable
+ * source code,
+ * B. it is accompanied by a written offer, with no time limit,
+ * to give anyone a machine-readable copy of the corresponding
+ * source code in return for reimbursement of the cost of
+ * distribution. This written offer must permit verbatim
+ * duplication by anyone, or
+ * C. it is distributed by someone who received only the
+ * executable form, and is accompanied by a copy of the
+ * written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "utils.h"
+#include "search.h"
+#include "url.h"
+
+#define min(a, b) (a > b ? b : a)
+
+extern StrTreeNode *tree_head;
+
+int *
+calculate_bm_table (char *pattern, int pattern_length)
+{
+ int i;
+ int *returnval = (int *) malloc (sizeof(int) * CHAR_SIZE);
+
+ if (returnval == NULL)
+ fatal ("Not enough virtual memory \n");
+
+ for (i = 0; i < CHAR_SIZE; ++i)
+ returnval[i] = pattern_length;
+
+ for (i = 0; i < pattern_length; ++i)
+ returnval[(unsigned char)pattern[i]] = pattern_length - i - 1;
+
+ return returnval;
+}
+
+
+/********************************************************************\
+* boyer_moore: Implements the Boyer-Moore al;gorithm to search the *
+* string x within string x. This is known to be one of *
+* the most efficient string search algorithms. *
+* *
+* Inputs: Large and small pattern information *
+* bmBc: the character table used for the algorithm, *
+* instead of generating it for every call, we generate the *
+* table once in the creation and use it for every search. *
+* *
+* Returns: The location of the match, -1 if no match *
+\********************************************************************/
+int
+boyer_moore (char *y, int n, char *x, int m, int *bmBc)
+{
+ int j, k, shift;
+
+ shift = m - 1;
+ j = 0;
+ /* while (j < n) */
+ /* Changed while-loop bound to prevent reading off the end of the array.
+ * -KF 2/2007 */
+ while (j + m - 1 < n)
+ {
+ k = bmBc[(unsigned char)y[j + m -1]];
+ /* while ((k != 0) && (j < n)) */
+ /* Changed while-loop bound to prevent reading off the end of the array.
+ * -KF 2/2007 */
+ while ((k != 0) && (j + k + m - 1 < n))
+ {
+ j += k;
+ k = bmBc[(unsigned char)y[j + m -1]];
+ }
+
+ if (memcmp(x, y + j, m - 1) == 0 && (j < n))
+ return(j);
+ j += shift;
+ }
+ return -1;
+}
+
+struct rtentry *
+find_destination (char *packet, int packet_size)
+{
+ StrTreeNode *iterator = tree_head;
+
+ while (iterator)
+ {
+#ifdef DEBUG_2
+ fprintf (stderr, "Comparing to %s \n", iterator->common_pattern);
+#endif
+
+ /* If the packet contains the pattern at the header... */
+ if ((boyer_moore (packet, packet_size, iterator->common_pattern, iterator->common_pattern_length, iterator->bm_table) != -1))
+ {
+ /* We found a common substring in the header, so look into the list... */
+ PatternNode *list = iterator->list;
+ while (list)
+ {
+ int search_result;
+#ifdef DEBUG_2
+ fprintf (stderr, "Inside comparing to %s \n", iterator->common_pattern);
+#endif
+ if (list->search_depth == 0)
+ search_result = boyer_moore (packet, packet_size, list->pattern, list->pattern_length, list->bm_table);
+ else
+ search_result = boyer_moore (packet, min(packet_size, list->search_depth), list->pattern, list->pattern_length, list->bm_table);
+
+ if (search_result != -1)
+ {
+#ifdef DEBUG
+ fprintf (stderr, "Found a packet \n");
+#endif
+ /* An exact match */
+ if (list->type == log)
+ fprintf (list->logto, "Source: %x Destination %x \n", PACKET_SOURCE(packet), PACKET_DESTINATION(packet));
+ return list->destination;
+ }
+ list = list->below;
+ }
+ }
+ iterator = iterator->next;
+ }
+
+ /* No match, no rule can be find for the packet... */
+ return NULL;
+}
+
+
+/********************************************************************\
+* Procedures to generate empty nodes. *
+\********************************************************************/
+PatternNode *
+NewPatternNode (int chainno, nodetype type, char *pattern, int pattern_length, int search_depth)
+{
+ PatternNode *returnval;
+
+ if ((returnval = (PatternNode *) malloc (sizeof (PatternNode))) == NULL)
+ fatal ("Run out of virtual memory \n");
+
+ returnval->chain_node_number = chainno;
+ returnval->type = type;
+ if ((returnval->pattern = (char *) malloc (pattern_length)) == NULL)
+ fatal ("Not enough virtual memory \n");
+ strncpy (returnval->pattern, pattern, pattern_length);
+ returnval->pattern_length = pattern_length;
+ returnval->search_depth = search_depth;
+ returnval->bm_table = calculate_bm_table (pattern, pattern_length);
+
+ return returnval;
+}
+
+StrTreeNode *
+NewStrTreeNode (int chainno, char *pattern, int pattern_length)
+{
+ StrTreeNode *returnval;
+
+ if ((returnval = (StrTreeNode *) malloc (sizeof (StrTreeNode))) == NULL)
+ fatal ("Run out of virtual memory \n");
+
+ returnval->chain_node_number = chainno;
+ if ((returnval->common_pattern = (char *) malloc (pattern_length)) == NULL)
+ fatal ("Not enough virtual memory \n");
+ strncpy (returnval->common_pattern, pattern, pattern_length);
+ returnval->common_pattern_length = pattern_length;
+ returnval->bm_table = calculate_bm_table (returnval->common_pattern, pattern_length);
+
+ return returnval;
+}
+
+
+/********************************************************************\
+* Find_lcs: A modified version of the boyer-moore algorithm to find *
+* the largest common substring *
+* *
+* Inputs: Large and small pattern information *
+* lcssize: return value of the procedure *
+* *
+* Returns: The largest substring found *
+\********************************************************************/
+char *
+find_lcs (char *largepattern, int largepatternsize, char *smallpattern, int smallpatternsize, int *lcssize)
+{
+ char *sub_pattern = NULL;
+ char *exchanger;
+ int sub_pat_size = 0;
+ int j, k, shift, exchangersize;
+ int *bmBc;
+
+ /* Make sure the large is larger */
+ if (smallpatternsize > largepatternsize)
+ {
+ exchanger = smallpattern;
+ smallpattern = largepattern;
+ largepattern = exchanger;
+ exchangersize = smallpatternsize;
+ smallpatternsize = largepatternsize;
+ largepatternsize = exchangersize;
+ }
+
+ bmBc = calculate_bm_table (smallpattern, smallpatternsize);
+
+ shift = 1;
+ j = 0;
+ k = bmBc[(unsigned char)largepattern[j + smallpatternsize -1]];
+ while (j < largepatternsize)
+ {
+ j += k;
+ k = bmBc[(unsigned char)largepattern[j + smallpatternsize -1]];
+ /* Unlike original BM we can not shift the whole subpattern */
+ if (k == smallpatternsize)
+ k = sub_pat_size + 1;
+ else
+ {
+ /* Match in the characters, check how big the substring is */
+ int first_char = j + smallpatternsize - 1;
+ int temp_sub_size = 0;
+
+ /* First move back to find the start of the partial match */
+ while ((k < smallpatternsize) && (smallpattern[smallpatternsize - k - 1] == largepattern[first_char]))
+ {
+ first_char--;
+ k++;
+ }
+ k--;
+ first_char++;
+
+ /* Now move forward until there is a mismatch */
+ while ((k >= 0) && (smallpattern[smallpatternsize - k - 1] == largepattern[first_char]))
+ {
+ temp_sub_size++;
+ k--;
+ first_char++;
+ }
+
+ if (temp_sub_size > sub_pat_size)
+ {
+ sub_pat_size = temp_sub_size;
+ sub_pattern = &largepattern[first_char - temp_sub_size];
+
+ /* If it is equal to the small pattern, no need to continue */
+ if (sub_pat_size == smallpatternsize)
+ {
+ *lcssize = sub_pat_size;
+ return sub_pattern;
+ }
+ }
+
+ k = 1;
+ }
+ }
+ *lcssize = sub_pat_size;
+ return sub_pattern;
+}
+
+void
+insert_rule (char *pattern, int pattern_length, int depth)
+{
+ StrTreeNode *head_iterator = tree_head;
+ StrTreeNode *found_largestcommon = NULL;
+ unsigned int largest_common = 0;
+ char *sub_str;
+
+ /* First traverse all the headers finding the longest common substring */
+ while (head_iterator)
+ {
+ int temp_common;
+ char *temp_str = find_lcs (head_iterator->common_pattern, head_iterator->common_pattern_length, pattern, pattern_length, &temp_common);
+
+#ifdef DEBUG_2
+ fprintf (stdout, "Compared %s to %s and found %s with size %d \n", head_iterator->common_pattern, pattern, temp_str, temp_common);
+#endif
+
+ if (temp_common > largest_common)
+ {
+ largest_common = temp_common;
+ found_largestcommon = head_iterator;
+ sub_str = temp_str;
+ }
+ head_iterator = head_iterator->next;
+ }
+
+ if (largest_common < MIN_COMMON_SIZE)
+ {
+ /* We have to create a new head */
+ PatternNode *new_node;
+ StrTreeNode *new_head;
+
+ if (tree_head != NULL)
+ new_head = NewStrTreeNode (tree_head->chain_node_number + 1, pattern, pattern_length);
+ else
+ new_head = NewStrTreeNode (0, pattern, pattern_length);
+
+ new_node = NewPatternNode (0, route, pattern, pattern_length, depth);
+ new_node->below = NULL;
+
+ new_head->list = new_node;
+ new_head->next = tree_head;
+ tree_head = new_head;
+ }
+ else
+ {
+ /* Found a header matching the common value that is large enough */
+ PatternNode *new_node;
+
+ /* First change the head pattern (chunk it off) */
+ strncpy (found_largestcommon->common_pattern, sub_str, largest_common);
+ found_largestcommon->common_pattern_length = largest_common;
+
+ /* Add the entry to the head list */
+ new_node = NewPatternNode (found_largestcommon->list->chain_node_number + 1, route, pattern, pattern_length, depth);
+ new_node->below = found_largestcommon->list;
+ found_largestcommon->list = new_node;
+ }
+}
+
+void
+db_init (char *file_name)
+{
+ FILE *pattern_file;
+ char line[BUF_SIZE];
+ char *reader;
+ int i;
+ char *pattern;
+
+
+ if ((pattern_file = fopen (file_name, "r")) == NULL)
+ fatal ("Can not open the input file\n");
+
+ /* Initialize the tree structure */
+ while (fgets (line, BUF_SIZE, pattern_file) != NULL)
+ {
+ int value;
+ int pattern_length, search_depth;
+
+ reader = line + 1;
+ switch (line[0])
+ {
+ case '1':
+ sscanf (reader, "(%d)", &pattern_length);
+ search_depth = 0;
+ break;
+ case '2':
+ sscanf (reader, "(%d:%d)", &pattern_length, &search_depth);
+ break;
+ default:
+ fatal ("unrecognized input line start: %c \n", line[0]);
+ }
+
+ if ((pattern = (char *) malloc (pattern_length + 1)) == NULL)
+ fatal ("Not enough virtual memory \n");
+
+ for (i = 0; i < pattern_length; i++)
+ {
+ while (*reader != ',')
+ reader++;
+ reader++;
+ sscanf (reader, " %d", &value);
+ pattern[i] = (char)value;
+#ifdef DEBUG_2
+ fprintf (stdout, "Read value: %d \n", value);
+#endif
+ }
+
+ pattern[pattern_length] = '\0';
+
+#ifdef DEBUG_2
+ fprintf (stdout, "Pattern: %s, length: %d depth: %d, tree before: %x\n", pattern, pattern_length, search_depth, tree_head);
+#endif
+
+ insert_rule (pattern, pattern_length, search_depth);
+
+#ifdef DEBUG_2
+ fprintf (stdout, "Tree after: %x\n", tree_head);
+#endif
+ }
+}
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/search.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,89 @@
+/*
+ * search.h - Searching routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ *
+ * Permission is granted to anyone to make or distribute copies
+ * of this source code, either as received or modified, in any
+ * medium, provided that all copyright notices, permission and
+ * nonwarranty notices are preserved, and that the distributor
+ * grants the recipient permission for further redistribution as
+ * permitted by this document.
+ *
+ * Permission is granted to distribute this file in compiled
+ * or executable form under the same conditions that apply for
+ * source code, provied that either:
+ *
+ * A. it is accompanied by the corresponding machine-readable
+ * source code,
+ * B. it is accompanied by a written offer, with no time limit,
+ * to give anyone a machine-readable copy of the corresponding
+ * source code in return for reimbursement of the cost of
+ * distribution. This written offer must permit verbatim
+ * duplication by anyone, or
+ * C. it is distributed by someone who received only the
+ * executable form, and is accompanied by a copy of the
+ * written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them.
+ */
+
+#ifdef LITTLE_ENDIAN
+#define PACKET_LENGTH(packet) (((unsigned char)packet[2] << 8) + (unsigned char)packet[3])
+#else
+#define PACKET_LENGTH(packet) (*(unsigned short *)&packet[2])
+#endif
+
+#define PACKET_SOURCE(packet) (*(unsigned int *)&packet[12])
+#define PACKET_DESTINATION(packet) (*(unsigned int *)&packet[16])
+
+#define BUF_SIZE 2048
+
+typedef enum _nodetype {log, route} nodetype;
+
+#define CHAR_SIZE 256
+
+/* Patterns are stored in a two-dimensional link. The headers contain
+ a common substring for all the patterns in the nodes stored in the
+ link below. The links contain the actual elements to be searched */
+
+typedef struct _PatternNode
+{
+ int chain_node_number; /* Label */
+
+ nodetype type; /* log and route, or just route */
+ int proto; /* protocol, currently not used */
+ FILE *logto; /* log file in which to write packets which
+ match this rule, if the logging is activated. */
+ char *pattern; /* pattern to search for */
+ int pattern_length; /* Length of the pattern to be searched */
+ int search_depth; /* Length of section to be searched */
+ int *bm_table; /* BM Table used for searching */
+ struct rtentry *destination; /* Where to forward packets falling for the rule */
+ struct _PatternNode *below; /* The list ... */
+} PatternNode;
+
+
+typedef struct _StrTreeNode
+{
+ int chain_node_number; /* Label */
+ char *common_pattern; /* pattern to search for */
+ int common_pattern_length; /* Length of the pattern to be searched */
+ int *bm_table; /* BM Table used for searching */
+ struct _StrTreeNode *next; /* Next head in the list */
+ struct _PatternNode *list; /* List of patterns for the head (common subpattern) */
+} StrTreeNode;
+
+int boyer_moore (char *, int, char *, int, int *);
+struct rtentry *find_destination (char *, int);
+void db_init (char *);
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,146 @@
+/*
+ * url.c - Routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ *
+ *
+ * Permission is granted to anyone to make or distribute copies
+ * of this source code, either as received or modified, in any
+ * medium, provided that all copyright notices, permission and
+ * nonwarranty notices are preserved, and that the distributor
+ * grants the recipient permission for further redistribution as
+ * permitted by this document.
+ *
+ * Permission is granted to distribute this file in compiled
+ * or executable form under the same conditions that apply for
+ * source code, provied that either:
+ *
+ * A. it is accompanied by the corresponding machine-readable
+ * source code,
+ * B. it is accompanied by a written offer, with no time limit,
+ * to give anyone a machine-readable copy of the corresponding
+ * source code in return for reimbursement of the cost of
+ * distribution. This written offer must permit verbatim
+ * duplication by anyone, or
+ * C. it is distributed by someone who received only the
+ * executable form, and is accompanied by a copy of the
+ * written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them.
+ */
+
+#include <sys/param.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/socket.h>
+#include "packet.h"
+#include "utils.h"
+#include "search.h"
+#include "url.h"
+
+#define MAX_PACKET_SIZE 1500
+
+StrTreeNode *tree_head;
+
+long
+internet_checksum (addr, count)
+ unsigned short * addr;
+ int count;
+{
+ /*
+ * Compute Internet Checksum for "count" bytes
+ * beginning at location "addr".
+ */
+ register unsigned long sum = 0;
+
+ while( count > 1 )
+ {
+ sum+= ~((unsigned short)*addr++);
+ count -= 2;
+ }
+
+ /* Add left-over byte, if any */
+ if( count > 0 )
+ sum += * (unsigned char *) addr;
+
+ /* Fold 32-bit sum to 16 bits */
+ while (sum>>16)
+ sum = (sum & 0xffff) + (sum >> 16);
+
+#ifdef LITTLE_ENDIAN
+ sum = ((sum >> 8) & 0xFF) + ((sum << 8) & 0xFF00);
+#endif
+
+ return sum;
+}
+
+/*************************************************\
+* *
+* main: Initializes the string table *
+* Reads packets and compares them against *
+* the table *
+* *
+\************************************************/
+int main (int argc, char **argv)
+{
+ struct rtentry *entry;
+ unsigned int num_packets, i;
+ char *packet;
+
+ if (argc != 3)
+ fatal ("Usage: url inputfilename #numberofpackets");
+
+ num_packets = atoi (argv[2]);
+
+ /* Read the string information */
+ db_init(argv[1]);
+
+ fprintf (stdout, "URL table initialized, reading packets... \n");
+
+ /* The table is ready, now we get the packets... */
+ for (i = 0; i < num_packets; i++)
+ {
+ long original_checksum, checksum;
+
+ packet = get_next_packet();
+
+ /* We only have to check the checksum to make sure nothing is changed.. */
+#ifdef LITTLE_ENDIAN
+ original_checksum = ((unsigned char)packet[10] << 8) + (unsigned char)packet[11];
+#else
+ original_checksum = *(unsigned short *)&packet[10];
+#endif
+ packet[10] = 0;
+ packet[11] = 0;
+ checksum = (internet_checksum ((unsigned short*)packet, 20)) & 0xFFFF;
+
+ entry = find_destination (packet, packet_size (i));
+
+ checksum = (internet_checksum ((unsigned short*)packet, 20)) & 0xFFFF;
+ packet[10] = (checksum & 0xFF00) >> 8;
+ packet[11] = checksum & 0xFF;
+
+ /* We actually now have to check whether the entry is NULL and
+ if so forward the packet to a default destination, but we don't
+ have any interface anyway and find_destination always return
+ NULL (from different locations indicating a match for the
+ packet). So, we don't perform the checking and forwarding. These
+ are done in route application. */
+
+ /* Done for the packet... */
+ }
+
+ fprintf (stderr, "URL finished for %d packets \n", num_packets);
+ return 0;
+}
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/url.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,43 @@
+/*
+ * url.h - Routines for URL switching
+ *
+ * This file is a part of the NetBench
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * Everyone is granted permission to copy, modify and redistribute
+ * this tool set under the following conditions:
+ *
+ * Permission is granted to anyone to make or distribute copies
+ * of this source code, either as received or modified, in any
+ * medium, provided that all copyright notices, permission and
+ * nonwarranty notices are preserved, and that the distributor
+ * grants the recipient permission for further redistribution as
+ * permitted by this document.
+ *
+ * Permission is granted to distribute this file in compiled
+ * or executable form under the same conditions that apply for
+ * source code, provied that either:
+ *
+ * A. it is accompanied by the corresponding machine-readable
+ * source code,
+ * B. it is accompanied by a written offer, with no time limit,
+ * to give anyone a machine-readable copy of the corresponding
+ * source code in return for reimbursement of the cost of
+ * distribution. This written offer must permit verbatim
+ * duplication by anyone, or
+ * C. it is distributed by someone who received only the
+ * executable form, and is accompanied by a copy of the
+ * written offer of source code that they received concurrently.
+ *
+ * In other words, you are welcome to use and share this source file.
+ * You are forbidden to forbid anyone else to use, share and improve
+ * what you give them.
+ */
+
+#define MIN_COMMON_SIZE 3
+
+
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.c Mon Jan 28 01:09:41 2008
@@ -0,0 +1,32 @@
+/*
+ * utils.c - Some utility functions common to several applications
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * You are welcome to use, share and improve this
+ * source file. You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+
+#include <stdio.h>
+
+#ifdef __GNUC__
+void _fatal(char *file, char *func, int line, char *fmt, ...)
+#else
+void fatal(char *fmt, ...)
+#endif
+{
+ fprintf(stderr, "fatal: %s", fmt);
+#ifdef __GNUC__
+ fprintf(stderr, " [%s:%s, line %d]", func, file, line);
+#endif
+ fprintf(stderr, "\n");
+ exit(1);
+}
+
Added: test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h?rev=46444&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h (added)
+++ test-suite/trunk/MultiSource/Benchmarks/Trimaran/netbench-url/utils.h Mon Jan 28 01:09:41 2008
@@ -0,0 +1,29 @@
+/*
+ * utils.h - Some utility functions common to several applications
+ *
+ * This file is a part of the NetBench suite by Gokhan Memik
+ *
+ * This source file is distributed "as is" in the hope that it will be
+ * useful. The suite comes with no warranty, and no author or
+ * distributor accepts any responsibility for the consequences of its
+ * use.
+ *
+ * You are welcome to use, share and improve this
+ * source file. You are forbidden to forbid anyone else to use, share
+ * and improve what you give them.
+ *
+ */
+
+#ifdef __GNUC__
+/* declare a fatal run-time error, calls fatal hook function */
+#define fatal(fmt, args...) \
+ _fatal(__FILE__, __FUNCTION__, __LINE__, fmt, ## args)
+
+void
+_fatal(char *file, char *func, int line, char *fmt, ...)
+__attribute__ ((noreturn));
+#else
+void fatal(char *fmt, ...);
+#endif
+
+
More information about the llvm-commits
mailing list