1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/nsprpub/lib/tests/base64t.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,3015 @@ 1.4 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "plbase64.h" 1.10 +#include "plstr.h" 1.11 +#include "nspr.h" 1.12 + 1.13 +#include <stdio.h> 1.14 + 1.15 +static unsigned char *base = (unsigned char *)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 1.16 + 1.17 +/* PL_Base64Encode, single characters */ 1.18 +PRBool test_001(void) 1.19 +{ 1.20 + PRUint32 a, b; 1.21 + unsigned char plain[ 4 ]; 1.22 + unsigned char cypher[ 5 ]; 1.23 + char result[ 8 ]; 1.24 + char *rv; 1.25 + 1.26 + printf("Test 001 (PL_Base64Encode, single characters) ..."); fflush(stdout); 1.27 + 1.28 + plain[1] = plain[2] = plain[3] = (unsigned char)0; 1.29 + cypher[2] = cypher[3] = (unsigned char)'='; 1.30 + cypher[4] = (unsigned char)0; 1.31 + 1.32 + for( a = 0; a < 64; a++ ) 1.33 + { 1.34 + cypher[0] = base[a]; 1.35 + 1.36 + for( b = 0; b < 4; b++ ) 1.37 + { 1.38 + plain[0] = (unsigned char)(a * 4 + b); 1.39 + cypher[1] = base[(b * 16)]; 1.40 + 1.41 + rv = PL_Base64Encode((char *)plain, 1, result); 1.42 + if( rv != result ) 1.43 + { 1.44 + printf("FAIL\n\t(%d, %d): return value\n", a, b); 1.45 + return PR_FALSE; 1.46 + } 1.47 + 1.48 + if( 0 != PL_strncmp((char *)cypher, result, 4) ) 1.49 + { 1.50 + printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.4s.\"\n", 1.51 + a, b, cypher, result); 1.52 + return PR_FALSE; 1.53 + } 1.54 + } 1.55 + } 1.56 + 1.57 + printf("PASS\n"); 1.58 + return PR_TRUE; 1.59 +} 1.60 + 1.61 +/* PL_Base64Encode, double characters */ 1.62 +PRBool test_002(void) 1.63 +{ 1.64 + PRUint32 a, b, c, d; 1.65 + unsigned char plain[ 4 ]; 1.66 + unsigned char cypher[ 5 ]; 1.67 + char result[ 8 ]; 1.68 + char *rv; 1.69 + 1.70 + printf("Test 002 (PL_Base64Encode, double characters) ..."); fflush(stdout); 1.71 + 1.72 + plain[2] = plain[3] = (unsigned char)0; 1.73 + cypher[3] = (unsigned char)'='; 1.74 + cypher[4] = (unsigned char)0; 1.75 + 1.76 + for( a = 0; a < 64; a++ ) 1.77 + { 1.78 + cypher[0] = base[a]; 1.79 + for( b = 0; b < 4; b++ ) 1.80 + { 1.81 + plain[0] = (a*4) + b; 1.82 + for( c = 0; c < 16; c++ ) 1.83 + { 1.84 + cypher[1] = base[b*16 + c]; 1.85 + for( d = 0; d < 16; d++ ) 1.86 + { 1.87 + plain[1] = c*16 + d; 1.88 + cypher[2] = base[d*4]; 1.89 + 1.90 + rv = PL_Base64Encode((char *)plain, 2, result); 1.91 + if( rv != result ) 1.92 + { 1.93 + printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); 1.94 + return PR_FALSE; 1.95 + } 1.96 + 1.97 + if( 0 != PL_strncmp((char *)cypher, result, 4) ) 1.98 + { 1.99 + printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", 1.100 + a, b, c, d, cypher, result); 1.101 + return PR_FALSE; 1.102 + } 1.103 + } 1.104 + } 1.105 + } 1.106 + } 1.107 + 1.108 + printf("PASS\n"); 1.109 + return PR_TRUE; 1.110 +} 1.111 + 1.112 +/* PL_Base64Encode, triple characters */ 1.113 +PRBool test_003(void) 1.114 +{ 1.115 + PRUint32 a, b, c, d, e, f; 1.116 + unsigned char plain[ 4 ]; 1.117 + unsigned char cypher[ 5 ]; 1.118 + char result[ 8 ]; 1.119 + char *rv; 1.120 + 1.121 + printf("Test 003 (PL_Base64Encode, triple characters) ..."); fflush(stdout); 1.122 + 1.123 + cypher[4] = (unsigned char)0; 1.124 + 1.125 + for( a = 0; a < 64; a++ ) 1.126 + { 1.127 + cypher[0] = base[a]; 1.128 + for( b = 0; b < 4; b++ ) 1.129 + { 1.130 + plain[0] = (a*4) + b; 1.131 + for( c = 0; c < 16; c++ ) 1.132 + { 1.133 + cypher[1] = base[b*16 + c]; 1.134 + for( d = 0; d < 16; d++ ) 1.135 + { 1.136 + plain[1] = c*16 + d; 1.137 + for( e = 0; e < 4; e++ ) 1.138 + { 1.139 + cypher[2] = base[d*4 + e]; 1.140 + for( f = 0; f < 64; f++ ) 1.141 + { 1.142 + plain[2] = e * 64 + f; 1.143 + cypher[3] = base[f]; 1.144 + 1.145 + rv = PL_Base64Encode((char *)plain, 3, result); 1.146 + if( rv != result ) 1.147 + { 1.148 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f); 1.149 + return PR_FALSE; 1.150 + } 1.151 + 1.152 + if( 0 != PL_strncmp((char *)cypher, result, 4) ) 1.153 + { 1.154 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", 1.155 + a, b, c, d, e, f, cypher, result); 1.156 + return PR_FALSE; 1.157 + } 1.158 + } 1.159 + } 1.160 + } 1.161 + } 1.162 + } 1.163 + } 1.164 + 1.165 + printf("PASS\n"); 1.166 + return PR_TRUE; 1.167 +} 1.168 + 1.169 + static struct 1.170 + { 1.171 + const char *plaintext; 1.172 + const char *cyphertext; 1.173 + } array[] = 1.174 + { 1.175 + /* Cyphertexts generated with uuenview 0.5.13 */ 1.176 + { " ", "IA==" }, 1.177 + { ".", "Lg==" }, 1.178 + { "/", "Lw==" }, 1.179 + { "C", "Qw==" }, 1.180 + { "H", "SA==" }, 1.181 + { "S", "Uw==" }, 1.182 + { "^", "Xg==" }, 1.183 + { "a", "YQ==" }, 1.184 + { "o", "bw==" }, 1.185 + { "t", "dA==" }, 1.186 + 1.187 + { "AB", "QUI=" }, 1.188 + { "AH", "QUg=" }, 1.189 + { "AQ", "QVE=" }, 1.190 + { "BD", "QkQ=" }, 1.191 + { "CR", "Q1I=" }, 1.192 + { "CS", "Q1M=" }, 1.193 + { "DB", "REI=" }, 1.194 + { "DC", "REM=" }, 1.195 + { "EK", "RUs=" }, 1.196 + { "ET", "RVQ=" }, 1.197 + { "IM", "SU0=" }, 1.198 + { "JR", "SlI=" }, 1.199 + { "LO", "TE8=" }, 1.200 + { "LW", "TFc=" }, 1.201 + { "ML", "TUw=" }, 1.202 + { "SB", "U0I=" }, 1.203 + { "TO", "VE8=" }, 1.204 + { "VS", "VlM=" }, 1.205 + { "WP", "V1A=" }, 1.206 + /* legitimate two-letter words */ 1.207 + { "ad", "YWQ=" }, 1.208 + { "ah", "YWg=" }, 1.209 + { "am", "YW0=" }, 1.210 + { "an", "YW4=" }, 1.211 + { "as", "YXM=" }, 1.212 + { "at", "YXQ=" }, 1.213 + { "ax", "YXg=" }, 1.214 + { "be", "YmU=" }, 1.215 + { "by", "Ynk=" }, 1.216 + { "do", "ZG8=" }, 1.217 + { "go", "Z28=" }, 1.218 + { "he", "aGU=" }, 1.219 + { "hi", "aGk=" }, 1.220 + { "if", "aWY=" }, 1.221 + { "in", "aW4=" }, 1.222 + { "is", "aXM=" }, 1.223 + { "it", "aXQ=" }, 1.224 + { "me", "bWU=" }, 1.225 + { "my", "bXk=" }, 1.226 + { "no", "bm8=" }, 1.227 + { "of", "b2Y=" }, 1.228 + { "on", "b24=" }, 1.229 + { "or", "b3I=" }, 1.230 + { "ox", "b3g=" }, 1.231 + { "so", "c28=" }, 1.232 + { "to", "dG8=" }, 1.233 + { "up", "dXA=" }, 1.234 + { "us", "dXM=" }, 1.235 + { "we", "d2U=" }, 1.236 + /* all three-letter entries in /usr/dict/words */ 1.237 + { "1st", "MXN0" }, 1.238 + { "2nd", "Mm5k" }, 1.239 + { "3rd", "M3Jk" }, 1.240 + { "4th", "NHRo" }, 1.241 + { "5th", "NXRo" }, 1.242 + { "6th", "NnRo" }, 1.243 + { "7th", "N3Ro" }, 1.244 + { "8th", "OHRo" }, 1.245 + { "9th", "OXRo" }, 1.246 + { "AAA", "QUFB" }, 1.247 + { "AAU", "QUFV" }, 1.248 + { "ABA", "QUJB" }, 1.249 + { "abc", "YWJj" }, 1.250 + { "Abe", "QWJl" }, 1.251 + { "Abo", "QWJv" }, 1.252 + { "ace", "YWNl" }, 1.253 + { "ACM", "QUNN" }, 1.254 + { "ACS", "QUNT" }, 1.255 + { "act", "YWN0" }, 1.256 + { "Ada", "QWRh" }, 1.257 + { "add", "YWRk" }, 1.258 + { "ado", "YWRv" }, 1.259 + { "aft", "YWZ0" }, 1.260 + { "age", "YWdl" }, 1.261 + { "ago", "YWdv" }, 1.262 + { "aid", "YWlk" }, 1.263 + { "ail", "YWls" }, 1.264 + { "aim", "YWlt" }, 1.265 + { "air", "YWly" }, 1.266 + { "ala", "YWxh" }, 1.267 + { "alb", "YWxi" }, 1.268 + { "ale", "YWxl" }, 1.269 + { "Ali", "QWxp" }, 1.270 + { "all", "YWxs" }, 1.271 + { "alp", "YWxw" }, 1.272 + { "A&M", "QSZN" }, 1.273 + { "AMA", "QU1B" }, 1.274 + { "ami", "YW1p" }, 1.275 + { "amp", "YW1w" }, 1.276 + { "Amy", "QW15" }, 1.277 + { "amy", "YW15" }, 1.278 + { "ana", "YW5h" }, 1.279 + { "and", "YW5k" }, 1.280 + { "ani", "YW5p" }, 1.281 + { "Ann", "QW5u" }, 1.282 + { "ant", "YW50" }, 1.283 + { "any", "YW55" }, 1.284 + { "A&P", "QSZQ" }, 1.285 + { "ape", "YXBl" }, 1.286 + { "Apr", "QXBy" }, 1.287 + { "APS", "QVBT" }, 1.288 + { "apt", "YXB0" }, 1.289 + { "arc", "YXJj" }, 1.290 + { "are", "YXJl" }, 1.291 + { "ark", "YXJr" }, 1.292 + { "arm", "YXJt" }, 1.293 + { "art", "YXJ0" }, 1.294 + { "a's", "YSdz" }, 1.295 + { "ash", "YXNo" }, 1.296 + { "ask", "YXNr" }, 1.297 + { "ass", "YXNz" }, 1.298 + { "ate", "YXRl" }, 1.299 + { "Aug", "QXVn" }, 1.300 + { "auk", "YXVr" }, 1.301 + { "Ave", "QXZl" }, 1.302 + { "awe", "YXdl" }, 1.303 + { "awl", "YXds" }, 1.304 + { "awn", "YXdu" }, 1.305 + { "axe", "YXhl" }, 1.306 + { "aye", "YXll" }, 1.307 + { "bad", "YmFk" }, 1.308 + { "bag", "YmFn" }, 1.309 + { "bah", "YmFo" }, 1.310 + { "bam", "YmFt" }, 1.311 + { "ban", "YmFu" }, 1.312 + { "bar", "YmFy" }, 1.313 + { "bat", "YmF0" }, 1.314 + { "bay", "YmF5" }, 1.315 + { "bed", "YmVk" }, 1.316 + { "bee", "YmVl" }, 1.317 + { "beg", "YmVn" }, 1.318 + { "bel", "YmVs" }, 1.319 + { "Ben", "QmVu" }, 1.320 + { "bet", "YmV0" }, 1.321 + { "bey", "YmV5" }, 1.322 + { "bib", "Ymli" }, 1.323 + { "bid", "Ymlk" }, 1.324 + { "big", "Ymln" }, 1.325 + { "bin", "Ymlu" }, 1.326 + { "bit", "Yml0" }, 1.327 + { "biz", "Yml6" }, 1.328 + { "BMW", "Qk1X" }, 1.329 + { "boa", "Ym9h" }, 1.330 + { "bob", "Ym9i" }, 1.331 + { "bog", "Ym9n" }, 1.332 + { "bon", "Ym9u" }, 1.333 + { "boo", "Ym9v" }, 1.334 + { "bop", "Ym9w" }, 1.335 + { "bow", "Ym93" }, 1.336 + { "box", "Ym94" }, 1.337 + { "boy", "Ym95" }, 1.338 + { "b's", "Yidz" }, 1.339 + { "BTL", "QlRM" }, 1.340 + { "BTU", "QlRV" }, 1.341 + { "bub", "YnVi" }, 1.342 + { "bud", "YnVk" }, 1.343 + { "bug", "YnVn" }, 1.344 + { "bum", "YnVt" }, 1.345 + { "bun", "YnVu" }, 1.346 + { "bus", "YnVz" }, 1.347 + { "but", "YnV0" }, 1.348 + { "buy", "YnV5" }, 1.349 + { "bye", "Ynll" }, 1.350 + { "cab", "Y2Fi" }, 1.351 + { "Cal", "Q2Fs" }, 1.352 + { "cam", "Y2Ft" }, 1.353 + { "can", "Y2Fu" }, 1.354 + { "cap", "Y2Fw" }, 1.355 + { "car", "Y2Fy" }, 1.356 + { "cat", "Y2F0" }, 1.357 + { "caw", "Y2F3" }, 1.358 + { "CBS", "Q0JT" }, 1.359 + { "CDC", "Q0RD" }, 1.360 + { "CEQ", "Q0VR" }, 1.361 + { "chi", "Y2hp" }, 1.362 + { "CIA", "Q0lB" }, 1.363 + { "cit", "Y2l0" }, 1.364 + { "cod", "Y29k" }, 1.365 + { "cog", "Y29n" }, 1.366 + { "col", "Y29s" }, 1.367 + { "con", "Y29u" }, 1.368 + { "coo", "Y29v" }, 1.369 + { "cop", "Y29w" }, 1.370 + { "cos", "Y29z" }, 1.371 + { "cot", "Y290" }, 1.372 + { "cow", "Y293" }, 1.373 + { "cox", "Y294" }, 1.374 + { "coy", "Y295" }, 1.375 + { "CPA", "Q1BB" }, 1.376 + { "cpu", "Y3B1" }, 1.377 + { "CRT", "Q1JU" }, 1.378 + { "cry", "Y3J5" }, 1.379 + { "c's", "Yydz" }, 1.380 + { "cub", "Y3Vi" }, 1.381 + { "cud", "Y3Vk" }, 1.382 + { "cue", "Y3Vl" }, 1.383 + { "cup", "Y3Vw" }, 1.384 + { "cur", "Y3Vy" }, 1.385 + { "cut", "Y3V0" }, 1.386 + { "dab", "ZGFi" }, 1.387 + { "dad", "ZGFk" }, 1.388 + { "dam", "ZGFt" }, 1.389 + { "Dan", "RGFu" }, 1.390 + { "Dar", "RGFy" }, 1.391 + { "day", "ZGF5" }, 1.392 + { "Dec", "RGVj" }, 1.393 + { "Dee", "RGVl" }, 1.394 + { "Del", "RGVs" }, 1.395 + { "den", "ZGVu" }, 1.396 + { "Des", "RGVz" }, 1.397 + { "dew", "ZGV3" }, 1.398 + { "dey", "ZGV5" }, 1.399 + { "did", "ZGlk" }, 1.400 + { "die", "ZGll" }, 1.401 + { "dig", "ZGln" }, 1.402 + { "dim", "ZGlt" }, 1.403 + { "din", "ZGlu" }, 1.404 + { "dip", "ZGlw" }, 1.405 + { "Dis", "RGlz" }, 1.406 + { "DNA", "RE5B" }, 1.407 + { "DOD", "RE9E" }, 1.408 + { "doe", "ZG9l" }, 1.409 + { "dog", "ZG9n" }, 1.410 + { "don", "ZG9u" }, 1.411 + { "dot", "ZG90" }, 1.412 + { "Dow", "RG93" }, 1.413 + { "dry", "ZHJ5" }, 1.414 + { "d's", "ZCdz" }, 1.415 + { "dub", "ZHVi" }, 1.416 + { "dud", "ZHVk" }, 1.417 + { "due", "ZHVl" }, 1.418 + { "dug", "ZHVn" }, 1.419 + { "dun", "ZHVu" }, 1.420 + { "dye", "ZHll" }, 1.421 + { "ear", "ZWFy" }, 1.422 + { "eat", "ZWF0" }, 1.423 + { "ebb", "ZWJi" }, 1.424 + { "EDT", "RURU" }, 1.425 + { "eel", "ZWVs" }, 1.426 + { "eft", "ZWZ0" }, 1.427 + { "e.g", "ZS5n" }, 1.428 + { "egg", "ZWdn" }, 1.429 + { "ego", "ZWdv" }, 1.430 + { "eke", "ZWtl" }, 1.431 + { "Eli", "RWxp" }, 1.432 + { "elk", "ZWxr" }, 1.433 + { "ell", "ZWxs" }, 1.434 + { "elm", "ZWxt" }, 1.435 + { "Ely", "RWx5" }, 1.436 + { "end", "ZW5k" }, 1.437 + { "Eng", "RW5n" }, 1.438 + { "EPA", "RVBB" }, 1.439 + { "era", "ZXJh" }, 1.440 + { "ere", "ZXJl" }, 1.441 + { "erg", "ZXJn" }, 1.442 + { "err", "ZXJy" }, 1.443 + { "e's", "ZSdz" }, 1.444 + { "EST", "RVNU" }, 1.445 + { "eta", "ZXRh" }, 1.446 + { "etc", "ZXRj" }, 1.447 + { "Eva", "RXZh" }, 1.448 + { "eve", "ZXZl" }, 1.449 + { "ewe", "ZXdl" }, 1.450 + { "eye", "ZXll" }, 1.451 + { "FAA", "RkFB" }, 1.452 + { "fad", "ZmFk" }, 1.453 + { "fag", "ZmFn" }, 1.454 + { "fan", "ZmFu" }, 1.455 + { "far", "ZmFy" }, 1.456 + { "fat", "ZmF0" }, 1.457 + { "fay", "ZmF5" }, 1.458 + { "FBI", "RkJJ" }, 1.459 + { "FCC", "RkND" }, 1.460 + { "FDA", "RkRB" }, 1.461 + { "Feb", "RmVi" }, 1.462 + { "fed", "ZmVk" }, 1.463 + { "fee", "ZmVl" }, 1.464 + { "few", "ZmV3" }, 1.465 + { "fib", "Zmli" }, 1.466 + { "fig", "Zmln" }, 1.467 + { "fin", "Zmlu" }, 1.468 + { "fir", "Zmly" }, 1.469 + { "fit", "Zml0" }, 1.470 + { "fix", "Zml4" }, 1.471 + { "Flo", "Rmxv" }, 1.472 + { "flu", "Zmx1" }, 1.473 + { "fly", "Zmx5" }, 1.474 + { "FMC", "Rk1D" }, 1.475 + { "fob", "Zm9i" }, 1.476 + { "foe", "Zm9l" }, 1.477 + { "fog", "Zm9n" }, 1.478 + { "fop", "Zm9w" }, 1.479 + { "for", "Zm9y" }, 1.480 + { "fox", "Zm94" }, 1.481 + { "FPC", "RlBD" }, 1.482 + { "fro", "ZnJv" }, 1.483 + { "fry", "ZnJ5" }, 1.484 + { "f's", "Zidz" }, 1.485 + { "FTC", "RlRD" }, 1.486 + { "fum", "ZnVt" }, 1.487 + { "fun", "ZnVu" }, 1.488 + { "fur", "ZnVy" }, 1.489 + { "gab", "Z2Fi" }, 1.490 + { "gad", "Z2Fk" }, 1.491 + { "gag", "Z2Fn" }, 1.492 + { "gal", "Z2Fs" }, 1.493 + { "gam", "Z2Ft" }, 1.494 + { "GAO", "R0FP" }, 1.495 + { "gap", "Z2Fw" }, 1.496 + { "gar", "Z2Fy" }, 1.497 + { "gas", "Z2Fz" }, 1.498 + { "gay", "Z2F5" }, 1.499 + { "gee", "Z2Vl" }, 1.500 + { "gel", "Z2Vs" }, 1.501 + { "gem", "Z2Vt" }, 1.502 + { "get", "Z2V0" }, 1.503 + { "gig", "Z2ln" }, 1.504 + { "Gil", "R2ls" }, 1.505 + { "gin", "Z2lu" }, 1.506 + { "GMT", "R01U" }, 1.507 + { "GNP", "R05Q" }, 1.508 + { "gnu", "Z251" }, 1.509 + { "Goa", "R29h" }, 1.510 + { "gob", "Z29i" }, 1.511 + { "god", "Z29k" }, 1.512 + { "gog", "Z29n" }, 1.513 + { "GOP", "R09Q" }, 1.514 + { "got", "Z290" }, 1.515 + { "GPO", "R1BP" }, 1.516 + { "g's", "Zydz" }, 1.517 + { "GSA", "R1NB" }, 1.518 + { "gum", "Z3Vt" }, 1.519 + { "gun", "Z3Vu" }, 1.520 + { "Gus", "R3Vz" }, 1.521 + { "gut", "Z3V0" }, 1.522 + { "guy", "Z3V5" }, 1.523 + { "gym", "Z3lt" }, 1.524 + { "gyp", "Z3lw" }, 1.525 + { "had", "aGFk" }, 1.526 + { "Hal", "SGFs" }, 1.527 + { "ham", "aGFt" }, 1.528 + { "Han", "SGFu" }, 1.529 + { "hap", "aGFw" }, 1.530 + { "hat", "aGF0" }, 1.531 + { "haw", "aGF3" }, 1.532 + { "hay", "aGF5" }, 1.533 + { "hem", "aGVt" }, 1.534 + { "hen", "aGVu" }, 1.535 + { "her", "aGVy" }, 1.536 + { "hew", "aGV3" }, 1.537 + { "hex", "aGV4" }, 1.538 + { "hey", "aGV5" }, 1.539 + { "hid", "aGlk" }, 1.540 + { "him", "aGlt" }, 1.541 + { "hip", "aGlw" }, 1.542 + { "his", "aGlz" }, 1.543 + { "hit", "aGl0" }, 1.544 + { "hob", "aG9i" }, 1.545 + { "hoc", "aG9j" }, 1.546 + { "hoe", "aG9l" }, 1.547 + { "hog", "aG9n" }, 1.548 + { "hoi", "aG9p" }, 1.549 + { "Hom", "SG9t" }, 1.550 + { "hop", "aG9w" }, 1.551 + { "hot", "aG90" }, 1.552 + { "how", "aG93" }, 1.553 + { "hoy", "aG95" }, 1.554 + { "h's", "aCdz" }, 1.555 + { "hub", "aHVi" }, 1.556 + { "hue", "aHVl" }, 1.557 + { "hug", "aHVn" }, 1.558 + { "huh", "aHVo" }, 1.559 + { "hum", "aHVt" }, 1.560 + { "Hun", "SHVu" }, 1.561 + { "hut", "aHV0" }, 1.562 + { "Ian", "SWFu" }, 1.563 + { "IBM", "SUJN" }, 1.564 + { "Ibn", "SWJu" }, 1.565 + { "ICC", "SUND" }, 1.566 + { "ice", "aWNl" }, 1.567 + { "icy", "aWN5" }, 1.568 + { "I'd", "SSdk" }, 1.569 + { "Ida", "SWRh" }, 1.570 + { "i.e", "aS5l" }, 1.571 + { "iii", "aWlp" }, 1.572 + { "Ike", "SWtl" }, 1.573 + { "ill", "aWxs" }, 1.574 + { "I'm", "SSdt" }, 1.575 + { "imp", "aW1w" }, 1.576 + { "Inc", "SW5j" }, 1.577 + { "ink", "aW5r" }, 1.578 + { "inn", "aW5u" }, 1.579 + { "ion", "aW9u" }, 1.580 + { "Ira", "SXJh" }, 1.581 + { "ire", "aXJl" }, 1.582 + { "irk", "aXJr" }, 1.583 + { "IRS", "SVJT" }, 1.584 + { "i's", "aSdz" }, 1.585 + { "Ito", "SXRv" }, 1.586 + { "ITT", "SVRU" }, 1.587 + { "ivy", "aXZ5" }, 1.588 + { "jab", "amFi" }, 1.589 + { "jag", "amFn" }, 1.590 + { "jam", "amFt" }, 1.591 + { "Jan", "SmFu" }, 1.592 + { "jar", "amFy" }, 1.593 + { "jaw", "amF3" }, 1.594 + { "jay", "amF5" }, 1.595 + { "Jed", "SmVk" }, 1.596 + { "jet", "amV0" }, 1.597 + { "Jew", "SmV3" }, 1.598 + { "jig", "amln" }, 1.599 + { "Jim", "Smlt" }, 1.600 + { "job", "am9i" }, 1.601 + { "Joe", "Sm9l" }, 1.602 + { "jog", "am9n" }, 1.603 + { "Jon", "Sm9u" }, 1.604 + { "jot", "am90" }, 1.605 + { "joy", "am95" }, 1.606 + { "j's", "aidz" }, 1.607 + { "jug", "anVn" }, 1.608 + { "jut", "anV0" }, 1.609 + { "Kay", "S2F5" }, 1.610 + { "keg", "a2Vn" }, 1.611 + { "ken", "a2Vu" }, 1.612 + { "key", "a2V5" }, 1.613 + { "kid", "a2lk" }, 1.614 + { "Kim", "S2lt" }, 1.615 + { "kin", "a2lu" }, 1.616 + { "kit", "a2l0" }, 1.617 + { "k's", "aydz" }, 1.618 + { "lab", "bGFi" }, 1.619 + { "lac", "bGFj" }, 1.620 + { "lad", "bGFk" }, 1.621 + { "lag", "bGFn" }, 1.622 + { "lam", "bGFt" }, 1.623 + { "Lao", "TGFv" }, 1.624 + { "lap", "bGFw" }, 1.625 + { "law", "bGF3" }, 1.626 + { "lax", "bGF4" }, 1.627 + { "lay", "bGF5" }, 1.628 + { "lea", "bGVh" }, 1.629 + { "led", "bGVk" }, 1.630 + { "lee", "bGVl" }, 1.631 + { "leg", "bGVn" }, 1.632 + { "Len", "TGVu" }, 1.633 + { "Leo", "TGVv" }, 1.634 + { "let", "bGV0" }, 1.635 + { "Lev", "TGV2" }, 1.636 + { "Lew", "TGV3" }, 1.637 + { "lew", "bGV3" }, 1.638 + { "lid", "bGlk" }, 1.639 + { "lie", "bGll" }, 1.640 + { "lim", "bGlt" }, 1.641 + { "Lin", "TGlu" }, 1.642 + { "lip", "bGlw" }, 1.643 + { "lit", "bGl0" }, 1.644 + { "Liz", "TGl6" }, 1.645 + { "lob", "bG9i" }, 1.646 + { "log", "bG9n" }, 1.647 + { "lop", "bG9w" }, 1.648 + { "Los", "TG9z" }, 1.649 + { "lot", "bG90" }, 1.650 + { "Lou", "TG91" }, 1.651 + { "low", "bG93" }, 1.652 + { "loy", "bG95" }, 1.653 + { "l's", "bCdz" }, 1.654 + { "LSI", "TFNJ" }, 1.655 + { "Ltd", "THRk" }, 1.656 + { "LTV", "TFRW" }, 1.657 + { "lug", "bHVn" }, 1.658 + { "lux", "bHV4" }, 1.659 + { "lye", "bHll" }, 1.660 + { "Mac", "TWFj" }, 1.661 + { "mad", "bWFk" }, 1.662 + { "Mae", "TWFl" }, 1.663 + { "man", "bWFu" }, 1.664 + { "Mao", "TWFv" }, 1.665 + { "map", "bWFw" }, 1.666 + { "mar", "bWFy" }, 1.667 + { "mat", "bWF0" }, 1.668 + { "maw", "bWF3" }, 1.669 + { "Max", "TWF4" }, 1.670 + { "max", "bWF4" }, 1.671 + { "may", "bWF5" }, 1.672 + { "MBA", "TUJB" }, 1.673 + { "Meg", "TWVn" }, 1.674 + { "Mel", "TWVs" }, 1.675 + { "men", "bWVu" }, 1.676 + { "met", "bWV0" }, 1.677 + { "mew", "bWV3" }, 1.678 + { "mid", "bWlk" }, 1.679 + { "mig", "bWln" }, 1.680 + { "min", "bWlu" }, 1.681 + { "MIT", "TUlU" }, 1.682 + { "mix", "bWl4" }, 1.683 + { "mob", "bW9i" }, 1.684 + { "Moe", "TW9l" }, 1.685 + { "moo", "bW9v" }, 1.686 + { "mop", "bW9w" }, 1.687 + { "mot", "bW90" }, 1.688 + { "mow", "bW93" }, 1.689 + { "MPH", "TVBI" }, 1.690 + { "Mrs", "TXJz" }, 1.691 + { "m's", "bSdz" }, 1.692 + { "mud", "bXVk" }, 1.693 + { "mug", "bXVn" }, 1.694 + { "mum", "bXVt" }, 1.695 + { "nab", "bmFi" }, 1.696 + { "nag", "bmFn" }, 1.697 + { "Nan", "TmFu" }, 1.698 + { "nap", "bmFw" }, 1.699 + { "Nat", "TmF0" }, 1.700 + { "nay", "bmF5" }, 1.701 + { "NBC", "TkJD" }, 1.702 + { "NBS", "TkJT" }, 1.703 + { "NCO", "TkNP" }, 1.704 + { "NCR", "TkNS" }, 1.705 + { "Ned", "TmVk" }, 1.706 + { "nee", "bmVl" }, 1.707 + { "net", "bmV0" }, 1.708 + { "new", "bmV3" }, 1.709 + { "nib", "bmli" }, 1.710 + { "NIH", "TklI" }, 1.711 + { "nil", "bmls" }, 1.712 + { "nip", "bmlw" }, 1.713 + { "nit", "bml0" }, 1.714 + { "NNE", "Tk5F" }, 1.715 + { "NNW", "Tk5X" }, 1.716 + { "nob", "bm9i" }, 1.717 + { "nod", "bm9k" }, 1.718 + { "non", "bm9u" }, 1.719 + { "nor", "bm9y" }, 1.720 + { "not", "bm90" }, 1.721 + { "Nov", "Tm92" }, 1.722 + { "now", "bm93" }, 1.723 + { "NRC", "TlJD" }, 1.724 + { "n's", "bidz" }, 1.725 + { "NSF", "TlNG" }, 1.726 + { "nun", "bnVu" }, 1.727 + { "nut", "bnV0" }, 1.728 + { "NYC", "TllD" }, 1.729 + { "NYU", "TllV" }, 1.730 + { "oaf", "b2Fm" }, 1.731 + { "oak", "b2Fr" }, 1.732 + { "oar", "b2Fy" }, 1.733 + { "oat", "b2F0" }, 1.734 + { "Oct", "T2N0" }, 1.735 + { "odd", "b2Rk" }, 1.736 + { "ode", "b2Rl" }, 1.737 + { "off", "b2Zm" }, 1.738 + { "oft", "b2Z0" }, 1.739 + { "ohm", "b2ht" }, 1.740 + { "oil", "b2ls" }, 1.741 + { "old", "b2xk" }, 1.742 + { "one", "b25l" }, 1.743 + { "opt", "b3B0" }, 1.744 + { "orb", "b3Ji" }, 1.745 + { "ore", "b3Jl" }, 1.746 + { "Orr", "T3Jy" }, 1.747 + { "o's", "bydz" }, 1.748 + { "Ott", "T3R0" }, 1.749 + { "our", "b3Vy" }, 1.750 + { "out", "b3V0" }, 1.751 + { "ova", "b3Zh" }, 1.752 + { "owe", "b3dl" }, 1.753 + { "owl", "b3ds" }, 1.754 + { "own", "b3du" }, 1.755 + { "pad", "cGFk" }, 1.756 + { "pal", "cGFs" }, 1.757 + { "Pam", "UGFt" }, 1.758 + { "pan", "cGFu" }, 1.759 + { "pap", "cGFw" }, 1.760 + { "par", "cGFy" }, 1.761 + { "pat", "cGF0" }, 1.762 + { "paw", "cGF3" }, 1.763 + { "pax", "cGF4" }, 1.764 + { "pay", "cGF5" }, 1.765 + { "Paz", "UGF6" }, 1.766 + { "PBS", "UEJT" }, 1.767 + { "PDP", "UERQ" }, 1.768 + { "pea", "cGVh" }, 1.769 + { "pee", "cGVl" }, 1.770 + { "peg", "cGVn" }, 1.771 + { "pen", "cGVu" }, 1.772 + { "pep", "cGVw" }, 1.773 + { "per", "cGVy" }, 1.774 + { "pet", "cGV0" }, 1.775 + { "pew", "cGV3" }, 1.776 + { "PhD", "UGhE" }, 1.777 + { "phi", "cGhp" }, 1.778 + { "pie", "cGll" }, 1.779 + { "pig", "cGln" }, 1.780 + { "pin", "cGlu" }, 1.781 + { "pip", "cGlw" }, 1.782 + { "pit", "cGl0" }, 1.783 + { "ply", "cGx5" }, 1.784 + { "pod", "cG9k" }, 1.785 + { "Poe", "UG9l" }, 1.786 + { "poi", "cG9p" }, 1.787 + { "pol", "cG9s" }, 1.788 + { "pop", "cG9w" }, 1.789 + { "pot", "cG90" }, 1.790 + { "pow", "cG93" }, 1.791 + { "ppm", "cHBt" }, 1.792 + { "pro", "cHJv" }, 1.793 + { "pry", "cHJ5" }, 1.794 + { "p's", "cCdz" }, 1.795 + { "psi", "cHNp" }, 1.796 + { "PTA", "UFRB" }, 1.797 + { "pub", "cHVi" }, 1.798 + { "PUC", "UFVD" }, 1.799 + { "pug", "cHVn" }, 1.800 + { "pun", "cHVu" }, 1.801 + { "pup", "cHVw" }, 1.802 + { "pus", "cHVz" }, 1.803 + { "put", "cHV0" }, 1.804 + { "PVC", "UFZD" }, 1.805 + { "QED", "UUVE" }, 1.806 + { "q's", "cSdz" }, 1.807 + { "qua", "cXVh" }, 1.808 + { "quo", "cXVv" }, 1.809 + { "Rae", "UmFl" }, 1.810 + { "rag", "cmFn" }, 1.811 + { "raj", "cmFq" }, 1.812 + { "ram", "cmFt" }, 1.813 + { "ran", "cmFu" }, 1.814 + { "rap", "cmFw" }, 1.815 + { "rat", "cmF0" }, 1.816 + { "raw", "cmF3" }, 1.817 + { "ray", "cmF5" }, 1.818 + { "RCA", "UkNB" }, 1.819 + { "R&D", "UiZE" }, 1.820 + { "reb", "cmVi" }, 1.821 + { "red", "cmVk" }, 1.822 + { "rep", "cmVw" }, 1.823 + { "ret", "cmV0" }, 1.824 + { "rev", "cmV2" }, 1.825 + { "Rex", "UmV4" }, 1.826 + { "rho", "cmhv" }, 1.827 + { "rib", "cmli" }, 1.828 + { "rid", "cmlk" }, 1.829 + { "rig", "cmln" }, 1.830 + { "rim", "cmlt" }, 1.831 + { "Rio", "Umlv" }, 1.832 + { "rip", "cmlw" }, 1.833 + { "RNA", "Uk5B" }, 1.834 + { "rob", "cm9i" }, 1.835 + { "rod", "cm9k" }, 1.836 + { "roe", "cm9l" }, 1.837 + { "Ron", "Um9u" }, 1.838 + { "rot", "cm90" }, 1.839 + { "row", "cm93" }, 1.840 + { "Roy", "Um95" }, 1.841 + { "RPM", "UlBN" }, 1.842 + { "r's", "cidz" }, 1.843 + { "rub", "cnVi" }, 1.844 + { "rue", "cnVl" }, 1.845 + { "rug", "cnVn" }, 1.846 + { "rum", "cnVt" }, 1.847 + { "run", "cnVu" }, 1.848 + { "rut", "cnV0" }, 1.849 + { "rye", "cnll" }, 1.850 + { "sac", "c2Fj" }, 1.851 + { "sad", "c2Fk" }, 1.852 + { "sag", "c2Fn" }, 1.853 + { "Sal", "U2Fs" }, 1.854 + { "Sam", "U2Ft" }, 1.855 + { "San", "U2Fu" }, 1.856 + { "Sao", "U2Fv" }, 1.857 + { "sap", "c2Fw" }, 1.858 + { "sat", "c2F0" }, 1.859 + { "saw", "c2F3" }, 1.860 + { "sax", "c2F4" }, 1.861 + { "say", "c2F5" }, 1.862 + { "Sci", "U2Np" }, 1.863 + { "SCM", "U0NN" }, 1.864 + { "sea", "c2Vh" }, 1.865 + { "sec", "c2Vj" }, 1.866 + { "see", "c2Vl" }, 1.867 + { "sen", "c2Vu" }, 1.868 + { "seq", "c2Vx" }, 1.869 + { "set", "c2V0" }, 1.870 + { "sew", "c2V3" }, 1.871 + { "sex", "c2V4" }, 1.872 + { "she", "c2hl" }, 1.873 + { "Shu", "U2h1" }, 1.874 + { "shy", "c2h5" }, 1.875 + { "sib", "c2li" }, 1.876 + { "sic", "c2lj" }, 1.877 + { "sin", "c2lu" }, 1.878 + { "sip", "c2lw" }, 1.879 + { "sir", "c2ly" }, 1.880 + { "sis", "c2lz" }, 1.881 + { "sit", "c2l0" }, 1.882 + { "six", "c2l4" }, 1.883 + { "ski", "c2tp" }, 1.884 + { "sky", "c2t5" }, 1.885 + { "sly", "c2x5" }, 1.886 + { "sob", "c29i" }, 1.887 + { "Soc", "U29j" }, 1.888 + { "sod", "c29k" }, 1.889 + { "Sol", "U29s" }, 1.890 + { "son", "c29u" }, 1.891 + { "sop", "c29w" }, 1.892 + { "sou", "c291" }, 1.893 + { "sow", "c293" }, 1.894 + { "soy", "c295" }, 1.895 + { "spa", "c3Bh" }, 1.896 + { "spy", "c3B5" }, 1.897 + { "Sri", "U3Jp" }, 1.898 + { "s's", "cydz" }, 1.899 + { "SSE", "U1NF" }, 1.900 + { "SST", "U1NU" }, 1.901 + { "SSW", "U1NX" }, 1.902 + { "Stu", "U3R1" }, 1.903 + { "sub", "c3Vi" }, 1.904 + { "sud", "c3Vk" }, 1.905 + { "sue", "c3Vl" }, 1.906 + { "sum", "c3Vt" }, 1.907 + { "sun", "c3Vu" }, 1.908 + { "sup", "c3Vw" }, 1.909 + { "Sus", "U3Vz" }, 1.910 + { "tab", "dGFi" }, 1.911 + { "tad", "dGFk" }, 1.912 + { "tag", "dGFn" }, 1.913 + { "tam", "dGFt" }, 1.914 + { "tan", "dGFu" }, 1.915 + { "tao", "dGFv" }, 1.916 + { "tap", "dGFw" }, 1.917 + { "tar", "dGFy" }, 1.918 + { "tat", "dGF0" }, 1.919 + { "tau", "dGF1" }, 1.920 + { "tax", "dGF4" }, 1.921 + { "tea", "dGVh" }, 1.922 + { "Ted", "VGVk" }, 1.923 + { "ted", "dGVk" }, 1.924 + { "tee", "dGVl" }, 1.925 + { "Tel", "VGVs" }, 1.926 + { "ten", "dGVu" }, 1.927 + { "the", "dGhl" }, 1.928 + { "thy", "dGh5" }, 1.929 + { "tic", "dGlj" }, 1.930 + { "tid", "dGlk" }, 1.931 + { "tie", "dGll" }, 1.932 + { "til", "dGls" }, 1.933 + { "Tim", "VGlt" }, 1.934 + { "tin", "dGlu" }, 1.935 + { "tip", "dGlw" }, 1.936 + { "tit", "dGl0" }, 1.937 + { "TNT", "VE5U" }, 1.938 + { "toe", "dG9l" }, 1.939 + { "tog", "dG9n" }, 1.940 + { "Tom", "VG9t" }, 1.941 + { "ton", "dG9u" }, 1.942 + { "too", "dG9v" }, 1.943 + { "top", "dG9w" }, 1.944 + { "tor", "dG9y" }, 1.945 + { "tot", "dG90" }, 1.946 + { "tow", "dG93" }, 1.947 + { "toy", "dG95" }, 1.948 + { "TRW", "VFJX" }, 1.949 + { "try", "dHJ5" }, 1.950 + { "t's", "dCdz" }, 1.951 + { "TTL", "VFRM" }, 1.952 + { "TTY", "VFRZ" }, 1.953 + { "tub", "dHVi" }, 1.954 + { "tug", "dHVn" }, 1.955 + { "tum", "dHVt" }, 1.956 + { "tun", "dHVu" }, 1.957 + { "TVA", "VFZB" }, 1.958 + { "TWA", "VFdB" }, 1.959 + { "two", "dHdv" }, 1.960 + { "TWX", "VFdY" }, 1.961 + { "ugh", "dWdo" }, 1.962 + { "UHF", "VUhG" }, 1.963 + { "Uri", "VXJp" }, 1.964 + { "urn", "dXJu" }, 1.965 + { "U.S", "VS5T" }, 1.966 + { "u's", "dSdz" }, 1.967 + { "USA", "VVNB" }, 1.968 + { "USC", "VVND" }, 1.969 + { "use", "dXNl" }, 1.970 + { "USN", "VVNO" }, 1.971 + { "van", "dmFu" }, 1.972 + { "vat", "dmF0" }, 1.973 + { "vee", "dmVl" }, 1.974 + { "vet", "dmV0" }, 1.975 + { "vex", "dmV4" }, 1.976 + { "VHF", "VkhG" }, 1.977 + { "via", "dmlh" }, 1.978 + { "vie", "dmll" }, 1.979 + { "vii", "dmlp" }, 1.980 + { "vis", "dmlz" }, 1.981 + { "viz", "dml6" }, 1.982 + { "von", "dm9u" }, 1.983 + { "vow", "dm93" }, 1.984 + { "v's", "didz" }, 1.985 + { "WAC", "V0FD" }, 1.986 + { "wad", "d2Fk" }, 1.987 + { "wag", "d2Fn" }, 1.988 + { "wah", "d2Fo" }, 1.989 + { "wan", "d2Fu" }, 1.990 + { "war", "d2Fy" }, 1.991 + { "was", "d2Fz" }, 1.992 + { "wax", "d2F4" }, 1.993 + { "way", "d2F5" }, 1.994 + { "web", "d2Vi" }, 1.995 + { "wed", "d2Vk" }, 1.996 + { "wee", "d2Vl" }, 1.997 + { "Wei", "V2Vp" }, 1.998 + { "wet", "d2V0" }, 1.999 + { "who", "d2hv" }, 1.1000 + { "why", "d2h5" }, 1.1001 + { "wig", "d2ln" }, 1.1002 + { "win", "d2lu" }, 1.1003 + { "wit", "d2l0" }, 1.1004 + { "woe", "d29l" }, 1.1005 + { "wok", "d29r" }, 1.1006 + { "won", "d29u" }, 1.1007 + { "woo", "d29v" }, 1.1008 + { "wop", "d29w" }, 1.1009 + { "wow", "d293" }, 1.1010 + { "wry", "d3J5" }, 1.1011 + { "w's", "dydz" }, 1.1012 + { "x's", "eCdz" }, 1.1013 + { "yah", "eWFo" }, 1.1014 + { "yak", "eWFr" }, 1.1015 + { "yam", "eWFt" }, 1.1016 + { "yap", "eWFw" }, 1.1017 + { "yaw", "eWF3" }, 1.1018 + { "yea", "eWVh" }, 1.1019 + { "yen", "eWVu" }, 1.1020 + { "yet", "eWV0" }, 1.1021 + { "yin", "eWlu" }, 1.1022 + { "yip", "eWlw" }, 1.1023 + { "yon", "eW9u" }, 1.1024 + { "you", "eW91" }, 1.1025 + { "yow", "eW93" }, 1.1026 + { "y's", "eSdz" }, 1.1027 + { "yuh", "eXVo" }, 1.1028 + { "zag", "emFn" }, 1.1029 + { "Zan", "WmFu" }, 1.1030 + { "zap", "emFw" }, 1.1031 + { "Zen", "WmVu" }, 1.1032 + { "zig", "emln" }, 1.1033 + { "zip", "emlw" }, 1.1034 + { "Zoe", "Wm9l" }, 1.1035 + { "zoo", "em9v" }, 1.1036 + { "z's", "eidz" }, 1.1037 + /* the false rumors file */ 1.1038 + { "\"So when I die, the first thing I will see in heaven is a score list?\"", 1.1039 + "IlNvIHdoZW4gSSBkaWUsIHRoZSBmaXJzdCB0aGluZyBJIHdpbGwgc2VlIGluIGhlYXZlbiBpcyBhIHNjb3JlIGxpc3Q/Ig==" }, 1.1040 + { "1st Law of Hacking: leaving is much more difficult than entering.", 1.1041 + "MXN0IExhdyBvZiBIYWNraW5nOiBsZWF2aW5nIGlzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdGhhbiBlbnRlcmluZy4=" }, 1.1042 + { "2nd Law of Hacking: first in, first out.", 1.1043 + "Mm5kIExhdyBvZiBIYWNraW5nOiBmaXJzdCBpbiwgZmlyc3Qgb3V0Lg==" }, 1.1044 + { "3rd Law of Hacking: the last blow counts most.", 1.1045 + "M3JkIExhdyBvZiBIYWNraW5nOiB0aGUgbGFzdCBibG93IGNvdW50cyBtb3N0Lg==" }, 1.1046 + { "4th Law of Hacking: you will find the exit at the entrance.", 1.1047 + "NHRoIExhdyBvZiBIYWNraW5nOiB5b3Ugd2lsbCBmaW5kIHRoZSBleGl0IGF0IHRoZSBlbnRyYW5jZS4=" }, 1.1048 + { "A chameleon imitating a mail daemon often delivers scrolls of fire.", 1.1049 + "QSBjaGFtZWxlb24gaW1pdGF0aW5nIGEgbWFpbCBkYWVtb24gb2Z0ZW4gZGVsaXZlcnMgc2Nyb2xscyBvZiBmaXJlLg==" }, 1.1050 + { "A cockatrice corpse is guaranteed to be untainted!", 1.1051 + "QSBjb2NrYXRyaWNlIGNvcnBzZSBpcyBndWFyYW50ZWVkIHRvIGJlIHVudGFpbnRlZCE=" }, 1.1052 + { "A dead cockatrice is just a dead lizard.", 1.1053 + "QSBkZWFkIGNvY2thdHJpY2UgaXMganVzdCBhIGRlYWQgbGl6YXJkLg==" }, 1.1054 + { "A dragon is just a snake that ate a scroll of fire.", 1.1055 + "QSBkcmFnb24gaXMganVzdCBhIHNuYWtlIHRoYXQgYXRlIGEgc2Nyb2xsIG9mIGZpcmUu" }, 1.1056 + { "A fading corridor enlightens your insight.", 1.1057 + "QSBmYWRpbmcgY29ycmlkb3IgZW5saWdodGVucyB5b3VyIGluc2lnaHQu" }, 1.1058 + { "A glowing potion is too hot to drink.", 1.1059 + "QSBnbG93aW5nIHBvdGlvbiBpcyB0b28gaG90IHRvIGRyaW5rLg==" }, 1.1060 + { "A good amulet may protect you against guards.", 1.1061 + "QSBnb29kIGFtdWxldCBtYXkgcHJvdGVjdCB5b3UgYWdhaW5zdCBndWFyZHMu" }, 1.1062 + { "A lizard corpse is a good thing to turn undead.", 1.1063 + "QSBsaXphcmQgY29ycHNlIGlzIGEgZ29vZCB0aGluZyB0byB0dXJuIHVuZGVhZC4=" }, 1.1064 + { "A long worm can be defined recursively. So how should you attack it?", 1.1065 + "QSBsb25nIHdvcm0gY2FuIGJlIGRlZmluZWQgcmVjdXJzaXZlbHkuIFNvIGhvdyBzaG91bGQgeW91IGF0dGFjayBpdD8=" }, 1.1066 + { "A monstrous mind is a toy forever.", 1.1067 + "QSBtb25zdHJvdXMgbWluZCBpcyBhIHRveSBmb3JldmVyLg==" }, 1.1068 + { "A nymph will be very pleased if you call her by her real name: Lorelei.", 1.1069 + "QSBueW1waCB3aWxsIGJlIHZlcnkgcGxlYXNlZCBpZiB5b3UgY2FsbCBoZXIgYnkgaGVyIHJlYWwgbmFtZTogTG9yZWxlaS4=" }, 1.1070 + { "A ring of dungeon master control is a great find.", 1.1071 + "QSByaW5nIG9mIGR1bmdlb24gbWFzdGVyIGNvbnRyb2wgaXMgYSBncmVhdCBmaW5kLg==" }, 1.1072 + { "A ring of extra ring finger is useless if not enchanted.", 1.1073 + "QSByaW5nIG9mIGV4dHJhIHJpbmcgZmluZ2VyIGlzIHVzZWxlc3MgaWYgbm90IGVuY2hhbnRlZC4=" }, 1.1074 + { "A rope may form a trail in a maze.", 1.1075 + "QSByb3BlIG1heSBmb3JtIGEgdHJhaWwgaW4gYSBtYXplLg==" }, 1.1076 + { "A staff may recharge if you drop it for awhile.", 1.1077 + "QSBzdGFmZiBtYXkgcmVjaGFyZ2UgaWYgeW91IGRyb3AgaXQgZm9yIGF3aGlsZS4=" }, 1.1078 + { "A visit to the Zoo is very educational; you meet interesting animals.", 1.1079 + "QSB2aXNpdCB0byB0aGUgWm9vIGlzIHZlcnkgZWR1Y2F0aW9uYWw7IHlvdSBtZWV0IGludGVyZXN0aW5nIGFuaW1hbHMu" }, 1.1080 + { "A wand of deaf is a more dangerous weapon than a wand of sheep.", 1.1081 + "QSB3YW5kIG9mIGRlYWYgaXMgYSBtb3JlIGRhbmdlcm91cyB3ZWFwb24gdGhhbiBhIHdhbmQgb2Ygc2hlZXAu" }, 1.1082 + { "A wand of vibration might bring the whole cave crashing about your ears.", 1.1083 + "QSB3YW5kIG9mIHZpYnJhdGlvbiBtaWdodCBicmluZyB0aGUgd2hvbGUgY2F2ZSBjcmFzaGluZyBhYm91dCB5b3VyIGVhcnMu" }, 1.1084 + { "A winner never quits. A quitter never wins.", 1.1085 + "QSB3aW5uZXIgbmV2ZXIgcXVpdHMuIEEgcXVpdHRlciBuZXZlciB3aW5zLg==" }, 1.1086 + { "A wish? Okay, make me a fortune cookie!", 1.1087 + "QSB3aXNoPyBPa2F5LCBtYWtlIG1lIGEgZm9ydHVuZSBjb29raWUh" }, 1.1088 + { "Afraid of mimics? Try to wear a ring of true seeing.", 1.1089 + "QWZyYWlkIG9mIG1pbWljcz8gVHJ5IHRvIHdlYXIgYSByaW5nIG9mIHRydWUgc2VlaW5nLg==" }, 1.1090 + { "All monsters are created evil, but some are more evil than others.", 1.1091 + "QWxsIG1vbnN0ZXJzIGFyZSBjcmVhdGVkIGV2aWwsIGJ1dCBzb21lIGFyZSBtb3JlIGV2aWwgdGhhbiBvdGhlcnMu" }, 1.1092 + { "Always attack a floating eye from behind!", 1.1093 + "QWx3YXlzIGF0dGFjayBhIGZsb2F0aW5nIGV5ZSBmcm9tIGJlaGluZCE=" }, 1.1094 + { "An elven cloak is always the height of fashion.", 1.1095 + "QW4gZWx2ZW4gY2xvYWsgaXMgYWx3YXlzIHRoZSBoZWlnaHQgb2YgZmFzaGlvbi4=" }, 1.1096 + { "Any small object that is accidentally dropped will hide under a larger object.", 1.1097 + "QW55IHNtYWxsIG9iamVjdCB0aGF0IGlzIGFjY2lkZW50YWxseSBkcm9wcGVkIHdpbGwgaGlkZSB1bmRlciBhIGxhcmdlciBvYmplY3Qu" }, 1.1098 + { "Balrogs do not appear above level 20.", 1.1099 + "QmFscm9ncyBkbyBub3QgYXBwZWFyIGFib3ZlIGxldmVsIDIwLg==" }, 1.1100 + { "Banana peels work especially well against Keystone Kops.", 1.1101 + "QmFuYW5hIHBlZWxzIHdvcmsgZXNwZWNpYWxseSB3ZWxsIGFnYWluc3QgS2V5c3RvbmUgS29wcy4=" }, 1.1102 + { "Be careful when eating bananas. Monsters might slip on the peels.", 1.1103 + "QmUgY2FyZWZ1bCB3aGVuIGVhdGluZyBiYW5hbmFzLiBNb25zdGVycyBtaWdodCBzbGlwIG9uIHRoZSBwZWVscy4=" }, 1.1104 + { "Better leave the dungeon; otherwise you might get hurt badly.", 1.1105 + "QmV0dGVyIGxlYXZlIHRoZSBkdW5nZW9uOyBvdGhlcndpc2UgeW91IG1pZ2h0IGdldCBodXJ0IGJhZGx5Lg==" }, 1.1106 + { "Beware of the potion of nitroglycerin -- it's not for the weak of heart.", 1.1107 + "QmV3YXJlIG9mIHRoZSBwb3Rpb24gb2Ygbml0cm9nbHljZXJpbiAtLSBpdCdzIG5vdCBmb3IgdGhlIHdlYWsgb2YgaGVhcnQu" }, 1.1108 + { "Beware: there's always a chance that your wand explodes as you try to zap it!", 1.1109 + "QmV3YXJlOiB0aGVyZSdzIGFsd2F5cyBhIGNoYW5jZSB0aGF0IHlvdXIgd2FuZCBleHBsb2RlcyBhcyB5b3UgdHJ5IHRvIHphcCBpdCE=" }, 1.1110 + { "Beyond the 23rd level lies a happy retirement in a room of your own.", 1.1111 + "QmV5b25kIHRoZSAyM3JkIGxldmVsIGxpZXMgYSBoYXBweSByZXRpcmVtZW50IGluIGEgcm9vbSBvZiB5b3VyIG93bi4=" }, 1.1112 + { "Changing your suit without dropping your sword? You must be kidding!", 1.1113 + "Q2hhbmdpbmcgeW91ciBzdWl0IHdpdGhvdXQgZHJvcHBpbmcgeW91ciBzd29yZD8gWW91IG11c3QgYmUga2lkZGluZyE=" }, 1.1114 + { "Cockatrices might turn themselves to stone faced with a mirror.", 1.1115 + "Q29ja2F0cmljZXMgbWlnaHQgdHVybiB0aGVtc2VsdmVzIHRvIHN0b25lIGZhY2VkIHdpdGggYSBtaXJyb3Iu" }, 1.1116 + { "Consumption of home-made food is strictly forbidden in this dungeon.", 1.1117 + "Q29uc3VtcHRpb24gb2YgaG9tZS1tYWRlIGZvb2QgaXMgc3RyaWN0bHkgZm9yYmlkZGVuIGluIHRoaXMgZHVuZ2Vvbi4=" }, 1.1118 + { "Dark room? Your chance to develop your photographs!", 1.1119 + "RGFyayByb29tPyBZb3VyIGNoYW5jZSB0byBkZXZlbG9wIHlvdXIgcGhvdG9ncmFwaHMh" }, 1.1120 + { "Dark rooms are not *completely* dark: just wait and let your eyes adjust...", 1.1121 + "RGFyayByb29tcyBhcmUgbm90ICpjb21wbGV0ZWx5KiBkYXJrOiBqdXN0IHdhaXQgYW5kIGxldCB5b3VyIGV5ZXMgYWRqdXN0Li4u" }, 1.1122 + { "David London sez, \"Hey guys, *WIELD* a lizard corpse against a cockatrice!\"", 1.1123 + "RGF2aWQgTG9uZG9uIHNleiwgIkhleSBndXlzLCAqV0lFTEQqIGEgbGl6YXJkIGNvcnBzZSBhZ2FpbnN0IGEgY29ja2F0cmljZSEi" }, 1.1124 + { "Death is just life's way of telling you you've been fired.", 1.1125 + "RGVhdGggaXMganVzdCBsaWZlJ3Mgd2F5IG9mIHRlbGxpbmcgeW91IHlvdSd2ZSBiZWVuIGZpcmVkLg==" }, 1.1126 + { "Demi-gods don't need any help from the gods.", 1.1127 + "RGVtaS1nb2RzIGRvbid0IG5lZWQgYW55IGhlbHAgZnJvbSB0aGUgZ29kcy4=" }, 1.1128 + { "Demons *HATE* Priests and Priestesses.", 1.1129 + "RGVtb25zICpIQVRFKiBQcmllc3RzIGFuZCBQcmllc3Rlc3Nlcy4=" }, 1.1130 + { "Didn't you forget to pay?", 1.1131 + "RGlkbid0IHlvdSBmb3JnZXQgdG8gcGF5Pw==" }, 1.1132 + { "Didn't your mother tell you not to eat food off the floor?", 1.1133 + "RGlkbid0IHlvdXIgbW90aGVyIHRlbGwgeW91IG5vdCB0byBlYXQgZm9vZCBvZmYgdGhlIGZsb29yPw==" }, 1.1134 + { "Direct a direct hit on your direct opponent, directing in the right direction.", 1.1135 + "RGlyZWN0IGEgZGlyZWN0IGhpdCBvbiB5b3VyIGRpcmVjdCBvcHBvbmVudCwgZGlyZWN0aW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24u" }, 1.1136 + { "Do you want to make more money? Sure, we all do! Join the Fort Ludios guard!", 1.1137 + "RG8geW91IHdhbnQgdG8gbWFrZSBtb3JlIG1vbmV5PyBTdXJlLCB3ZSBhbGwgZG8hIEpvaW4gdGhlIEZvcnQgTHVkaW9zIGd1YXJkIQ==" }, 1.1138 + { "Don't eat too much: you might start hiccoughing!", 1.1139 + "RG9uJ3QgZWF0IHRvbyBtdWNoOiB5b3UgbWlnaHQgc3RhcnQgaGljY291Z2hpbmch" }, 1.1140 + { "Don't play hack at your work; your boss might hit you!", 1.1141 + "RG9uJ3QgcGxheSBoYWNrIGF0IHlvdXIgd29yazsgeW91ciBib3NzIG1pZ2h0IGhpdCB5b3Uh" }, 1.1142 + { "Don't tell a soul you found a secret door, otherwise it isn't a secret anymore.", 1.1143 + "RG9uJ3QgdGVsbCBhIHNvdWwgeW91IGZvdW5kIGEgc2VjcmV0IGRvb3IsIG90aGVyd2lzZSBpdCBpc24ndCBhIHNlY3JldCBhbnltb3JlLg==" }, 1.1144 + { "Drinking potions of booze may land you in jail if you are under 21.", 1.1145 + "RHJpbmtpbmcgcG90aW9ucyBvZiBib296ZSBtYXkgbGFuZCB5b3UgaW4gamFpbCBpZiB5b3UgYXJlIHVuZGVyIDIxLg==" }, 1.1146 + { "Drop your vanity and get rid of your jewels! Pickpockets about!", 1.1147 + "RHJvcCB5b3VyIHZhbml0eSBhbmQgZ2V0IHJpZCBvZiB5b3VyIGpld2VscyEgUGlja3BvY2tldHMgYWJvdXQh" }, 1.1148 + { "Eat 10 cloves of garlic and keep all humans at a two-square distance.", 1.1149 + "RWF0IDEwIGNsb3ZlcyBvZiBnYXJsaWMgYW5kIGtlZXAgYWxsIGh1bWFucyBhdCBhIHR3by1zcXVhcmUgZGlzdGFuY2Uu" }, 1.1150 + { "Eels hide under mud. Use a unicorn to clear the water and make them visible.", 1.1151 + "RWVscyBoaWRlIHVuZGVyIG11ZC4gVXNlIGEgdW5pY29ybiB0byBjbGVhciB0aGUgd2F0ZXIgYW5kIG1ha2UgdGhlbSB2aXNpYmxlLg==" }, 1.1152 + { "Engrave your wishes with a wand of wishing.", 1.1153 + "RW5ncmF2ZSB5b3VyIHdpc2hlcyB3aXRoIGEgd2FuZCBvZiB3aXNoaW5nLg==" }, 1.1154 + { "Eventually you will come to admire the swift elegance of a retreating nymph.", 1.1155 + "RXZlbnR1YWxseSB5b3Ugd2lsbCBjb21lIHRvIGFkbWlyZSB0aGUgc3dpZnQgZWxlZ2FuY2Ugb2YgYSByZXRyZWF0aW5nIG55bXBoLg==" }, 1.1156 + { "Ever heard hissing outside? I *knew* you hadn't!", 1.1157 + "RXZlciBoZWFyZCBoaXNzaW5nIG91dHNpZGU/IEkgKmtuZXcqIHlvdSBoYWRuJ3Qh" }, 1.1158 + { "Ever lifted a dragon corpse?", 1.1159 + "RXZlciBsaWZ0ZWQgYSBkcmFnb24gY29ycHNlPw==" }, 1.1160 + { "Ever seen a leocrotta dancing the tengu?", 1.1161 + "RXZlciBzZWVuIGEgbGVvY3JvdHRhIGRhbmNpbmcgdGhlIHRlbmd1Pw==" }, 1.1162 + { "Ever seen your weapon glow plaid?", 1.1163 + "RXZlciBzZWVuIHlvdXIgd2VhcG9uIGdsb3cgcGxhaWQ/" }, 1.1164 + { "Ever tamed a shopkeeper?", 1.1165 + "RXZlciB0YW1lZCBhIHNob3BrZWVwZXI/" }, 1.1166 + { "Ever tried digging through a Vault Guard?", 1.1167 + "RXZlciB0cmllZCBkaWdnaW5nIHRocm91Z2ggYSBWYXVsdCBHdWFyZD8=" }, 1.1168 + { "Ever tried enchanting a rope?", 1.1169 + "RXZlciB0cmllZCBlbmNoYW50aW5nIGEgcm9wZT8=" }, 1.1170 + { "Floating eyes can't stand Hawaiian shirts.", 1.1171 + "RmxvYXRpbmcgZXllcyBjYW4ndCBzdGFuZCBIYXdhaWlhbiBzaGlydHMu" }, 1.1172 + { "For any remedy there is a misery.", 1.1173 + "Rm9yIGFueSByZW1lZHkgdGhlcmUgaXMgYSBtaXNlcnku" }, 1.1174 + { "Giant bats turn into giant vampires.", 1.1175 + "R2lhbnQgYmF0cyB0dXJuIGludG8gZ2lhbnQgdmFtcGlyZXMu" }, 1.1176 + { "Good day for overcoming obstacles. Try a steeplechase.", 1.1177 + "R29vZCBkYXkgZm9yIG92ZXJjb21pbmcgb2JzdGFjbGVzLiBUcnkgYSBzdGVlcGxlY2hhc2Uu" }, 1.1178 + { "Half Moon tonight. (At least it's better than no Moon at all.)", 1.1179 + "SGFsZiBNb29uIHRvbmlnaHQuIChBdCBsZWFzdCBpdCdzIGJldHRlciB0aGFuIG5vIE1vb24gYXQgYWxsLik=" }, 1.1180 + { "Help! I'm being held prisoner in a fortune cookie factory!", 1.1181 + "SGVscCEgSSdtIGJlaW5nIGhlbGQgcHJpc29uZXIgaW4gYSBmb3J0dW5lIGNvb2tpZSBmYWN0b3J5IQ==" }, 1.1182 + { "Housecats have nine lives, kittens only one.", 1.1183 + "SG91c2VjYXRzIGhhdmUgbmluZSBsaXZlcywga2l0dGVucyBvbmx5IG9uZS4=" }, 1.1184 + { "How long can you tread water?", 1.1185 + "SG93IGxvbmcgY2FuIHlvdSB0cmVhZCB3YXRlcj8=" }, 1.1186 + { "Hungry? There is an abundance of food on the next level.", 1.1187 + "SHVuZ3J5PyBUaGVyZSBpcyBhbiBhYnVuZGFuY2Ugb2YgZm9vZCBvbiB0aGUgbmV4dCBsZXZlbC4=" }, 1.1188 + { "I guess you've never hit a mail daemon with the Amulet of Yendor...", 1.1189 + "SSBndWVzcyB5b3UndmUgbmV2ZXIgaGl0IGEgbWFpbCBkYWVtb24gd2l0aCB0aGUgQW11bGV0IG9mIFllbmRvci4uLg==" }, 1.1190 + { "If you are the shopkeeper, you can take things for free.", 1.1191 + "SWYgeW91IGFyZSB0aGUgc2hvcGtlZXBlciwgeW91IGNhbiB0YWtlIHRoaW5ncyBmb3IgZnJlZS4=" }, 1.1192 + { "If you can't learn to do it well, learn to enjoy doing it badly.", 1.1193 + "SWYgeW91IGNhbid0IGxlYXJuIHRvIGRvIGl0IHdlbGwsIGxlYXJuIHRvIGVuam95IGRvaW5nIGl0IGJhZGx5Lg==" }, 1.1194 + { "If you thought the Wizard was bad, just wait till you meet the Warlord!", 1.1195 + "SWYgeW91IHRob3VnaHQgdGhlIFdpemFyZCB3YXMgYmFkLCBqdXN0IHdhaXQgdGlsbCB5b3UgbWVldCB0aGUgV2FybG9yZCE=" }, 1.1196 + { "If you turn blind, don't expect your dog to be turned into a seeing-eye dog.", 1.1197 + "SWYgeW91IHR1cm4gYmxpbmQsIGRvbid0IGV4cGVjdCB5b3VyIGRvZyB0byBiZSB0dXJuZWQgaW50byBhIHNlZWluZy1leWUgZG9nLg==" }, 1.1198 + { "If you want to feel great, you must eat something real big.", 1.1199 + "SWYgeW91IHdhbnQgdG8gZmVlbCBncmVhdCwgeW91IG11c3QgZWF0IHNvbWV0aGluZyByZWFsIGJpZy4=" }, 1.1200 + { "If you want to float, you'd better eat a floating eye.", 1.1201 + "SWYgeW91IHdhbnQgdG8gZmxvYXQsIHlvdSdkIGJldHRlciBlYXQgYSBmbG9hdGluZyBleWUu" }, 1.1202 + { "If your ghost kills a player, it increases your score.", 1.1203 + "SWYgeW91ciBnaG9zdCBraWxscyBhIHBsYXllciwgaXQgaW5jcmVhc2VzIHlvdXIgc2NvcmUu" }, 1.1204 + { "Increase mindpower: Tame your own ghost!", 1.1205 + "SW5jcmVhc2UgbWluZHBvd2VyOiBUYW1lIHlvdXIgb3duIGdob3N0IQ==" }, 1.1206 + { "It furthers one to see the great man.", 1.1207 + "SXQgZnVydGhlcnMgb25lIHRvIHNlZSB0aGUgZ3JlYXQgbWFuLg==" }, 1.1208 + { "It's easy to overlook a monster in a wood.", 1.1209 + "SXQncyBlYXN5IHRvIG92ZXJsb29rIGEgbW9uc3RlciBpbiBhIHdvb2Qu" }, 1.1210 + { "Just below any trapdoor there may be another one. Just keep falling!", 1.1211 + "SnVzdCBiZWxvdyBhbnkgdHJhcGRvb3IgdGhlcmUgbWF5IGJlIGFub3RoZXIgb25lLiBKdXN0IGtlZXAgZmFsbGluZyE=" }, 1.1212 + { "Katanas are very sharp; watch you don't cut yourself.", 1.1213 + "S2F0YW5hcyBhcmUgdmVyeSBzaGFycDsgd2F0Y2ggeW91IGRvbid0IGN1dCB5b3Vyc2VsZi4=" }, 1.1214 + { "Keep a clear mind: quaff clear potions.", 1.1215 + "S2VlcCBhIGNsZWFyIG1pbmQ6IHF1YWZmIGNsZWFyIHBvdGlvbnMu" }, 1.1216 + { "Kicking the terminal doesn't hurt the monsters.", 1.1217 + "S2lja2luZyB0aGUgdGVybWluYWwgZG9lc24ndCBodXJ0IHRoZSBtb25zdGVycy4=" }, 1.1218 + { "Killer bees keep appearing till you kill their queen.", 1.1219 + "S2lsbGVyIGJlZXMga2VlcCBhcHBlYXJpbmcgdGlsbCB5b3Uga2lsbCB0aGVpciBxdWVlbi4=" }, 1.1220 + { "Killer bunnies can be tamed with carrots only.", 1.1221 + "S2lsbGVyIGJ1bm5pZXMgY2FuIGJlIHRhbWVkIHdpdGggY2Fycm90cyBvbmx5Lg==" }, 1.1222 + { "Latest news? Put `rec.games.roguelike.nethack' in your .newsrc!", 1.1223 + "TGF0ZXN0IG5ld3M/IFB1dCBgcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrJyBpbiB5b3VyIC5uZXdzcmMh" }, 1.1224 + { "Learn how to spell. Play NetHack!", 1.1225 + "TGVhcm4gaG93IHRvIHNwZWxsLiBQbGF5IE5ldEhhY2sh" }, 1.1226 + { "Leprechauns hide their gold in a secret room.", 1.1227 + "TGVwcmVjaGF1bnMgaGlkZSB0aGVpciBnb2xkIGluIGEgc2VjcmV0IHJvb20u" }, 1.1228 + { "Let your fingers do the walking on the yulkjhnb keys.", 1.1229 + "TGV0IHlvdXIgZmluZ2VycyBkbyB0aGUgd2Fsa2luZyBvbiB0aGUgeXVsa2pobmIga2V5cy4=" }, 1.1230 + { "Let's face it: this time you're not going to win.", 1.1231 + "TGV0J3MgZmFjZSBpdDogdGhpcyB0aW1lIHlvdSdyZSBub3QgZ29pbmcgdG8gd2luLg==" }, 1.1232 + { "Let's have a party, drink a lot of booze.", 1.1233 + "TGV0J3MgaGF2ZSBhIHBhcnR5LCBkcmluayBhIGxvdCBvZiBib296ZS4=" }, 1.1234 + { "Liquor sellers do not drink; they hate to see you twice.", 1.1235 + "TGlxdW9yIHNlbGxlcnMgZG8gbm90IGRyaW5rOyB0aGV5IGhhdGUgdG8gc2VlIHlvdSB0d2ljZS4=" }, 1.1236 + { "Lunar eclipse tonight. May as well quit now!", 1.1237 + "THVuYXIgZWNsaXBzZSB0b25pZ2h0LiBNYXkgYXMgd2VsbCBxdWl0IG5vdyE=" }, 1.1238 + { "Meeting your own ghost decreases your luck considerably!", 1.1239 + "TWVldGluZyB5b3VyIG93biBnaG9zdCBkZWNyZWFzZXMgeW91ciBsdWNrIGNvbnNpZGVyYWJseSE=" }, 1.1240 + { "Money to invest? Take it to the local branch of the Magic Memory Vault!", 1.1241 + "TW9uZXkgdG8gaW52ZXN0PyBUYWtlIGl0IHRvIHRoZSBsb2NhbCBicmFuY2ggb2YgdGhlIE1hZ2ljIE1lbW9yeSBWYXVsdCE=" }, 1.1242 + { "Monsters come from nowhere to hit you everywhere.", 1.1243 + "TW9uc3RlcnMgY29tZSBmcm9tIG5vd2hlcmUgdG8gaGl0IHlvdSBldmVyeXdoZXJlLg==" }, 1.1244 + { "Monsters sleep because you are boring, not because they ever get tired.", 1.1245 + "TW9uc3RlcnMgc2xlZXAgYmVjYXVzZSB5b3UgYXJlIGJvcmluZywgbm90IGJlY2F1c2UgdGhleSBldmVyIGdldCB0aXJlZC4=" }, 1.1246 + { "Most monsters prefer minced meat. That's why they are hitting you!", 1.1247 + "TW9zdCBtb25zdGVycyBwcmVmZXIgbWluY2VkIG1lYXQuIFRoYXQncyB3aHkgdGhleSBhcmUgaGl0dGluZyB5b3Uh" }, 1.1248 + { "Most of the bugs in NetHack are on the floor.", 1.1249 + "TW9zdCBvZiB0aGUgYnVncyBpbiBOZXRIYWNrIGFyZSBvbiB0aGUgZmxvb3Iu" }, 1.1250 + { "Much ado Nothing Happens.", 1.1251 + "TXVjaCBhZG8gTm90aGluZyBIYXBwZW5zLg==" }, 1.1252 + { "Multi-player NetHack is a myth.", 1.1253 + "TXVsdGktcGxheWVyIE5ldEhhY2sgaXMgYSBteXRoLg==" }, 1.1254 + { "NetHack is addictive. Too late, you're already hooked.", 1.1255 + "TmV0SGFjayBpcyBhZGRpY3RpdmUuIFRvbyBsYXRlLCB5b3UncmUgYWxyZWFkeSBob29rZWQu" }, 1.1256 + { "Never ask a shopkeeper for a price list.", 1.1257 + "TmV2ZXIgYXNrIGEgc2hvcGtlZXBlciBmb3IgYSBwcmljZSBsaXN0Lg==" }, 1.1258 + { "Never burn a tree, unless you like getting whacked with a +5 shovel.", 1.1259 + "TmV2ZXIgYnVybiBhIHRyZWUsIHVubGVzcyB5b3UgbGlrZSBnZXR0aW5nIHdoYWNrZWQgd2l0aCBhICs1IHNob3ZlbC4=" }, 1.1260 + { "Never eat with glowing hands!", 1.1261 + "TmV2ZXIgZWF0IHdpdGggZ2xvd2luZyBoYW5kcyE=" }, 1.1262 + { "Never mind the monsters hitting you: they just replace the charwomen.", 1.1263 + "TmV2ZXIgbWluZCB0aGUgbW9uc3RlcnMgaGl0dGluZyB5b3U6IHRoZXkganVzdCByZXBsYWNlIHRoZSBjaGFyd29tZW4u" }, 1.1264 + { "Never play leapfrog with a unicorn.", 1.1265 + "TmV2ZXIgcGxheSBsZWFwZnJvZyB3aXRoIGEgdW5pY29ybi4=" }, 1.1266 + { "Never step on a cursed engraving.", 1.1267 + "TmV2ZXIgc3RlcCBvbiBhIGN1cnNlZCBlbmdyYXZpbmcu" }, 1.1268 + { "Never swim with a camera: there's nothing to take pictures of.", 1.1269 + "TmV2ZXIgc3dpbSB3aXRoIGEgY2FtZXJhOiB0aGVyZSdzIG5vdGhpbmcgdG8gdGFrZSBwaWN0dXJlcyBvZi4=" }, 1.1270 + { "Never teach your pet rust monster to fetch.", 1.1271 + "TmV2ZXIgdGVhY2ggeW91ciBwZXQgcnVzdCBtb25zdGVyIHRvIGZldGNoLg==" }, 1.1272 + { "Never trust a random generator in magic fields.", 1.1273 + "TmV2ZXIgdHJ1c3QgYSByYW5kb20gZ2VuZXJhdG9yIGluIG1hZ2ljIGZpZWxkcy4=" }, 1.1274 + { "Never use a wand of death.", 1.1275 + "TmV2ZXIgdXNlIGEgd2FuZCBvZiBkZWF0aC4=" }, 1.1276 + { "No level contains two shops. The maze is no level. So...", 1.1277 + "Tm8gbGV2ZWwgY29udGFpbnMgdHdvIHNob3BzLiBUaGUgbWF6ZSBpcyBubyBsZXZlbC4gU28uLi4=" }, 1.1278 + { "No part of this fortune may be reproduced, stored in a retrieval system, ...", 1.1279 + "Tm8gcGFydCBvZiB0aGlzIGZvcnR1bmUgbWF5IGJlIHJlcHJvZHVjZWQsIHN0b3JlZCBpbiBhIHJldHJpZXZhbCBzeXN0ZW0sIC4uLg==" }, 1.1280 + { "Not all rumors are as misleading as this one.", 1.1281 + "Tm90IGFsbCBydW1vcnMgYXJlIGFzIG1pc2xlYWRpbmcgYXMgdGhpcyBvbmUu" }, 1.1282 + { "Nymphs and nurses like beautiful rings.", 1.1283 + "TnltcGhzIGFuZCBudXJzZXMgbGlrZSBiZWF1dGlmdWwgcmluZ3Mu" }, 1.1284 + { "Nymphs are blondes. Are you a gentleman?", 1.1285 + "TnltcGhzIGFyZSBibG9uZGVzLiBBcmUgeW91IGEgZ2VudGxlbWFuPw==" }, 1.1286 + { "Offering a unicorn a worthless piece of glass might prove to be fatal!", 1.1287 + "T2ZmZXJpbmcgYSB1bmljb3JuIGEgd29ydGhsZXNzIHBpZWNlIG9mIGdsYXNzIG1pZ2h0IHByb3ZlIHRvIGJlIGZhdGFsIQ==" }, 1.1288 + { "Old hackers never die: young ones do.", 1.1289 + "T2xkIGhhY2tlcnMgbmV2ZXIgZGllOiB5b3VuZyBvbmVzIGRvLg==" }, 1.1290 + { "One has to leave shops before closing time.", 1.1291 + "T25lIGhhcyB0byBsZWF2ZSBzaG9wcyBiZWZvcmUgY2xvc2luZyB0aW1lLg==" }, 1.1292 + { "One homunculus a day keeps the doctor away.", 1.1293 + "T25lIGhvbXVuY3VsdXMgYSBkYXkga2VlcHMgdGhlIGRvY3RvciBhd2F5Lg==" }, 1.1294 + { "One level further down somebody is getting killed, right now.", 1.1295 + "T25lIGxldmVsIGZ1cnRoZXIgZG93biBzb21lYm9keSBpcyBnZXR0aW5nIGtpbGxlZCwgcmlnaHQgbm93Lg==" }, 1.1296 + { "Only a wizard can use a magic whistle.", 1.1297 + "T25seSBhIHdpemFyZCBjYW4gdXNlIGEgbWFnaWMgd2hpc3RsZS4=" }, 1.1298 + { "Only adventurers of evil alignment think of killing their dog.", 1.1299 + "T25seSBhZHZlbnR1cmVycyBvZiBldmlsIGFsaWdubWVudCB0aGluayBvZiBraWxsaW5nIHRoZWlyIGRvZy4=" }, 1.1300 + { "Only chaotic evils kill sleeping monsters.", 1.1301 + "T25seSBjaGFvdGljIGV2aWxzIGtpbGwgc2xlZXBpbmcgbW9uc3RlcnMu" }, 1.1302 + { "Only real trappers escape traps.", 1.1303 + "T25seSByZWFsIHRyYXBwZXJzIGVzY2FwZSB0cmFwcy4=" }, 1.1304 + { "Only real wizards can write scrolls.", 1.1305 + "T25seSByZWFsIHdpemFyZHMgY2FuIHdyaXRlIHNjcm9sbHMu" }, 1.1306 + { "Operation OVERKILL has started now.", 1.1307 + "T3BlcmF0aW9uIE9WRVJLSUxMIGhhcyBzdGFydGVkIG5vdy4=" }, 1.1308 + { "PLEASE ignore previous rumor.", 1.1309 + "UExFQVNFIGlnbm9yZSBwcmV2aW91cyBydW1vci4=" }, 1.1310 + { "Polymorph into an ettin; meet your opponents face to face to face.", 1.1311 + "UG9seW1vcnBoIGludG8gYW4gZXR0aW47IG1lZXQgeW91ciBvcHBvbmVudHMgZmFjZSB0byBmYWNlIHRvIGZhY2Uu" }, 1.1312 + { "Praying will frighten demons.", 1.1313 + "UHJheWluZyB3aWxsIGZyaWdodGVuIGRlbW9ucy4=" }, 1.1314 + { "Row (3x) that boat gently down the stream, Charon (4x), death is but a dream.", 1.1315 + "Um93ICgzeCkgdGhhdCBib2F0IGdlbnRseSBkb3duIHRoZSBzdHJlYW0sIENoYXJvbiAoNHgpLCBkZWF0aCBpcyBidXQgYSBkcmVhbS4=" }, 1.1316 + { "Running is good for your legs.", 1.1317 + "UnVubmluZyBpcyBnb29kIGZvciB5b3VyIGxlZ3Mu" }, 1.1318 + { "Screw up your courage! You've screwed up everything else.", 1.1319 + "U2NyZXcgdXAgeW91ciBjb3VyYWdlISBZb3UndmUgc2NyZXdlZCB1cCBldmVyeXRoaW5nIGVsc2Uu" }, 1.1320 + { "Seepage? Leaky pipes? Rising damp? Summon the plumber!", 1.1321 + "U2VlcGFnZT8gTGVha3kgcGlwZXM/IFJpc2luZyBkYW1wPyBTdW1tb24gdGhlIHBsdW1iZXIh" }, 1.1322 + { "Segmentation fault (core dumped).", 1.1323 + "U2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZCku" }, 1.1324 + { "Shopkeepers sometimes die from old age.", 1.1325 + "U2hvcGtlZXBlcnMgc29tZXRpbWVzIGRpZSBmcm9tIG9sZCBhZ2Uu" }, 1.1326 + { "Some mazes (especially small ones) have no solutions, says man 6 maze.", 1.1327 + "U29tZSBtYXplcyAoZXNwZWNpYWxseSBzbWFsbCBvbmVzKSBoYXZlIG5vIHNvbHV0aW9ucywgc2F5cyBtYW4gNiBtYXplLg==" }, 1.1328 + { "Some questions the Sphynx asks just *don't* have any answers.", 1.1329 + "U29tZSBxdWVzdGlvbnMgdGhlIFNwaHlueCBhc2tzIGp1c3QgKmRvbid0KiBoYXZlIGFueSBhbnN3ZXJzLg==" }, 1.1330 + { "Sometimes \"mu\" is the answer.", 1.1331 + "U29tZXRpbWVzICJtdSIgaXMgdGhlIGFuc3dlci4=" }, 1.1332 + { "Sorry, no fortune this time. Better luck next cookie!", 1.1333 + "U29ycnksIG5vIGZvcnR1bmUgdGhpcyB0aW1lLiBCZXR0ZXIgbHVjayBuZXh0IGNvb2tpZSE=" }, 1.1334 + { "Spare your scrolls of make-edible until it's really necessary!", 1.1335 + "U3BhcmUgeW91ciBzY3JvbGxzIG9mIG1ha2UtZWRpYmxlIHVudGlsIGl0J3MgcmVhbGx5IG5lY2Vzc2FyeSE=" }, 1.1336 + { "Suddenly, the dungeon will collapse...", 1.1337 + "U3VkZGVubHksIHRoZSBkdW5nZW9uIHdpbGwgY29sbGFwc2UuLi4=" }, 1.1338 + { "Taming a mail daemon may cause a system security violation.", 1.1339 + "VGFtaW5nIGEgbWFpbCBkYWVtb24gbWF5IGNhdXNlIGEgc3lzdGVtIHNlY3VyaXR5IHZpb2xhdGlvbi4=" }, 1.1340 + { "The crowd was so tough, the Stooges won't play the Dungeon anymore, nyuk nyuk.", 1.1341 + "VGhlIGNyb3dkIHdhcyBzbyB0b3VnaCwgdGhlIFN0b29nZXMgd29uJ3QgcGxheSB0aGUgRHVuZ2VvbiBhbnltb3JlLCBueXVrIG55dWsu" }, 1.1342 + { "The leprechauns hide their treasure in a small hidden room.", 1.1343 + "VGhlIGxlcHJlY2hhdW5zIGhpZGUgdGhlaXIgdHJlYXN1cmUgaW4gYSBzbWFsbCBoaWRkZW4gcm9vbS4=" }, 1.1344 + { "The longer the wand the better.", 1.1345 + "VGhlIGxvbmdlciB0aGUgd2FuZCB0aGUgYmV0dGVyLg==" }, 1.1346 + { "The magic word is \"XYZZY\".", 1.1347 + "VGhlIG1hZ2ljIHdvcmQgaXMgIlhZWlpZIi4=" }, 1.1348 + { "The meek shall inherit your bones files.", 1.1349 + "VGhlIG1lZWsgc2hhbGwgaW5oZXJpdCB5b3VyIGJvbmVzIGZpbGVzLg==" }, 1.1350 + { "The mines are dark and deep, and I have levels to go before I sleep.", 1.1351 + "VGhlIG1pbmVzIGFyZSBkYXJrIGFuZCBkZWVwLCBhbmQgSSBoYXZlIGxldmVscyB0byBnbyBiZWZvcmUgSSBzbGVlcC4=" }, 1.1352 + { "The use of dynamite is dangerous.", 1.1353 + "VGhlIHVzZSBvZiBkeW5hbWl0ZSBpcyBkYW5nZXJvdXMu" }, 1.1354 + { "There are no worms in the UNIX version.", 1.1355 + "VGhlcmUgYXJlIG5vIHdvcm1zIGluIHRoZSBVTklYIHZlcnNpb24u" }, 1.1356 + { "There is a trap on this level!", 1.1357 + "VGhlcmUgaXMgYSB0cmFwIG9uIHRoaXMgbGV2ZWwh" }, 1.1358 + { "They say that Demogorgon, Asmodeus, Orcus, Yeenoghu & Juiblex is no law firm.", 1.1359 + "VGhleSBzYXkgdGhhdCBEZW1vZ29yZ29uLCBBc21vZGV1cywgT3JjdXMsIFllZW5vZ2h1ICYgSnVpYmxleCBpcyBubyBsYXcgZmlybS4=" }, 1.1360 + { "They say that Geryon has an evil twin, beware!", 1.1361 + "VGhleSBzYXkgdGhhdCBHZXJ5b24gaGFzIGFuIGV2aWwgdHdpbiwgYmV3YXJlIQ==" }, 1.1362 + { "They say that Medusa would make a terrible pet.", 1.1363 + "VGhleSBzYXkgdGhhdCBNZWR1c2Egd291bGQgbWFrZSBhIHRlcnJpYmxlIHBldC4=" }, 1.1364 + { "They say that NetHack bugs are Seldon planned.", 1.1365 + "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGJ1Z3MgYXJlIFNlbGRvbiBwbGFubmVkLg==" }, 1.1366 + { "They say that NetHack comes in 256 flavors.", 1.1367 + "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGNvbWVzIGluIDI1NiBmbGF2b3JzLg==" }, 1.1368 + { "They say that NetHack is just a computer game.", 1.1369 + "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIGp1c3QgYSBjb21wdXRlciBnYW1lLg==" }, 1.1370 + { "They say that NetHack is more than just a computer game.", 1.1371 + "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG1vcmUgdGhhbiBqdXN0IGEgY29tcHV0ZXIgZ2FtZS4=" }, 1.1372 + { "They say that NetHack is never what it used to be.", 1.1373 + "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG5ldmVyIHdoYXQgaXQgdXNlZCB0byBiZS4=" }, 1.1374 + { "They say that a baby dragon is too small to hurt or help you.", 1.1375 + "VGhleSBzYXkgdGhhdCBhIGJhYnkgZHJhZ29uIGlzIHRvbyBzbWFsbCB0byBodXJ0IG9yIGhlbHAgeW91Lg==" }, 1.1376 + { "They say that a black pudding is simply a brown pudding gone bad.", 1.1377 + "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHB1ZGRpbmcgaXMgc2ltcGx5IGEgYnJvd24gcHVkZGluZyBnb25lIGJhZC4=" }, 1.1378 + { "They say that a black sheep has 3 bags full of wool.", 1.1379 + "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHNoZWVwIGhhcyAzIGJhZ3MgZnVsbCBvZiB3b29sLg==" }, 1.1380 + { "They say that a blank scroll is like a blank check.", 1.1381 + "VGhleSBzYXkgdGhhdCBhIGJsYW5rIHNjcm9sbCBpcyBsaWtlIGEgYmxhbmsgY2hlY2su" }, 1.1382 + { "They say that a cat named Morris has nine lives.", 1.1383 + "VGhleSBzYXkgdGhhdCBhIGNhdCBuYW1lZCBNb3JyaXMgaGFzIG5pbmUgbGl2ZXMu" }, 1.1384 + { "They say that a desperate shopper might pay any price in a shop.", 1.1385 + "VGhleSBzYXkgdGhhdCBhIGRlc3BlcmF0ZSBzaG9wcGVyIG1pZ2h0IHBheSBhbnkgcHJpY2UgaW4gYSBzaG9wLg==" }, 1.1386 + { "They say that a diamond dog is everybody's best friend.", 1.1387 + "VGhleSBzYXkgdGhhdCBhIGRpYW1vbmQgZG9nIGlzIGV2ZXJ5Ym9keSdzIGJlc3QgZnJpZW5kLg==" }, 1.1388 + { "They say that a dwarf lord can carry a pick-axe because his armor is light.", 1.1389 + "VGhleSBzYXkgdGhhdCBhIGR3YXJmIGxvcmQgY2FuIGNhcnJ5IGEgcGljay1heGUgYmVjYXVzZSBoaXMgYXJtb3IgaXMgbGlnaHQu" }, 1.1390 + { "They say that a floating eye can defeat Medusa.", 1.1391 + "VGhleSBzYXkgdGhhdCBhIGZsb2F0aW5nIGV5ZSBjYW4gZGVmZWF0IE1lZHVzYS4=" }, 1.1392 + { "They say that a fortune only has 1 line and you can't read between it.", 1.1393 + "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lIGFuZCB5b3UgY2FuJ3QgcmVhZCBiZXR3ZWVuIGl0Lg==" }, 1.1394 + { "They say that a fortune only has 1 line, but you can read between it.", 1.1395 + "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lLCBidXQgeW91IGNhbiByZWFkIGJldHdlZW4gaXQu" }, 1.1396 + { "They say that a fountain looks nothing like a regularly erupting geyser.", 1.1397 + "VGhleSBzYXkgdGhhdCBhIGZvdW50YWluIGxvb2tzIG5vdGhpbmcgbGlrZSBhIHJlZ3VsYXJseSBlcnVwdGluZyBnZXlzZXIu" }, 1.1398 + { "They say that a gold doubloon is worth more than its weight in gold.", 1.1399 + "VGhleSBzYXkgdGhhdCBhIGdvbGQgZG91Ymxvb24gaXMgd29ydGggbW9yZSB0aGFuIGl0cyB3ZWlnaHQgaW4gZ29sZC4=" }, 1.1400 + { "They say that a grid bug won't pay a shopkeeper for zapping you in a shop.", 1.1401 + "VGhleSBzYXkgdGhhdCBhIGdyaWQgYnVnIHdvbid0IHBheSBhIHNob3BrZWVwZXIgZm9yIHphcHBpbmcgeW91IGluIGEgc2hvcC4=" }, 1.1402 + { "They say that a gypsy could tell your fortune for a price.", 1.1403 + "VGhleSBzYXkgdGhhdCBhIGd5cHN5IGNvdWxkIHRlbGwgeW91ciBmb3J0dW5lIGZvciBhIHByaWNlLg==" }, 1.1404 + { "They say that a hacker named Alice once level teleported by using a mirror.", 1.1405 + "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBBbGljZSBvbmNlIGxldmVsIHRlbGVwb3J0ZWQgYnkgdXNpbmcgYSBtaXJyb3Iu" }, 1.1406 + { "They say that a hacker named David once slew a giant with a sling and a rock.", 1.1407 + "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEYXZpZCBvbmNlIHNsZXcgYSBnaWFudCB3aXRoIGEgc2xpbmcgYW5kIGEgcm9jay4=" }, 1.1408 + { "They say that a hacker named Dorothy once rode a fog cloud to Oz.", 1.1409 + "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEb3JvdGh5IG9uY2Ugcm9kZSBhIGZvZyBjbG91ZCB0byBPei4=" }, 1.1410 + { "They say that a hacker named Mary once lost a white sheep in the mazes.", 1.1411 + "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBNYXJ5IG9uY2UgbG9zdCBhIHdoaXRlIHNoZWVwIGluIHRoZSBtYXplcy4=" }, 1.1412 + { "They say that a helm of brilliance is not to be taken lightly.", 1.1413 + "VGhleSBzYXkgdGhhdCBhIGhlbG0gb2YgYnJpbGxpYW5jZSBpcyBub3QgdG8gYmUgdGFrZW4gbGlnaHRseS4=" }, 1.1414 + { "They say that a hot dog and a hell hound are the same thing.", 1.1415 + "VGhleSBzYXkgdGhhdCBhIGhvdCBkb2cgYW5kIGEgaGVsbCBob3VuZCBhcmUgdGhlIHNhbWUgdGhpbmcu" }, 1.1416 + { "They say that a lamp named Aladdin's Lamp contains a djinni with 3 wishes.", 1.1417 + "VGhleSBzYXkgdGhhdCBhIGxhbXAgbmFtZWQgQWxhZGRpbidzIExhbXAgY29udGFpbnMgYSBkamlubmkgd2l0aCAzIHdpc2hlcy4=" }, 1.1418 + { "They say that a large dog named Lassie will lead you to the amulet.", 1.1419 + "VGhleSBzYXkgdGhhdCBhIGxhcmdlIGRvZyBuYW1lZCBMYXNzaWUgd2lsbCBsZWFkIHlvdSB0byB0aGUgYW11bGV0Lg==" }, 1.1420 + { "They say that a long sword is not a light sword.", 1.1421 + "VGhleSBzYXkgdGhhdCBhIGxvbmcgc3dvcmQgaXMgbm90IGEgbGlnaHQgc3dvcmQu" }, 1.1422 + { "They say that a manes won't mince words with you.", 1.1423 + "VGhleSBzYXkgdGhhdCBhIG1hbmVzIHdvbid0IG1pbmNlIHdvcmRzIHdpdGggeW91Lg==" }, 1.1424 + { "They say that a mind is a terrible thing to waste.", 1.1425 + "VGhleSBzYXkgdGhhdCBhIG1pbmQgaXMgYSB0ZXJyaWJsZSB0aGluZyB0byB3YXN0ZS4=" }, 1.1426 + { "They say that a plain nymph will only wear a wire ring in one ear.", 1.1427 + "VGhleSBzYXkgdGhhdCBhIHBsYWluIG55bXBoIHdpbGwgb25seSB3ZWFyIGEgd2lyZSByaW5nIGluIG9uZSBlYXIu" }, 1.1428 + { "They say that a plumed hat could be a previously used crested helmet.", 1.1429 + "VGhleSBzYXkgdGhhdCBhIHBsdW1lZCBoYXQgY291bGQgYmUgYSBwcmV2aW91c2x5IHVzZWQgY3Jlc3RlZCBoZWxtZXQu" }, 1.1430 + { "They say that a potion of oil is difficult to grasp.", 1.1431 + "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiBvaWwgaXMgZGlmZmljdWx0IHRvIGdyYXNwLg==" }, 1.1432 + { "They say that a potion of yogurt is a cancelled potion of sickness.", 1.1433 + "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiB5b2d1cnQgaXMgYSBjYW5jZWxsZWQgcG90aW9uIG9mIHNpY2tuZXNzLg==" }, 1.1434 + { "They say that a purple worm is not a baby purple dragon.", 1.1435 + "VGhleSBzYXkgdGhhdCBhIHB1cnBsZSB3b3JtIGlzIG5vdCBhIGJhYnkgcHVycGxlIGRyYWdvbi4=" }, 1.1436 + { "They say that a quivering blob tastes different than a gelatinous cube.", 1.1437 + "VGhleSBzYXkgdGhhdCBhIHF1aXZlcmluZyBibG9iIHRhc3RlcyBkaWZmZXJlbnQgdGhhbiBhIGdlbGF0aW5vdXMgY3ViZS4=" }, 1.1438 + { "They say that a runed broadsword named Stormbringer attracts vortices.", 1.1439 + "VGhleSBzYXkgdGhhdCBhIHJ1bmVkIGJyb2Fkc3dvcmQgbmFtZWQgU3Rvcm1icmluZ2VyIGF0dHJhY3RzIHZvcnRpY2VzLg==" }, 1.1440 + { "They say that a scroll of summoning has other names.", 1.1441 + "VGhleSBzYXkgdGhhdCBhIHNjcm9sbCBvZiBzdW1tb25pbmcgaGFzIG90aGVyIG5hbWVzLg==" }, 1.1442 + { "They say that a shaman can bestow blessings but usually doesn't.", 1.1443 + "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiBjYW4gYmVzdG93IGJsZXNzaW5ncyBidXQgdXN1YWxseSBkb2Vzbid0Lg==" }, 1.1444 + { "They say that a shaman will bless you for an eye of newt and wing of bat.", 1.1445 + "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiB3aWxsIGJsZXNzIHlvdSBmb3IgYW4gZXllIG9mIG5ld3QgYW5kIHdpbmcgb2YgYmF0Lg==" }, 1.1446 + { "They say that a shimmering gold shield is not a polished silver shield.", 1.1447 + "VGhleSBzYXkgdGhhdCBhIHNoaW1tZXJpbmcgZ29sZCBzaGllbGQgaXMgbm90IGEgcG9saXNoZWQgc2lsdmVyIHNoaWVsZC4=" }, 1.1448 + { "They say that a spear will hit a neo-otyugh. (Do YOU know what that is?)", 1.1449 + "VGhleSBzYXkgdGhhdCBhIHNwZWFyIHdpbGwgaGl0IGEgbmVvLW90eXVnaC4gKERvIFlPVSBrbm93IHdoYXQgdGhhdCBpcz8p" }, 1.1450 + { "They say that a spotted dragon is the ultimate shape changer.", 1.1451 + "VGhleSBzYXkgdGhhdCBhIHNwb3R0ZWQgZHJhZ29uIGlzIHRoZSB1bHRpbWF0ZSBzaGFwZSBjaGFuZ2VyLg==" }, 1.1452 + { "They say that a stethoscope is no good if you can only hear your heartbeat.", 1.1453 + "VGhleSBzYXkgdGhhdCBhIHN0ZXRob3Njb3BlIGlzIG5vIGdvb2QgaWYgeW91IGNhbiBvbmx5IGhlYXIgeW91ciBoZWFydGJlYXQu" }, 1.1454 + { "They say that a succubus named Suzy will sometimes warn you of danger.", 1.1455 + "VGhleSBzYXkgdGhhdCBhIHN1Y2N1YnVzIG5hbWVkIFN1enkgd2lsbCBzb21ldGltZXMgd2FybiB5b3Ugb2YgZGFuZ2VyLg==" }, 1.1456 + { "They say that a wand of cancellation is not like a wand of polymorph.", 1.1457 + "VGhleSBzYXkgdGhhdCBhIHdhbmQgb2YgY2FuY2VsbGF0aW9uIGlzIG5vdCBsaWtlIGEgd2FuZCBvZiBwb2x5bW9ycGgu" }, 1.1458 + { "They say that a wood golem named Pinocchio would be easy to control.", 1.1459 + "VGhleSBzYXkgdGhhdCBhIHdvb2QgZ29sZW0gbmFtZWQgUGlub2NjaGlvIHdvdWxkIGJlIGVhc3kgdG8gY29udHJvbC4=" }, 1.1460 + { "They say that after killing a dragon it's time for a change of scenery.", 1.1461 + "VGhleSBzYXkgdGhhdCBhZnRlciBraWxsaW5nIGEgZHJhZ29uIGl0J3MgdGltZSBmb3IgYSBjaGFuZ2Ugb2Ygc2NlbmVyeS4=" }, 1.1462 + { "They say that an amulet of strangulation is worse than ring around the collar.", 1.1463 + "VGhleSBzYXkgdGhhdCBhbiBhbXVsZXQgb2Ygc3RyYW5ndWxhdGlvbiBpcyB3b3JzZSB0aGFuIHJpbmcgYXJvdW5kIHRoZSBjb2xsYXIu" }, 1.1464 + { "They say that an attic is the best place to hide your toys.", 1.1465 + "VGhleSBzYXkgdGhhdCBhbiBhdHRpYyBpcyB0aGUgYmVzdCBwbGFjZSB0byBoaWRlIHlvdXIgdG95cy4=" }, 1.1466 + { "They say that an axe named Cleaver once belonged to a hacker named Beaver.", 1.1467 + "VGhleSBzYXkgdGhhdCBhbiBheGUgbmFtZWQgQ2xlYXZlciBvbmNlIGJlbG9uZ2VkIHRvIGEgaGFja2VyIG5hbWVkIEJlYXZlci4=" }, 1.1468 + { "They say that an eye of newt and a wing of bat are double the trouble.", 1.1469 + "VGhleSBzYXkgdGhhdCBhbiBleWUgb2YgbmV3dCBhbmQgYSB3aW5nIG9mIGJhdCBhcmUgZG91YmxlIHRoZSB0cm91YmxlLg==" }, 1.1470 + { "They say that an incubus named Izzy sometimes makes women feel sensitive.", 1.1471 + "VGhleSBzYXkgdGhhdCBhbiBpbmN1YnVzIG5hbWVkIEl6enkgc29tZXRpbWVzIG1ha2VzIHdvbWVuIGZlZWwgc2Vuc2l0aXZlLg==" }, 1.1472 + { "They say that an opulent throne room is rarely a place to wish you'd be in.", 1.1473 + "VGhleSBzYXkgdGhhdCBhbiBvcHVsZW50IHRocm9uZSByb29tIGlzIHJhcmVseSBhIHBsYWNlIHRvIHdpc2ggeW91J2QgYmUgaW4u" }, 1.1474 + { "They say that an unlucky hacker once had a nose bleed at an altar and died.", 1.1475 + "VGhleSBzYXkgdGhhdCBhbiB1bmx1Y2t5IGhhY2tlciBvbmNlIGhhZCBhIG5vc2UgYmxlZWQgYXQgYW4gYWx0YXIgYW5kIGRpZWQu" }, 1.1476 + { "They say that and they say this but they never say never, never!", 1.1477 + "VGhleSBzYXkgdGhhdCBhbmQgdGhleSBzYXkgdGhpcyBidXQgdGhleSBuZXZlciBzYXkgbmV2ZXIsIG5ldmVyIQ==" }, 1.1478 + { "They say that any quantum mechanic knows that speed kills.", 1.1479 + "VGhleSBzYXkgdGhhdCBhbnkgcXVhbnR1bSBtZWNoYW5pYyBrbm93cyB0aGF0IHNwZWVkIGtpbGxzLg==" }, 1.1480 + { "They say that applying a unicorn horn means you've missed the point.", 1.1481 + "VGhleSBzYXkgdGhhdCBhcHBseWluZyBhIHVuaWNvcm4gaG9ybiBtZWFucyB5b3UndmUgbWlzc2VkIHRoZSBwb2ludC4=" }, 1.1482 + { "They say that blue stones are radioactive, beware.", 1.1483 + "VGhleSBzYXkgdGhhdCBibHVlIHN0b25lcyBhcmUgcmFkaW9hY3RpdmUsIGJld2FyZS4=" }, 1.1484 + { "They say that building a dungeon is a team effort.", 1.1485 + "VGhleSBzYXkgdGhhdCBidWlsZGluZyBhIGR1bmdlb24gaXMgYSB0ZWFtIGVmZm9ydC4=" }, 1.1486 + { "They say that chaotic characters never get a kick out of altars.", 1.1487 + "VGhleSBzYXkgdGhhdCBjaGFvdGljIGNoYXJhY3RlcnMgbmV2ZXIgZ2V0IGEga2ljayBvdXQgb2YgYWx0YXJzLg==" }, 1.1488 + { "They say that collapsing a dungeon often creates a panic.", 1.1489 + "VGhleSBzYXkgdGhhdCBjb2xsYXBzaW5nIGEgZHVuZ2VvbiBvZnRlbiBjcmVhdGVzIGEgcGFuaWMu" }, 1.1490 + { "They say that counting your eggs before they hatch shows that you care.", 1.1491 + "VGhleSBzYXkgdGhhdCBjb3VudGluZyB5b3VyIGVnZ3MgYmVmb3JlIHRoZXkgaGF0Y2ggc2hvd3MgdGhhdCB5b3UgY2FyZS4=" }, 1.1492 + { "They say that dipping a bag of tricks in a fountain won't make it an icebox.", 1.1493 + "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGEgYmFnIG9mIHRyaWNrcyBpbiBhIGZvdW50YWluIHdvbid0IG1ha2UgaXQgYW4gaWNlYm94Lg==" }, 1.1494 + { "They say that dipping an eel and brown mold in hot water makes bouillabaisse.", 1.1495 + "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGFuIGVlbCBhbmQgYnJvd24gbW9sZCBpbiBob3Qgd2F0ZXIgbWFrZXMgYm91aWxsYWJhaXNzZS4=" }, 1.1496 + { "They say that donating a doubloon is extremely pious charity.", 1.1497 + "VGhleSBzYXkgdGhhdCBkb25hdGluZyBhIGRvdWJsb29uIGlzIGV4dHJlbWVseSBwaW91cyBjaGFyaXR5Lg==" }, 1.1498 + { "They say that eating royal jelly attracts grizzly owlbears.", 1.1499 + "VGhleSBzYXkgdGhhdCBlYXRpbmcgcm95YWwgamVsbHkgYXR0cmFjdHMgZ3JpenpseSBvd2xiZWFycy4=" }, 1.1500 + { "They say that eggs, pancakes and juice are just a mundane breakfast.", 1.1501 + "VGhleSBzYXkgdGhhdCBlZ2dzLCBwYW5jYWtlcyBhbmQganVpY2UgYXJlIGp1c3QgYSBtdW5kYW5lIGJyZWFrZmFzdC4=" }, 1.1502 + { "They say that everyone knows why Medusa stands alone in the dark.", 1.1503 + "VGhleSBzYXkgdGhhdCBldmVyeW9uZSBrbm93cyB3aHkgTWVkdXNhIHN0YW5kcyBhbG9uZSBpbiB0aGUgZGFyay4=" }, 1.1504 + { "They say that everyone wanted rec.games.hack to undergo a name change.", 1.1505 + "VGhleSBzYXkgdGhhdCBldmVyeW9uZSB3YW50ZWQgcmVjLmdhbWVzLmhhY2sgdG8gdW5kZXJnbyBhIG5hbWUgY2hhbmdlLg==" }, 1.1506 + { "They say that finding a winning strategy is a deliberate move on your part.", 1.1507 + "VGhleSBzYXkgdGhhdCBmaW5kaW5nIGEgd2lubmluZyBzdHJhdGVneSBpcyBhIGRlbGliZXJhdGUgbW92ZSBvbiB5b3VyIHBhcnQu" }, 1.1508 + { "They say that finding worthless glass is worth something.", 1.1509 + "VGhleSBzYXkgdGhhdCBmaW5kaW5nIHdvcnRobGVzcyBnbGFzcyBpcyB3b3J0aCBzb21ldGhpbmcu" }, 1.1510 + { "They say that fortune cookies are food for thought.", 1.1511 + "VGhleSBzYXkgdGhhdCBmb3J0dW5lIGNvb2tpZXMgYXJlIGZvb2QgZm9yIHRob3VnaHQu" }, 1.1512 + { "They say that gold is only wasted on a pet dragon.", 1.1513 + "VGhleSBzYXkgdGhhdCBnb2xkIGlzIG9ubHkgd2FzdGVkIG9uIGEgcGV0IGRyYWdvbi4=" }, 1.1514 + { "They say that good things come to those that wait.", 1.1515 + "VGhleSBzYXkgdGhhdCBnb29kIHRoaW5ncyBjb21lIHRvIHRob3NlIHRoYXQgd2FpdC4=" }, 1.1516 + { "They say that greased objects will slip out of monsters' hands.", 1.1517 + "VGhleSBzYXkgdGhhdCBncmVhc2VkIG9iamVjdHMgd2lsbCBzbGlwIG91dCBvZiBtb25zdGVycycgaGFuZHMu" }, 1.1518 + { "They say that if you can't spell then you'll wish you had a spell book.", 1.1519 + "VGhleSBzYXkgdGhhdCBpZiB5b3UgY2FuJ3Qgc3BlbGwgdGhlbiB5b3UnbGwgd2lzaCB5b3UgaGFkIGEgc3BlbGwgYm9vay4=" }, 1.1520 + { "They say that if you live by the sword, you'll die by the sword.", 1.1521 + "VGhleSBzYXkgdGhhdCBpZiB5b3UgbGl2ZSBieSB0aGUgc3dvcmQsIHlvdSdsbCBkaWUgYnkgdGhlIHN3b3JkLg==" }, 1.1522 + { "They say that if you play like a monster you'll have a better game.", 1.1523 + "VGhleSBzYXkgdGhhdCBpZiB5b3UgcGxheSBsaWtlIGEgbW9uc3RlciB5b3UnbGwgaGF2ZSBhIGJldHRlciBnYW1lLg==" }, 1.1524 + { "They say that if you sleep with a demon you might awake with a headache.", 1.1525 + "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc2xlZXAgd2l0aCBhIGRlbW9uIHlvdSBtaWdodCBhd2FrZSB3aXRoIGEgaGVhZGFjaGUu" }, 1.1526 + { "They say that if you step on a crack you could break your mother's back.", 1.1527 + "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc3RlcCBvbiBhIGNyYWNrIHlvdSBjb3VsZCBicmVhayB5b3VyIG1vdGhlcidzIGJhY2su" }, 1.1528 + { "They say that if you're invisible you can still be heard!", 1.1529 + "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgaW52aXNpYmxlIHlvdSBjYW4gc3RpbGwgYmUgaGVhcmQh" }, 1.1530 + { "They say that if you're lucky you can feel the runes on a scroll.", 1.1531 + "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgbHVja3kgeW91IGNhbiBmZWVsIHRoZSBydW5lcyBvbiBhIHNjcm9sbC4=" }, 1.1532 + { "They say that in the big picture gold is only small change.", 1.1533 + "VGhleSBzYXkgdGhhdCBpbiB0aGUgYmlnIHBpY3R1cmUgZ29sZCBpcyBvbmx5IHNtYWxsIGNoYW5nZS4=" }, 1.1534 + { "They say that in the dungeon it's not what you know that really matters.", 1.1535 + "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBpdCdzIG5vdCB3aGF0IHlvdSBrbm93IHRoYXQgcmVhbGx5IG1hdHRlcnMu" }, 1.1536 + { "They say that in the dungeon moon rocks are really dilithium crystals.", 1.1537 + "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBtb29uIHJvY2tzIGFyZSByZWFsbHkgZGlsaXRoaXVtIGNyeXN0YWxzLg==" }, 1.1538 + { "They say that in the dungeon the boorish customer is never right.", 1.1539 + "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB0aGUgYm9vcmlzaCBjdXN0b21lciBpcyBuZXZlciByaWdodC4=" }, 1.1540 + { "They say that in the dungeon you don't need a watch to tell time.", 1.1541 + "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgZG9uJ3QgbmVlZCBhIHdhdGNoIHRvIHRlbGwgdGltZS4=" }, 1.1542 + { "They say that in the dungeon you need something old, new, burrowed and blue.", 1.1543 + "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgbmVlZCBzb21ldGhpbmcgb2xkLCBuZXcsIGJ1cnJvd2VkIGFuZCBibHVlLg==" }, 1.1544 + { "They say that in the dungeon you should always count your blessings.", 1.1545 + "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3Ugc2hvdWxkIGFsd2F5cyBjb3VudCB5b3VyIGJsZXNzaW5ncy4=" }, 1.1546 + { "They say that iron golem plate mail isn't worth wishing for.", 1.1547 + "VGhleSBzYXkgdGhhdCBpcm9uIGdvbGVtIHBsYXRlIG1haWwgaXNuJ3Qgd29ydGggd2lzaGluZyBmb3Iu" }, 1.1548 + { "They say that it takes four quarterstaffs to make one staff.", 1.1549 + "VGhleSBzYXkgdGhhdCBpdCB0YWtlcyBmb3VyIHF1YXJ0ZXJzdGFmZnMgdG8gbWFrZSBvbmUgc3RhZmYu" }, 1.1550 + { "They say that it's not over till the fat ladies sing.", 1.1551 + "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWRpZXMgc2luZy4=" }, 1.1552 + { "They say that it's not over till the fat lady shouts `Off with its head'.", 1.1553 + "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWR5IHNob3V0cyBgT2ZmIHdpdGggaXRzIGhlYWQnLg==" }, 1.1554 + { "They say that kicking a heavy statue is really a dumb move.", 1.1555 + "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgaGVhdnkgc3RhdHVlIGlzIHJlYWxseSBhIGR1bWIgbW92ZS4=" }, 1.1556 + { "They say that kicking a valuable gem doesn't seem to make sense.", 1.1557 + "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgdmFsdWFibGUgZ2VtIGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHNlbnNlLg==" }, 1.1558 + { "They say that leprechauns know Latin and you should too.", 1.1559 + "VGhleSBzYXkgdGhhdCBsZXByZWNoYXVucyBrbm93IExhdGluIGFuZCB5b3Ugc2hvdWxkIHRvby4=" }, 1.1560 + { "They say that minotaurs get lost outside of the mazes.", 1.1561 + "VGhleSBzYXkgdGhhdCBtaW5vdGF1cnMgZ2V0IGxvc3Qgb3V0c2lkZSBvZiB0aGUgbWF6ZXMu" }, 1.1562 + { "They say that most trolls are born again.", 1.1563 + "VGhleSBzYXkgdGhhdCBtb3N0IHRyb2xscyBhcmUgYm9ybiBhZ2Fpbi4=" }, 1.1564 + { "They say that naming your cat Garfield will make you more attractive.", 1.1565 + "VGhleSBzYXkgdGhhdCBuYW1pbmcgeW91ciBjYXQgR2FyZmllbGQgd2lsbCBtYWtlIHlvdSBtb3JlIGF0dHJhY3RpdmUu" }, 1.1566 + { "They say that no one knows everything about everything in the dungeon.", 1.1567 + "VGhleSBzYXkgdGhhdCBubyBvbmUga25vd3MgZXZlcnl0aGluZyBhYm91dCBldmVyeXRoaW5nIGluIHRoZSBkdW5nZW9uLg==" }, 1.1568 + { "They say that no one plays NetHack just for the fun of it.", 1.1569 + "VGhleSBzYXkgdGhhdCBubyBvbmUgcGxheXMgTmV0SGFjayBqdXN0IGZvciB0aGUgZnVuIG9mIGl0Lg==" }, 1.1570 + { "They say that no one really subscribes to rec.games.roguelike.nethack.", 1.1571 + "VGhleSBzYXkgdGhhdCBubyBvbmUgcmVhbGx5IHN1YnNjcmliZXMgdG8gcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrLg==" }, 1.1572 + { "They say that no one will admit to starting a rumor.", 1.1573 + "VGhleSBzYXkgdGhhdCBubyBvbmUgd2lsbCBhZG1pdCB0byBzdGFydGluZyBhIHJ1bW9yLg==" }, 1.1574 + { "They say that nurses sometimes carry scalpels and never use them.", 1.1575 + "VGhleSBzYXkgdGhhdCBudXJzZXMgc29tZXRpbWVzIGNhcnJ5IHNjYWxwZWxzIGFuZCBuZXZlciB1c2UgdGhlbS4=" }, 1.1576 + { "They say that once you've met one wizard you've met them all.", 1.1577 + "VGhleSBzYXkgdGhhdCBvbmNlIHlvdSd2ZSBtZXQgb25lIHdpemFyZCB5b3UndmUgbWV0IHRoZW0gYWxsLg==" }, 1.1578 + { "They say that one troll is worth 10,000 newts.", 1.1579 + "VGhleSBzYXkgdGhhdCBvbmUgdHJvbGwgaXMgd29ydGggMTAsMDAwIG5ld3RzLg==" }, 1.1580 + { "They say that only David can find the zoo!", 1.1581 + "VGhleSBzYXkgdGhhdCBvbmx5IERhdmlkIGNhbiBmaW5kIHRoZSB6b28h" }, 1.1582 + { "They say that only angels play their harps for their pets.", 1.1583 + "VGhleSBzYXkgdGhhdCBvbmx5IGFuZ2VscyBwbGF5IHRoZWlyIGhhcnBzIGZvciB0aGVpciBwZXRzLg==" }, 1.1584 + { "They say that only big spenders carry gold.", 1.1585 + "VGhleSBzYXkgdGhhdCBvbmx5IGJpZyBzcGVuZGVycyBjYXJyeSBnb2xkLg==" }, 1.1586 + { "They say that orc shamans are healthy, wealthy and wise.", 1.1587 + "VGhleSBzYXkgdGhhdCBvcmMgc2hhbWFucyBhcmUgaGVhbHRoeSwgd2VhbHRoeSBhbmQgd2lzZS4=" }, 1.1588 + { "They say that playing NetHack is like walking into a death trap.", 1.1589 + "VGhleSBzYXkgdGhhdCBwbGF5aW5nIE5ldEhhY2sgaXMgbGlrZSB3YWxraW5nIGludG8gYSBkZWF0aCB0cmFwLg==" }, 1.1590 + { "They say that problem breathing is best treated by a proper diet.", 1.1591 + "VGhleSBzYXkgdGhhdCBwcm9ibGVtIGJyZWF0aGluZyBpcyBiZXN0IHRyZWF0ZWQgYnkgYSBwcm9wZXIgZGlldC4=" }, 1.1592 + { "They say that quaffing many potions of levitation can give you a headache.", 1.1593 + "VGhleSBzYXkgdGhhdCBxdWFmZmluZyBtYW55IHBvdGlvbnMgb2YgbGV2aXRhdGlvbiBjYW4gZ2l2ZSB5b3UgYSBoZWFkYWNoZS4=" }, 1.1594 + { "They say that queen bees get that way by eating royal jelly.", 1.1595 + "VGhleSBzYXkgdGhhdCBxdWVlbiBiZWVzIGdldCB0aGF0IHdheSBieSBlYXRpbmcgcm95YWwgamVsbHku" }, 1.1596 + { "They say that reading a scare monster scroll is the same as saying Elbereth.", 1.1597 + "VGhleSBzYXkgdGhhdCByZWFkaW5nIGEgc2NhcmUgbW9uc3RlciBzY3JvbGwgaXMgdGhlIHNhbWUgYXMgc2F5aW5nIEVsYmVyZXRoLg==" }, 1.1598 + { "They say that real hackers always are controlled.", 1.1599 + "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgYWx3YXlzIGFyZSBjb250cm9sbGVkLg==" }, 1.1600 + { "They say that real hackers never sleep.", 1.1601 + "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgbmV2ZXIgc2xlZXAu" }, 1.1602 + { "They say that shopkeepers are insured by Croesus himself!", 1.1603 + "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBhcmUgaW5zdXJlZCBieSBDcm9lc3VzIGhpbXNlbGYh" }, 1.1604 + { "They say that shopkeepers never carry more than 20 gold pieces, at night.", 1.1605 + "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBjYXJyeSBtb3JlIHRoYW4gMjAgZ29sZCBwaWVjZXMsIGF0IG5pZ2h0Lg==" }, 1.1606 + { "They say that shopkeepers never sell blessed potions of invisibility.", 1.1607 + "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBzZWxsIGJsZXNzZWQgcG90aW9ucyBvZiBpbnZpc2liaWxpdHku" }, 1.1608 + { "They say that soldiers wear kid gloves and silly helmets.", 1.1609 + "VGhleSBzYXkgdGhhdCBzb2xkaWVycyB3ZWFyIGtpZCBnbG92ZXMgYW5kIHNpbGx5IGhlbG1ldHMu" }, 1.1610 + { "They say that some Kops are on the take.", 1.1611 + "VGhleSBzYXkgdGhhdCBzb21lIEtvcHMgYXJlIG9uIHRoZSB0YWtlLg==" }, 1.1612 + { "They say that some guards' palms can be greased.", 1.1613 + "VGhleSBzYXkgdGhhdCBzb21lIGd1YXJkcycgcGFsbXMgY2FuIGJlIGdyZWFzZWQu" }, 1.1614 + { "They say that some monsters may kiss your boots to stop your drum playing.", 1.1615 + "VGhleSBzYXkgdGhhdCBzb21lIG1vbnN0ZXJzIG1heSBraXNzIHlvdXIgYm9vdHMgdG8gc3RvcCB5b3VyIGRydW0gcGxheWluZy4=" }, 1.1616 + { "They say that sometimes you can be the hit of the party when playing a horn.", 1.1617 + "VGhleSBzYXkgdGhhdCBzb21ldGltZXMgeW91IGNhbiBiZSB0aGUgaGl0IG9mIHRoZSBwYXJ0eSB3aGVuIHBsYXlpbmcgYSBob3JuLg==" }, 1.1618 + { "They say that the NetHack gods generally welcome your sacrifices.", 1.1619 + "VGhleSBzYXkgdGhhdCB0aGUgTmV0SGFjayBnb2RzIGdlbmVyYWxseSB3ZWxjb21lIHlvdXIgc2FjcmlmaWNlcy4=" }, 1.1620 + { "They say that the Three Rings are named Vilya, Nenya and Narya.", 1.1621 + "VGhleSBzYXkgdGhhdCB0aGUgVGhyZWUgUmluZ3MgYXJlIG5hbWVkIFZpbHlhLCBOZW55YSBhbmQgTmFyeWEu" }, 1.1622 + { "They say that the Wizard of Yendor has a death wish.", 1.1623 + "VGhleSBzYXkgdGhhdCB0aGUgV2l6YXJkIG9mIFllbmRvciBoYXMgYSBkZWF0aCB3aXNoLg==" }, 1.1624 + { "They say that the `hair of the dog' is sometimes an effective remedy.", 1.1625 + "VGhleSBzYXkgdGhhdCB0aGUgYGhhaXIgb2YgdGhlIGRvZycgaXMgc29tZXRpbWVzIGFuIGVmZmVjdGl2ZSByZW1lZHku" }, 1.1626 + { "They say that the best time to save your game is now before its too late.", 1.1627 + "VGhleSBzYXkgdGhhdCB0aGUgYmVzdCB0aW1lIHRvIHNhdmUgeW91ciBnYW1lIGlzIG5vdyBiZWZvcmUgaXRzIHRvbyBsYXRlLg==" }, 1.1628 + { "They say that the biggest obstacle in NetHack is your mind.", 1.1629 + "VGhleSBzYXkgdGhhdCB0aGUgYmlnZ2VzdCBvYnN0YWNsZSBpbiBOZXRIYWNrIGlzIHlvdXIgbWluZC4=" }, 1.1630 + { "They say that the gods are angry when they hit you with objects.", 1.1631 + "VGhleSBzYXkgdGhhdCB0aGUgZ29kcyBhcmUgYW5ncnkgd2hlbiB0aGV5IGhpdCB5b3Ugd2l0aCBvYmplY3RzLg==" }, 1.1632 + { "They say that the priesthood are specially favored by the gods.", 1.1633 + "VGhleSBzYXkgdGhhdCB0aGUgcHJpZXN0aG9vZCBhcmUgc3BlY2lhbGx5IGZhdm9yZWQgYnkgdGhlIGdvZHMu" }, 1.1634 + { "They say that the way to make a unicorn happy is to give it what it wants.", 1.1635 + "VGhleSBzYXkgdGhhdCB0aGUgd2F5IHRvIG1ha2UgYSB1bmljb3JuIGhhcHB5IGlzIHRvIGdpdmUgaXQgd2hhdCBpdCB3YW50cy4=" }, 1.1636 + { "They say that there are no black or white stones, only gray.", 1.1637 + "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gYmxhY2sgb3Igd2hpdGUgc3RvbmVzLCBvbmx5IGdyYXku" }, 1.1638 + { "They say that there are no skeletons hence there are no skeleton keys.", 1.1639 + "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gc2tlbGV0b25zIGhlbmNlIHRoZXJlIGFyZSBubyBza2VsZXRvbiBrZXlzLg==" }, 1.1640 + { "They say that there is a clever rogue in every hacker just dying to escape.", 1.1641 + "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBhIGNsZXZlciByb2d1ZSBpbiBldmVyeSBoYWNrZXIganVzdCBkeWluZyB0byBlc2NhcGUu" }, 1.1642 + { "They say that there is no such thing as free advice.", 1.1643 + "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGZyZWUgYWR2aWNlLg==" }, 1.1644 + { "They say that there is only one way to win at NetHack.", 1.1645 + "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB3YXkgdG8gd2luIGF0IE5ldEhhY2su" }, 1.1646 + { "They say that there once was a fearsome chaotic samurai named Luk No.", 1.1647 + "VGhleSBzYXkgdGhhdCB0aGVyZSBvbmNlIHdhcyBhIGZlYXJzb21lIGNoYW90aWMgc2FtdXJhaSBuYW1lZCBMdWsgTm8u" }, 1.1648 + { "They say that there was a time when cursed holy water wasn't water.", 1.1649 + "VGhleSBzYXkgdGhhdCB0aGVyZSB3YXMgYSB0aW1lIHdoZW4gY3Vyc2VkIGhvbHkgd2F0ZXIgd2Fzbid0IHdhdGVyLg==" }, 1.1650 + { "They say that there's no point in crying over a gray ooze.", 1.1651 + "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG5vIHBvaW50IGluIGNyeWluZyBvdmVyIGEgZ3JheSBvb3plLg==" }, 1.1652 + { "They say that there's only hope left after you've opened Pandora's box.", 1.1653 + "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG9ubHkgaG9wZSBsZWZ0IGFmdGVyIHlvdSd2ZSBvcGVuZWQgUGFuZG9yYSdzIGJveC4=" }, 1.1654 + { "They say that trapdoors should always be marked `Caution: Trap Door'.", 1.1655 + "VGhleSBzYXkgdGhhdCB0cmFwZG9vcnMgc2hvdWxkIGFsd2F5cyBiZSBtYXJrZWQgYENhdXRpb246IFRyYXAgRG9vcicu" }, 1.1656 + { "They say that using an amulet of change isn't a difficult operation.", 1.1657 + "VGhleSBzYXkgdGhhdCB1c2luZyBhbiBhbXVsZXQgb2YgY2hhbmdlIGlzbid0IGEgZGlmZmljdWx0IG9wZXJhdGlvbi4=" }, 1.1658 + { "They say that water walking boots are better if you are fast like Hermes.", 1.1659 + "VGhleSBzYXkgdGhhdCB3YXRlciB3YWxraW5nIGJvb3RzIGFyZSBiZXR0ZXIgaWYgeW91IGFyZSBmYXN0IGxpa2UgSGVybWVzLg==" }, 1.1660 + { "They say that when you wear a circular amulet you might resemble a troll.", 1.1661 + "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSB3ZWFyIGEgY2lyY3VsYXIgYW11bGV0IHlvdSBtaWdodCByZXNlbWJsZSBhIHRyb2xsLg==" }, 1.1662 + { "They say that when you're hungry you can get a pizza in 30 moves or it's free.", 1.1663 + "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSdyZSBodW5ncnkgeW91IGNhbiBnZXQgYSBwaXp6YSBpbiAzMCBtb3ZlcyBvciBpdCdzIGZyZWUu" }, 1.1664 + { "They say that when your god is angry you should try another one.", 1.1665 + "VGhleSBzYXkgdGhhdCB3aGVuIHlvdXIgZ29kIGlzIGFuZ3J5IHlvdSBzaG91bGQgdHJ5IGFub3RoZXIgb25lLg==" }, 1.1666 + { "They say that wielding a unicorn horn takes strength.", 1.1667 + "VGhleSBzYXkgdGhhdCB3aWVsZGluZyBhIHVuaWNvcm4gaG9ybiB0YWtlcyBzdHJlbmd0aC4=" }, 1.1668 + { "They say that with speed boots you never worry about hit and run accidents.", 1.1669 + "VGhleSBzYXkgdGhhdCB3aXRoIHNwZWVkIGJvb3RzIHlvdSBuZXZlciB3b3JyeSBhYm91dCBoaXQgYW5kIHJ1biBhY2NpZGVudHMu" }, 1.1670 + { "They say that you can defeat a killer bee with a unicorn horn.", 1.1671 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuIGRlZmVhdCBhIGtpbGxlciBiZWUgd2l0aCBhIHVuaWNvcm4gaG9ybi4=" }, 1.1672 + { "They say that you can only cross the River Styx in Charon's boat.", 1.1673 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgY3Jvc3MgdGhlIFJpdmVyIFN0eXggaW4gQ2hhcm9uJ3MgYm9hdC4=" }, 1.1674 + { "They say that you can only kill a lich once and then you'd better be careful.", 1.1675 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkga2lsbCBhIGxpY2ggb25jZSBhbmQgdGhlbiB5b3UnZCBiZXR0ZXIgYmUgY2FyZWZ1bC4=" }, 1.1676 + { "They say that you can only wish for things you've already had.", 1.1677 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgd2lzaCBmb3IgdGhpbmdzIHlvdSd2ZSBhbHJlYWR5IGhhZC4=" }, 1.1678 + { "They say that you can train a cat by talking gently to it.", 1.1679 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgY2F0IGJ5IHRhbGtpbmcgZ2VudGx5IHRvIGl0Lg==" }, 1.1680 + { "They say that you can train a dog by talking firmly to it.", 1.1681 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgZG9nIGJ5IHRhbGtpbmcgZmlybWx5IHRvIGl0Lg==" }, 1.1682 + { "They say that you can trust your gold with the king.", 1.1683 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRydXN0IHlvdXIgZ29sZCB3aXRoIHRoZSBraW5nLg==" }, 1.1684 + { "They say that you can't wipe your greasy bare hands on a blank scroll.", 1.1685 + "VGhleSBzYXkgdGhhdCB5b3UgY2FuJ3Qgd2lwZSB5b3VyIGdyZWFzeSBiYXJlIGhhbmRzIG9uIGEgYmxhbmsgc2Nyb2xsLg==" }, 1.1686 + { "They say that you cannot trust scrolls of rumor.", 1.1687 + "VGhleSBzYXkgdGhhdCB5b3UgY2Fubm90IHRydXN0IHNjcm9sbHMgb2YgcnVtb3Iu" }, 1.1688 + { "They say that you could fall head over heels for an energy vortex.", 1.1689 + "VGhleSBzYXkgdGhhdCB5b3UgY291bGQgZmFsbCBoZWFkIG92ZXIgaGVlbHMgZm9yIGFuIGVuZXJneSB2b3J0ZXgu" }, 1.1690 + { "They say that you need a key in order to open locked doors.", 1.1691 + "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIGtleSBpbiBvcmRlciB0byBvcGVuIGxvY2tlZCBkb29ycy4=" }, 1.1692 + { "They say that you need a mirror to notice a mimic in an antique shop.", 1.1693 + "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIG1pcnJvciB0byBub3RpY2UgYSBtaW1pYyBpbiBhbiBhbnRpcXVlIHNob3Au" }, 1.1694 + { "They say that you really can use a pick-axe unless you really can't.", 1.1695 + "VGhleSBzYXkgdGhhdCB5b3UgcmVhbGx5IGNhbiB1c2UgYSBwaWNrLWF4ZSB1bmxlc3MgeW91IHJlYWxseSBjYW4ndC4=" }, 1.1696 + { "They say that you should always store your tools in the cellar.", 1.1697 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGFsd2F5cyBzdG9yZSB5b3VyIHRvb2xzIGluIHRoZSBjZWxsYXIu" }, 1.1698 + { "They say that you should be careful while climbing the ladder to success.", 1.1699 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGJlIGNhcmVmdWwgd2hpbGUgY2xpbWJpbmcgdGhlIGxhZGRlciB0byBzdWNjZXNzLg==" }, 1.1700 + { "They say that you should call your armor `rustproof'.", 1.1701 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGNhbGwgeW91ciBhcm1vciBgcnVzdHByb29mJy4=" }, 1.1702 + { "They say that you should name your dog Spuds to have a cool pet.", 1.1703 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciBkb2cgU3B1ZHMgdG8gaGF2ZSBhIGNvb2wgcGV0Lg==" }, 1.1704 + { "They say that you should name your weapon after your first monster kill.", 1.1705 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciB3ZWFwb24gYWZ0ZXIgeW91ciBmaXJzdCBtb25zdGVyIGtpbGwu" }, 1.1706 + { "They say that you should never introduce a rope golem to a succubus.", 1.1707 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIGludHJvZHVjZSBhIHJvcGUgZ29sZW0gdG8gYSBzdWNjdWJ1cy4=" }, 1.1708 + { "They say that you should never sleep near invisible ring wraiths.", 1.1709 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHNsZWVwIG5lYXIgaW52aXNpYmxlIHJpbmcgd3JhaXRocy4=" }, 1.1710 + { "They say that you should never try to leave the dungeon with a bag of gems.", 1.1711 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHRyeSB0byBsZWF2ZSB0aGUgZHVuZ2VvbiB3aXRoIGEgYmFnIG9mIGdlbXMu" }, 1.1712 + { "They say that you should remove your armor before sitting on a throne.", 1.1713 + "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIHJlbW92ZSB5b3VyIGFybW9yIGJlZm9yZSBzaXR0aW5nIG9uIGEgdGhyb25lLg==" }, 1.1714 + { "This fortune cookie is copy protected.", 1.1715 + "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyBjb3B5IHByb3RlY3RlZC4=" }, 1.1716 + { "This fortune cookie is the property of Fortune Cookies, Inc.", 1.1717 + "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyB0aGUgcHJvcGVydHkgb2YgRm9ydHVuZSBDb29raWVzLCBJbmMu" }, 1.1718 + { "Tired? Try a scroll of charging on yourself.", 1.1719 + "VGlyZWQ/IFRyeSBhIHNjcm9sbCBvZiBjaGFyZ2luZyBvbiB5b3Vyc2VsZi4=" }, 1.1720 + { "To achieve the next higher rating, you need 3 more points.", 1.1721 + "VG8gYWNoaWV2ZSB0aGUgbmV4dCBoaWdoZXIgcmF0aW5nLCB5b3UgbmVlZCAzIG1vcmUgcG9pbnRzLg==" }, 1.1722 + { "To reach heaven, escape the dungeon while wearing a ring of levitation.", 1.1723 + "VG8gcmVhY2ggaGVhdmVuLCBlc2NhcGUgdGhlIGR1bmdlb24gd2hpbGUgd2VhcmluZyBhIHJpbmcgb2YgbGV2aXRhdGlvbi4=" }, 1.1724 + { "Tourists wear shirts loud enough to wake the dead.", 1.1725 + "VG91cmlzdHMgd2VhciBzaGlydHMgbG91ZCBlbm91Z2ggdG8gd2FrZSB0aGUgZGVhZC4=" }, 1.1726 + { "Try calling your katana Moulinette.", 1.1727 + "VHJ5IGNhbGxpbmcgeW91ciBrYXRhbmEgTW91bGluZXR0ZS4=" }, 1.1728 + { "Ulch! That meat was painted!", 1.1729 + "VWxjaCEgVGhhdCBtZWF0IHdhcyBwYWludGVkIQ==" }, 1.1730 + { "Unfortunately, this message was left intentionally blank.", 1.1731 + "VW5mb3J0dW5hdGVseSwgdGhpcyBtZXNzYWdlIHdhcyBsZWZ0IGludGVudGlvbmFsbHkgYmxhbmsu" }, 1.1732 + { "Using a morning star in the evening has no effect.", 1.1733 + "VXNpbmcgYSBtb3JuaW5nIHN0YXIgaW4gdGhlIGV2ZW5pbmcgaGFzIG5vIGVmZmVjdC4=" }, 1.1734 + { "Want a hint? Zap a wand of make invisible on your weapon!", 1.1735 + "V2FudCBhIGhpbnQ/IFphcCBhIHdhbmQgb2YgbWFrZSBpbnZpc2libGUgb24geW91ciB3ZWFwb24h" }, 1.1736 + { "Want to ascend in a hurry? Apply at Gizmonic Institute.", 1.1737 + "V2FudCB0byBhc2NlbmQgaW4gYSBodXJyeT8gQXBwbHkgYXQgR2l6bW9uaWMgSW5zdGl0dXRlLg==" }, 1.1738 + { "Wanted: shopkeepers. Send a scroll of mail to Mage of Yendor/Level 35/Dungeon.", 1.1739 + "V2FudGVkOiBzaG9wa2VlcGVycy4gU2VuZCBhIHNjcm9sbCBvZiBtYWlsIHRvIE1hZ2Ugb2YgWWVuZG9yL0xldmVsIDM1L0R1bmdlb24u" }, 1.1740 + { "Warning: fortune reading can be hazardous to your health.", 1.1741 + "V2FybmluZzogZm9ydHVuZSByZWFkaW5nIGNhbiBiZSBoYXphcmRvdXMgdG8geW91ciBoZWFsdGgu" }, 1.1742 + { "We have new ways of detecting treachery...", 1.1743 + "V2UgaGF2ZSBuZXcgd2F5cyBvZiBkZXRlY3RpbmcgdHJlYWNoZXJ5Li4u" }, 1.1744 + { "Wet towels make great weapons!", 1.1745 + "V2V0IHRvd2VscyBtYWtlIGdyZWF0IHdlYXBvbnMh" }, 1.1746 + { "What a pity, you cannot read it!", 1.1747 + "V2hhdCBhIHBpdHksIHlvdSBjYW5ub3QgcmVhZCBpdCE=" }, 1.1748 + { "When a piercer drops in on you, you will be tempted to hit the ceiling!", 1.1749 + "V2hlbiBhIHBpZXJjZXIgZHJvcHMgaW4gb24geW91LCB5b3Ugd2lsbCBiZSB0ZW1wdGVkIHRvIGhpdCB0aGUgY2VpbGluZyE=" }, 1.1750 + { "When in a maze follow the right wall and you will never get lost.", 1.1751 + "V2hlbiBpbiBhIG1hemUgZm9sbG93IHRoZSByaWdodCB3YWxsIGFuZCB5b3Ugd2lsbCBuZXZlciBnZXQgbG9zdC4=" }, 1.1752 + { "When you have a key, you don't have to wait for the guard.", 1.1753 + "V2hlbiB5b3UgaGF2ZSBhIGtleSwgeW91IGRvbid0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIGd1YXJkLg==" }, 1.1754 + { "Why are you wasting time reading fortunes?", 1.1755 + "V2h5IGFyZSB5b3Ugd2FzdGluZyB0aW1lIHJlYWRpbmcgZm9ydHVuZXM/" }, 1.1756 + { "Wish for a master key and open the Magic Memory Vault!", 1.1757 + "V2lzaCBmb3IgYSBtYXN0ZXIga2V5IGFuZCBvcGVuIHRoZSBNYWdpYyBNZW1vcnkgVmF1bHQh" }, 1.1758 + { "Wizard expects every monster to do its duty.", 1.1759 + "V2l6YXJkIGV4cGVjdHMgZXZlcnkgbW9uc3RlciB0byBkbyBpdHMgZHV0eS4=" }, 1.1760 + { "Wow! You could've had a potion of fruit juice!", 1.1761 + "V293ISBZb3UgY291bGQndmUgaGFkIGEgcG90aW9uIG9mIGZydWl0IGp1aWNlIQ==" }, 1.1762 + { "Yet Another Silly Message (YASM).", 1.1763 + "WWV0IEFub3RoZXIgU2lsbHkgTWVzc2FnZSAoWUFTTSku" }, 1.1764 + { "You are destined to be misled by a fortune.", 1.1765 + "WW91IGFyZSBkZXN0aW5lZCB0byBiZSBtaXNsZWQgYnkgYSBmb3J0dW5lLg==" }, 1.1766 + { "You can get a genuine Amulet of Yendor by doing the following: --More--", 1.1767 + "WW91IGNhbiBnZXQgYSBnZW51aW5lIEFtdWxldCBvZiBZZW5kb3IgYnkgZG9pbmcgdGhlIGZvbGxvd2luZzogLS1Nb3JlLS0=" }, 1.1768 + { "You can protect yourself from black dragons by doing the following: --More--", 1.1769 + "WW91IGNhbiBwcm90ZWN0IHlvdXJzZWxmIGZyb20gYmxhY2sgZHJhZ29ucyBieSBkb2luZyB0aGUgZm9sbG93aW5nOiAtLU1vcmUtLQ==" }, 1.1770 + { "You can't get by the snake.", 1.1771 + "WW91IGNhbid0IGdldCBieSB0aGUgc25ha2Uu" }, 1.1772 + { "You feel like someone is pulling your leg.", 1.1773 + "WW91IGZlZWwgbGlrZSBzb21lb25lIGlzIHB1bGxpbmcgeW91ciBsZWcu" }, 1.1774 + { "You have to outwit the Sphynx or pay her.", 1.1775 + "WW91IGhhdmUgdG8gb3V0d2l0IHRoZSBTcGh5bnggb3IgcGF5IGhlci4=" }, 1.1776 + { "You hear the fortune cookie's hissing!", 1.1777 + "WW91IGhlYXIgdGhlIGZvcnR1bmUgY29va2llJ3MgaGlzc2luZyE=" }, 1.1778 + { "You may get rich selling letters, but beware of being blackmailed!", 1.1779 + "WW91IG1heSBnZXQgcmljaCBzZWxsaW5nIGxldHRlcnMsIGJ1dCBiZXdhcmUgb2YgYmVpbmcgYmxhY2ttYWlsZWQh" }, 1.1780 + { "You offend Shai-Hulud by sheathing your crysknife without having drawn blood.", 1.1781 + "WW91IG9mZmVuZCBTaGFpLUh1bHVkIGJ5IHNoZWF0aGluZyB5b3VyIGNyeXNrbmlmZSB3aXRob3V0IGhhdmluZyBkcmF3biBibG9vZC4=" }, 1.1782 + { "You swallowed the fortune!", 1.1783 + "WW91IHN3YWxsb3dlZCB0aGUgZm9ydHVuZSE=" }, 1.1784 + { "You want to regain strength? Two levels ahead is a guesthouse!", 1.1785 + "WW91IHdhbnQgdG8gcmVnYWluIHN0cmVuZ3RoPyBUd28gbGV2ZWxzIGFoZWFkIGlzIGEgZ3Vlc3Rob3VzZSE=" }, 1.1786 + { "You will encounter a tall, dark, and gruesome creature...", 1.1787 + "WW91IHdpbGwgZW5jb3VudGVyIGEgdGFsbCwgZGFyaywgYW5kIGdydWVzb21lIGNyZWF0dXJlLi4u" }, 1.1788 + 1.1789 + { "The End", "VGhlIEVuZA==" } 1.1790 + }; 1.1791 + 1.1792 +/* PL_Base64Encode, random strings */ 1.1793 +PRBool test_004(void) 1.1794 +{ 1.1795 + int i; 1.1796 + char result[ 4096 ]; 1.1797 + 1.1798 + printf("Test 004 (PL_Base64Encode, random strings) ..."); fflush(stdout); 1.1799 + 1.1800 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.1801 + { 1.1802 + PRUint32 plen = PL_strlen(array[i].plaintext); 1.1803 + PRUint32 clen = ((plen + 2)/3)*4; 1.1804 + 1.1805 + char *rv = PL_Base64Encode(array[i].plaintext, plen, result); 1.1806 + 1.1807 + if( rv != result ) 1.1808 + { 1.1809 + printf("FAIL\n\t(%d): return value\n", i); 1.1810 + return PR_FALSE; 1.1811 + } 1.1812 + 1.1813 + if( 0 != PL_strncmp(result, array[i].cyphertext, clen) ) 1.1814 + { 1.1815 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", 1.1816 + i, array[i].plaintext, array[i].cyphertext, clen, result); 1.1817 + return PR_FALSE; 1.1818 + } 1.1819 + } 1.1820 + 1.1821 + printf("PASS\n"); 1.1822 + return PR_TRUE; 1.1823 +} 1.1824 + 1.1825 +/* PL_Base64Encode, single characters, malloc */ 1.1826 +PRBool test_005(void) 1.1827 +{ 1.1828 + PRUint32 a, b; 1.1829 + unsigned char plain[ 4 ]; 1.1830 + unsigned char cypher[ 5 ]; 1.1831 + char *rv; 1.1832 + 1.1833 + printf("Test 005 (PL_Base64Encode, single characters, malloc) ..."); fflush(stdout); 1.1834 + 1.1835 + plain[1] = plain[2] = plain[3] = (unsigned char)0; 1.1836 + cypher[2] = cypher[3] = (unsigned char)'='; 1.1837 + cypher[4] = (unsigned char)0; 1.1838 + 1.1839 + for( a = 0; a < 64; a++ ) 1.1840 + { 1.1841 + cypher[0] = base[a]; 1.1842 + 1.1843 + for( b = 0; b < 4; b++ ) 1.1844 + { 1.1845 + plain[0] = (unsigned char)(a * 4 + b); 1.1846 + cypher[1] = base[(b * 16)]; 1.1847 + 1.1848 + rv = PL_Base64Encode((char *)plain, 1, (char *)0); 1.1849 + if( (char *)0 == rv ) 1.1850 + { 1.1851 + printf("FAIL\n\t(%d, %d): no return value\n", a, b); 1.1852 + return PR_FALSE; 1.1853 + } 1.1854 + 1.1855 + if( 0 != PL_strcmp((char *)cypher, rv) ) 1.1856 + { 1.1857 + printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", 1.1858 + a, b, cypher, rv); 1.1859 + PR_DELETE(rv); 1.1860 + return PR_FALSE; 1.1861 + } 1.1862 + 1.1863 + PR_DELETE(rv); 1.1864 + } 1.1865 + } 1.1866 + 1.1867 + printf("PASS\n"); 1.1868 + return PR_TRUE; 1.1869 +} 1.1870 + 1.1871 +/* PL_Base64Encode, double characters, malloc */ 1.1872 +PRBool test_006(void) 1.1873 +{ 1.1874 + PRUint32 a, b, c, d; 1.1875 + unsigned char plain[ 4 ]; 1.1876 + unsigned char cypher[ 5 ]; 1.1877 + char *rv; 1.1878 + 1.1879 + printf("Test 006 (PL_Base64Encode, double characters, malloc) ..."); fflush(stdout); 1.1880 + 1.1881 + plain[2] = plain[3] = (unsigned char)0; 1.1882 + cypher[3] = (unsigned char)'='; 1.1883 + cypher[4] = (unsigned char)0; 1.1884 + 1.1885 + for( a = 0; a < 64; a++ ) 1.1886 + { 1.1887 + cypher[0] = base[a]; 1.1888 + for( b = 0; b < 4; b++ ) 1.1889 + { 1.1890 + plain[0] = (a*4) + b; 1.1891 + for( c = 0; c < 16; c++ ) 1.1892 + { 1.1893 + cypher[1] = base[b*16 + c]; 1.1894 + for( d = 0; d < 16; d++ ) 1.1895 + { 1.1896 + plain[1] = c*16 + d; 1.1897 + cypher[2] = base[d*4]; 1.1898 + 1.1899 + rv = PL_Base64Encode((char *)plain, 2, (char *)0); 1.1900 + if( (char *)0 == rv ) 1.1901 + { 1.1902 + printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); 1.1903 + return PR_FALSE; 1.1904 + } 1.1905 + 1.1906 + if( 0 != PL_strcmp((char *)cypher, rv) ) 1.1907 + { 1.1908 + printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", 1.1909 + a, b, c, d, cypher, rv); 1.1910 + PR_DELETE(rv); 1.1911 + return PR_FALSE; 1.1912 + } 1.1913 + 1.1914 + PR_DELETE(rv); 1.1915 + } 1.1916 + } 1.1917 + } 1.1918 + } 1.1919 + 1.1920 + printf("PASS\n"); 1.1921 + return PR_TRUE; 1.1922 +} 1.1923 + 1.1924 +/* PL_Base64Encode, triple characters, malloc */ 1.1925 +PRBool test_007(void) 1.1926 +{ 1.1927 + PRUint32 a, b, c, d, e, f; 1.1928 + unsigned char plain[ 4 ]; 1.1929 + unsigned char cypher[ 5 ]; 1.1930 + char *rv; 1.1931 + 1.1932 + printf("Test 007 (PL_Base64Encode, triple characters, malloc) ..."); fflush(stdout); 1.1933 + 1.1934 + cypher[4] = (unsigned char)0; 1.1935 + 1.1936 + for( a = 0; a < 64; a++ ) 1.1937 + { 1.1938 + cypher[0] = base[a]; 1.1939 + for( b = 0; b < 4; b++ ) 1.1940 + { 1.1941 + plain[0] = (a*4) + b; 1.1942 + for( c = 0; c < 16; c++ ) 1.1943 + { 1.1944 + cypher[1] = base[b*16 + c]; 1.1945 + for( d = 0; d < 16; d++ ) 1.1946 + { 1.1947 + plain[1] = c*16 + d; 1.1948 + for( e = 0; e < 4; e++ ) 1.1949 + { 1.1950 + cypher[2] = base[d*4 + e]; 1.1951 + for( f = 0; f < 64; f++ ) 1.1952 + { 1.1953 + plain[2] = e * 64 + f; 1.1954 + cypher[3] = base[f]; 1.1955 + 1.1956 + rv = PL_Base64Encode((char *)plain, 3, (char *)0); 1.1957 + if( (char *)0 == rv ) 1.1958 + { 1.1959 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f); 1.1960 + return PR_FALSE; 1.1961 + } 1.1962 + 1.1963 + if( 0 != PL_strcmp((char *)cypher, rv) ) 1.1964 + { 1.1965 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", 1.1966 + a, b, c, d, e, f, cypher, rv); 1.1967 + PR_DELETE(rv); 1.1968 + return PR_FALSE; 1.1969 + } 1.1970 + 1.1971 + PR_DELETE(rv); 1.1972 + } 1.1973 + } 1.1974 + } 1.1975 + } 1.1976 + } 1.1977 + } 1.1978 + 1.1979 + printf("PASS\n"); 1.1980 + return PR_TRUE; 1.1981 +} 1.1982 + 1.1983 +/* PL_Base64Encode, random strings, malloc */ 1.1984 +PRBool test_008(void) 1.1985 +{ 1.1986 + int i; 1.1987 + 1.1988 + printf("Test 008 (PL_Base64Encode, random strings, malloc) ..."); fflush(stdout); 1.1989 + 1.1990 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.1991 + { 1.1992 + PRUint32 plen = PL_strlen(array[i].plaintext); 1.1993 + PRUint32 clen = ((plen + 2)/3)*4; 1.1994 + 1.1995 + char *rv = PL_Base64Encode(array[i].plaintext, plen, (char *)0); 1.1996 + 1.1997 + if( (char *)0 == rv ) 1.1998 + { 1.1999 + printf("FAIL\n\t(%d): no return value\n", i); 1.2000 + return PR_FALSE; 1.2001 + } 1.2002 + 1.2003 + if( 0 != PL_strcmp(rv, array[i].cyphertext) ) 1.2004 + { 1.2005 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", 1.2006 + i, array[i].plaintext, array[i].cyphertext, rv); 1.2007 + return PR_FALSE; 1.2008 + } 1.2009 + } 1.2010 + 1.2011 + printf("PASS\n"); 1.2012 + return PR_TRUE; 1.2013 +} 1.2014 + 1.2015 +/* PL_Base64Decode, single characters */ 1.2016 +PRBool test_009(void) 1.2017 +{ 1.2018 + PRUint32 a, b; 1.2019 + unsigned char plain[ 4 ]; 1.2020 + unsigned char cypher[ 5 ]; 1.2021 + char result[ 8 ]; 1.2022 + char *rv; 1.2023 + 1.2024 + printf("Test 009 (PL_Base64Decode, single characters, equals) ..."); fflush(stdout); 1.2025 + 1.2026 + plain[1] = plain[2] = plain[3] = (unsigned char)0; 1.2027 + cypher[2] = cypher[3] = (unsigned char)'='; 1.2028 + cypher[4] = (unsigned char)0; 1.2029 + 1.2030 + for( a = 0; a < 64; a++ ) 1.2031 + { 1.2032 + cypher[0] = base[a]; 1.2033 + 1.2034 + for( b = 0; b < 4; b++ ) 1.2035 + { 1.2036 + plain[0] = (unsigned char)(a * 4 + b); 1.2037 + cypher[1] = base[(b * 16)]; 1.2038 + 1.2039 + rv = PL_Base64Decode((char *)cypher, 4, result); 1.2040 + if( rv != result ) 1.2041 + { 1.2042 + printf("FAIL\n\t(%d, %d): return value\n", a, b); 1.2043 + return PR_FALSE; 1.2044 + } 1.2045 + 1.2046 + if( 0 != PL_strncmp((char *)plain, result, 1) ) 1.2047 + { 1.2048 + printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n", 1.2049 + a, b, plain, result); 1.2050 + return PR_FALSE; 1.2051 + } 1.2052 + } 1.2053 + } 1.2054 + 1.2055 + printf("PASS\n"); 1.2056 + return PR_TRUE; 1.2057 +} 1.2058 + 1.2059 +/* PL_Base64Decode, single characters */ 1.2060 +PRBool test_010(void) 1.2061 +{ 1.2062 + PRUint32 a, b; 1.2063 + unsigned char plain[ 4 ]; 1.2064 + unsigned char cypher[ 5 ]; 1.2065 + char result[ 8 ]; 1.2066 + char *rv; 1.2067 + 1.2068 + printf("Test 010 (PL_Base64Decode, single characters, no equals) ..."); fflush(stdout); 1.2069 + 1.2070 + plain[1] = plain[2] = plain[3] = (unsigned char)0; 1.2071 + cypher[2] = cypher[3] = (unsigned char)0; 1.2072 + cypher[4] = (unsigned char)0; 1.2073 + 1.2074 + for( a = 0; a < 64; a++ ) 1.2075 + { 1.2076 + cypher[0] = base[a]; 1.2077 + 1.2078 + for( b = 0; b < 4; b++ ) 1.2079 + { 1.2080 + plain[0] = (unsigned char)(a * 4 + b); 1.2081 + cypher[1] = base[(b * 16)]; 1.2082 + 1.2083 + rv = PL_Base64Decode((char *)cypher, 2, result); 1.2084 + if( rv != result ) 1.2085 + { 1.2086 + printf("FAIL\n\t(%d, %d): return value\n", a, b); 1.2087 + return PR_FALSE; 1.2088 + } 1.2089 + 1.2090 + if( 0 != PL_strncmp((char *)plain, result, 1) ) 1.2091 + { 1.2092 + printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n", 1.2093 + a, b, plain, result); 1.2094 + return PR_FALSE; 1.2095 + } 1.2096 + } 1.2097 + } 1.2098 + 1.2099 + printf("PASS\n"); 1.2100 + return PR_TRUE; 1.2101 +} 1.2102 + 1.2103 +/* PL_Base64Decode, double characters */ 1.2104 +PRBool test_011(void) 1.2105 +{ 1.2106 + PRUint32 a, b, c, d; 1.2107 + unsigned char plain[ 4 ]; 1.2108 + unsigned char cypher[ 5 ]; 1.2109 + char result[ 8 ]; 1.2110 + char *rv; 1.2111 + 1.2112 + printf("Test 011 (PL_Base64Decode, double characters, equals) ..."); fflush(stdout); 1.2113 + 1.2114 + plain[2] = plain[3] = (unsigned char)0; 1.2115 + cypher[3] = (unsigned char)'='; 1.2116 + cypher[4] = (unsigned char)0; 1.2117 + 1.2118 + for( a = 0; a < 64; a++ ) 1.2119 + { 1.2120 + cypher[0] = base[a]; 1.2121 + for( b = 0; b < 4; b++ ) 1.2122 + { 1.2123 + plain[0] = (a*4) + b; 1.2124 + for( c = 0; c < 16; c++ ) 1.2125 + { 1.2126 + cypher[1] = base[b*16 + c]; 1.2127 + for( d = 0; d < 16; d++ ) 1.2128 + { 1.2129 + plain[1] = c*16 + d; 1.2130 + cypher[2] = base[d*4]; 1.2131 + 1.2132 + rv = PL_Base64Decode((char *)cypher, 4, result); 1.2133 + if( rv != result ) 1.2134 + { 1.2135 + printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); 1.2136 + return PR_FALSE; 1.2137 + } 1.2138 + 1.2139 + if( 0 != PL_strncmp((char *)plain, result, 2) ) 1.2140 + { 1.2141 + printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n", 1.2142 + a, b, c, d, plain, result); 1.2143 + return PR_FALSE; 1.2144 + } 1.2145 + } 1.2146 + } 1.2147 + } 1.2148 + } 1.2149 + 1.2150 + printf("PASS\n"); 1.2151 + return PR_TRUE; 1.2152 +} 1.2153 + 1.2154 +/* PL_Base64Decode, double characters */ 1.2155 +PRBool test_012(void) 1.2156 +{ 1.2157 + PRUint32 a, b, c, d; 1.2158 + unsigned char plain[ 4 ]; 1.2159 + unsigned char cypher[ 5 ]; 1.2160 + char result[ 8 ]; 1.2161 + char *rv; 1.2162 + 1.2163 + printf("Test 012 (PL_Base64Decode, double characters, no equals) ..."); fflush(stdout); 1.2164 + 1.2165 + plain[2] = plain[3] = (unsigned char)0; 1.2166 + cypher[3] = (unsigned char)0; 1.2167 + cypher[4] = (unsigned char)0; 1.2168 + 1.2169 + for( a = 0; a < 64; a++ ) 1.2170 + { 1.2171 + cypher[0] = base[a]; 1.2172 + for( b = 0; b < 4; b++ ) 1.2173 + { 1.2174 + plain[0] = (a*4) + b; 1.2175 + for( c = 0; c < 16; c++ ) 1.2176 + { 1.2177 + cypher[1] = base[b*16 + c]; 1.2178 + for( d = 0; d < 16; d++ ) 1.2179 + { 1.2180 + plain[1] = c*16 + d; 1.2181 + cypher[2] = base[d*4]; 1.2182 + 1.2183 + rv = PL_Base64Decode((char *)cypher, 3, result); 1.2184 + if( rv != result ) 1.2185 + { 1.2186 + printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); 1.2187 + return PR_FALSE; 1.2188 + } 1.2189 + 1.2190 + if( 0 != PL_strncmp((char *)plain, result, 2) ) 1.2191 + { 1.2192 + printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n", 1.2193 + a, b, c, d, cypher, result); 1.2194 + return PR_FALSE; 1.2195 + } 1.2196 + } 1.2197 + } 1.2198 + } 1.2199 + } 1.2200 + 1.2201 + printf("PASS\n"); 1.2202 + return PR_TRUE; 1.2203 +} 1.2204 + 1.2205 +/* PL_Base64Decode, triple characters */ 1.2206 +PRBool test_013(void) 1.2207 +{ 1.2208 + PRUint32 a, b, c, d, e, f; 1.2209 + unsigned char plain[ 4 ]; 1.2210 + unsigned char cypher[ 5 ]; 1.2211 + char result[ 8 ]; 1.2212 + char *rv; 1.2213 + 1.2214 + printf("Test 013 (PL_Base64Decode, triple characters) ..."); fflush(stdout); 1.2215 + 1.2216 + cypher[4] = (unsigned char)0; 1.2217 + 1.2218 + for( a = 0; a < 64; a++ ) 1.2219 + { 1.2220 + cypher[0] = base[a]; 1.2221 + for( b = 0; b < 4; b++ ) 1.2222 + { 1.2223 + plain[0] = (a*4) + b; 1.2224 + for( c = 0; c < 16; c++ ) 1.2225 + { 1.2226 + cypher[1] = base[b*16 + c]; 1.2227 + for( d = 0; d < 16; d++ ) 1.2228 + { 1.2229 + plain[1] = c*16 + d; 1.2230 + for( e = 0; e < 4; e++ ) 1.2231 + { 1.2232 + cypher[2] = base[d*4 + e]; 1.2233 + for( f = 0; f < 64; f++ ) 1.2234 + { 1.2235 + plain[2] = e * 64 + f; 1.2236 + cypher[3] = base[f]; 1.2237 + 1.2238 + rv = PL_Base64Decode((char *)cypher, 4, result); 1.2239 + if( rv != result ) 1.2240 + { 1.2241 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f); 1.2242 + return PR_FALSE; 1.2243 + } 1.2244 + 1.2245 + if( 0 != PL_strncmp((char *)plain, result, 3) ) 1.2246 + { 1.2247 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n", 1.2248 + a, b, c, d, e, f, plain, result); 1.2249 + return PR_FALSE; 1.2250 + } 1.2251 + } 1.2252 + } 1.2253 + } 1.2254 + } 1.2255 + } 1.2256 + } 1.2257 + 1.2258 + printf("PASS\n"); 1.2259 + return PR_TRUE; 1.2260 +} 1.2261 + 1.2262 +/* PL_Base64Decode, random strings */ 1.2263 +PRBool test_014(void) 1.2264 +{ 1.2265 + int i; 1.2266 + char result[ 4096 ]; 1.2267 + 1.2268 + printf("Test 014 (PL_Base64Decode, random strings, equals) ..."); fflush(stdout); 1.2269 + 1.2270 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2271 + { 1.2272 + PRUint32 clen = PL_strlen(array[i].cyphertext); 1.2273 + PRUint32 plen = (clen * 3) / 4; 1.2274 + 1.2275 + char *rv = PL_Base64Decode(array[i].cyphertext, clen, result); 1.2276 + 1.2277 + if( rv != result ) 1.2278 + { 1.2279 + printf("FAIL\n\t(%d): return value\n", i); 1.2280 + return PR_FALSE; 1.2281 + } 1.2282 + 1.2283 + if( 0 == (clen & 3) ) 1.2284 + { 1.2285 + if( '=' == array[i].cyphertext[clen-1] ) 1.2286 + { 1.2287 + if( '=' == array[i].cyphertext[clen-2] ) 1.2288 + { 1.2289 + plen -= 2; 1.2290 + } 1.2291 + else 1.2292 + { 1.2293 + plen -= 1; 1.2294 + } 1.2295 + } 1.2296 + } 1.2297 + 1.2298 + if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) 1.2299 + { 1.2300 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", 1.2301 + i, array[i].cyphertext, array[i].plaintext, plen, result); 1.2302 + return PR_FALSE; 1.2303 + } 1.2304 + } 1.2305 + 1.2306 + printf("PASS\n"); 1.2307 + return PR_TRUE; 1.2308 +} 1.2309 + 1.2310 +/* PL_Base64Decode, random strings */ 1.2311 +PRBool test_015(void) 1.2312 +{ 1.2313 + int i; 1.2314 + char buffer[ 4096 ]; 1.2315 + char result[ 4096 ]; 1.2316 + char *rv; 1.2317 + 1.2318 + printf("Test 015 (PL_Base64Decode, random strings, no equals) ..."); fflush(stdout); 1.2319 + 1.2320 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2321 + { 1.2322 + PRUint32 clen, plen; 1.2323 + 1.2324 + PL_strcpy(buffer, array[i].cyphertext); 1.2325 + clen = PL_strlen(buffer); 1.2326 + 1.2327 + if( 0 == (clen & 3) ) 1.2328 + { 1.2329 + if( '=' == buffer[clen-1] ) 1.2330 + { 1.2331 + if( '=' == buffer[clen-2] ) 1.2332 + { 1.2333 + buffer[clen-2] = buffer[clen-1] = (char)0; 1.2334 + clen -= 2; 1.2335 + } 1.2336 + else 1.2337 + { 1.2338 + buffer[clen-1] = (char)0; 1.2339 + clen -= 1; 1.2340 + } 1.2341 + } 1.2342 + } 1.2343 + 1.2344 + plen = (clen * 3) / 4; 1.2345 + 1.2346 + rv = PL_Base64Decode(buffer, clen, result); 1.2347 + 1.2348 + if( rv != result ) 1.2349 + { 1.2350 + printf("FAIL\n\t(%d): return value\n", i); 1.2351 + return PR_FALSE; 1.2352 + } 1.2353 + 1.2354 + if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) 1.2355 + { 1.2356 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", 1.2357 + i, array[i].cyphertext, array[i].plaintext, plen, result); 1.2358 + return PR_FALSE; 1.2359 + } 1.2360 + } 1.2361 + 1.2362 + printf("PASS\n"); 1.2363 + return PR_TRUE; 1.2364 +} 1.2365 + 1.2366 +/* PL_Base64Decode, single characters, malloc */ 1.2367 +PRBool test_016(void) 1.2368 +{ 1.2369 + PRUint32 a, b; 1.2370 + unsigned char plain[ 4 ]; 1.2371 + unsigned char cypher[ 5 ]; 1.2372 + char *rv; 1.2373 + 1.2374 + printf("Test 016 (PL_Base64Decode, single characters, equals, malloc) ..."); fflush(stdout); 1.2375 + 1.2376 + plain[1] = plain[2] = plain[3] = (unsigned char)0; 1.2377 + cypher[2] = cypher[3] = (unsigned char)'='; 1.2378 + cypher[4] = (unsigned char)0; 1.2379 + 1.2380 + for( a = 0; a < 64; a++ ) 1.2381 + { 1.2382 + cypher[0] = base[a]; 1.2383 + 1.2384 + for( b = 0; b < 4; b++ ) 1.2385 + { 1.2386 + plain[0] = (unsigned char)(a * 4 + b); 1.2387 + cypher[1] = base[(b * 16)]; 1.2388 + 1.2389 + rv = PL_Base64Decode((char *)cypher, 4, (char *)0); 1.2390 + if( (char *)0 == rv ) 1.2391 + { 1.2392 + printf("FAIL\n\t(%d, %d): no return value\n", a, b); 1.2393 + return PR_FALSE; 1.2394 + } 1.2395 + 1.2396 + if( 0 != PL_strcmp((char *)plain, rv) ) 1.2397 + { 1.2398 + printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", 1.2399 + a, b, plain, rv); 1.2400 + PR_DELETE(rv); 1.2401 + return PR_FALSE; 1.2402 + } 1.2403 + 1.2404 + PR_DELETE(rv); 1.2405 + } 1.2406 + } 1.2407 + 1.2408 + printf("PASS\n"); 1.2409 + return PR_TRUE; 1.2410 +} 1.2411 + 1.2412 +/* PL_Base64Decode, single characters, malloc */ 1.2413 +PRBool test_017(void) 1.2414 +{ 1.2415 + PRUint32 a, b; 1.2416 + unsigned char plain[ 4 ]; 1.2417 + unsigned char cypher[ 5 ]; 1.2418 + char *rv; 1.2419 + 1.2420 + printf("Test 017 (PL_Base64Decode, single characters, no equals, malloc) ..."); fflush(stdout); 1.2421 + 1.2422 + plain[1] = plain[2] = plain[3] = (unsigned char)0; 1.2423 + cypher[2] = cypher[3] = (unsigned char)0; 1.2424 + cypher[4] = (unsigned char)0; 1.2425 + 1.2426 + for( a = 0; a < 64; a++ ) 1.2427 + { 1.2428 + cypher[0] = base[a]; 1.2429 + 1.2430 + for( b = 0; b < 4; b++ ) 1.2431 + { 1.2432 + plain[0] = (unsigned char)(a * 4 + b); 1.2433 + cypher[1] = base[(b * 16)]; 1.2434 + 1.2435 + rv = PL_Base64Decode((char *)cypher, 2, (char *)0); 1.2436 + if( (char *)0 == rv ) 1.2437 + { 1.2438 + printf("FAIL\n\t(%d, %d): no return value\n", a, b); 1.2439 + return PR_FALSE; 1.2440 + } 1.2441 + 1.2442 + if( 0 != PL_strcmp((char *)plain, rv) ) 1.2443 + { 1.2444 + printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", 1.2445 + a, b, plain, rv); 1.2446 + PR_DELETE(rv); 1.2447 + return PR_FALSE; 1.2448 + } 1.2449 + 1.2450 + PR_DELETE(rv); 1.2451 + } 1.2452 + } 1.2453 + 1.2454 + printf("PASS\n"); 1.2455 + return PR_TRUE; 1.2456 +} 1.2457 + 1.2458 +/* PL_Base64Decode, double characters, malloc */ 1.2459 +PRBool test_018(void) 1.2460 +{ 1.2461 + PRUint32 a, b, c, d; 1.2462 + unsigned char plain[ 4 ]; 1.2463 + unsigned char cypher[ 5 ]; 1.2464 + char *rv; 1.2465 + 1.2466 + printf("Test 018 (PL_Base64Decode, double characters, equals, malloc) ..."); fflush(stdout); 1.2467 + 1.2468 + plain[2] = plain[3] = (unsigned char)0; 1.2469 + cypher[3] = (unsigned char)'='; 1.2470 + cypher[4] = (unsigned char)0; 1.2471 + 1.2472 + for( a = 0; a < 64; a++ ) 1.2473 + { 1.2474 + cypher[0] = base[a]; 1.2475 + for( b = 0; b < 4; b++ ) 1.2476 + { 1.2477 + plain[0] = (a*4) + b; 1.2478 + for( c = 0; c < 16; c++ ) 1.2479 + { 1.2480 + cypher[1] = base[b*16 + c]; 1.2481 + for( d = 0; d < 16; d++ ) 1.2482 + { 1.2483 + plain[1] = c*16 + d; 1.2484 + cypher[2] = base[d*4]; 1.2485 + 1.2486 + rv = PL_Base64Decode((char *)cypher, 4, (char *)0); 1.2487 + if( (char *)0 == rv ) 1.2488 + { 1.2489 + printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); 1.2490 + return PR_FALSE; 1.2491 + } 1.2492 + 1.2493 + if( 0 != PL_strcmp((char *)plain, rv) ) 1.2494 + { 1.2495 + printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", 1.2496 + a, b, c, d, plain, rv); 1.2497 + PR_DELETE(rv); 1.2498 + return PR_FALSE; 1.2499 + } 1.2500 + 1.2501 + PR_DELETE(rv); 1.2502 + } 1.2503 + } 1.2504 + } 1.2505 + } 1.2506 + 1.2507 + printf("PASS\n"); 1.2508 + return PR_TRUE; 1.2509 +} 1.2510 + 1.2511 +/* PL_Base64Decode, double characters, malloc */ 1.2512 +PRBool test_019(void) 1.2513 +{ 1.2514 + PRUint32 a, b, c, d; 1.2515 + unsigned char plain[ 4 ]; 1.2516 + unsigned char cypher[ 5 ]; 1.2517 + char *rv; 1.2518 + 1.2519 + printf("Test 019 (PL_Base64Decode, double characters, no equals, malloc) ..."); fflush(stdout); 1.2520 + 1.2521 + plain[2] = plain[3] = (unsigned char)0; 1.2522 + cypher[3] = (unsigned char)0; 1.2523 + cypher[4] = (unsigned char)0; 1.2524 + 1.2525 + for( a = 0; a < 64; a++ ) 1.2526 + { 1.2527 + cypher[0] = base[a]; 1.2528 + for( b = 0; b < 4; b++ ) 1.2529 + { 1.2530 + plain[0] = (a*4) + b; 1.2531 + for( c = 0; c < 16; c++ ) 1.2532 + { 1.2533 + cypher[1] = base[b*16 + c]; 1.2534 + for( d = 0; d < 16; d++ ) 1.2535 + { 1.2536 + plain[1] = c*16 + d; 1.2537 + cypher[2] = base[d*4]; 1.2538 + 1.2539 + rv = PL_Base64Decode((char *)cypher, 3, (char *)0); 1.2540 + if( (char *)0 == rv ) 1.2541 + { 1.2542 + printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); 1.2543 + return PR_FALSE; 1.2544 + } 1.2545 + 1.2546 + if( 0 != PL_strcmp((char *)plain, rv) ) 1.2547 + { 1.2548 + printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", 1.2549 + a, b, c, d, cypher, rv); 1.2550 + PR_DELETE(rv); 1.2551 + return PR_FALSE; 1.2552 + } 1.2553 + 1.2554 + PR_DELETE(rv); 1.2555 + } 1.2556 + } 1.2557 + } 1.2558 + } 1.2559 + 1.2560 + printf("PASS\n"); 1.2561 + return PR_TRUE; 1.2562 +} 1.2563 + 1.2564 +/* PL_Base64Decode, triple characters, malloc */ 1.2565 +PRBool test_020(void) 1.2566 +{ 1.2567 + PRUint32 a, b, c, d, e, f; 1.2568 + unsigned char plain[ 4 ]; 1.2569 + unsigned char cypher[ 5 ]; 1.2570 + char *rv; 1.2571 + 1.2572 + printf("Test 020 (PL_Base64Decode, triple characters, malloc) ..."); fflush(stdout); 1.2573 + 1.2574 + cypher[4] = (unsigned char)0; 1.2575 + plain[3] = (unsigned char)0; 1.2576 + 1.2577 + for( a = 0; a < 64; a++ ) 1.2578 + { 1.2579 + cypher[0] = base[a]; 1.2580 + for( b = 0; b < 4; b++ ) 1.2581 + { 1.2582 + plain[0] = (a*4) + b; 1.2583 + for( c = 0; c < 16; c++ ) 1.2584 + { 1.2585 + cypher[1] = base[b*16 + c]; 1.2586 + for( d = 0; d < 16; d++ ) 1.2587 + { 1.2588 + plain[1] = c*16 + d; 1.2589 + for( e = 0; e < 4; e++ ) 1.2590 + { 1.2591 + cypher[2] = base[d*4 + e]; 1.2592 + for( f = 0; f < 64; f++ ) 1.2593 + { 1.2594 + plain[2] = e * 64 + f; 1.2595 + cypher[3] = base[f]; 1.2596 + 1.2597 + rv = PL_Base64Decode((char *)cypher, 4, (char *)0); 1.2598 + if( (char *)0 == rv ) 1.2599 + { 1.2600 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f); 1.2601 + return PR_FALSE; 1.2602 + } 1.2603 + 1.2604 + if( 0 != PL_strcmp((char *)plain, rv) ) 1.2605 + { 1.2606 + printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n", 1.2607 + a, b, c, d, e, f, plain, rv); 1.2608 + PR_DELETE(rv); 1.2609 + return PR_FALSE; 1.2610 + } 1.2611 + 1.2612 + PR_DELETE(rv); 1.2613 + } 1.2614 + } 1.2615 + } 1.2616 + } 1.2617 + } 1.2618 + } 1.2619 + 1.2620 + printf("PASS\n"); 1.2621 + return PR_TRUE; 1.2622 +} 1.2623 + 1.2624 +/* PL_Base64Decode, random strings, malloc */ 1.2625 +PRBool test_021(void) 1.2626 +{ 1.2627 + int i; 1.2628 + 1.2629 + printf("Test 021 (PL_Base64Decode, random strings, equals, malloc) ..."); fflush(stdout); 1.2630 + 1.2631 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2632 + { 1.2633 + PRUint32 clen = PL_strlen(array[i].cyphertext); 1.2634 + 1.2635 + char *rv = PL_Base64Decode(array[i].cyphertext, clen, (char *)0); 1.2636 + 1.2637 + if( (char *)0 == rv ) 1.2638 + { 1.2639 + printf("FAIL\n\t(%d): no return value\n", i); 1.2640 + return PR_FALSE; 1.2641 + } 1.2642 + 1.2643 + if( 0 != PL_strcmp(rv, array[i].plaintext) ) 1.2644 + { 1.2645 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", 1.2646 + i, array[i].cyphertext, array[i].plaintext, rv); 1.2647 + PR_DELETE(rv); 1.2648 + return PR_FALSE; 1.2649 + } 1.2650 + 1.2651 + PR_DELETE(rv); 1.2652 + } 1.2653 + 1.2654 + printf("PASS\n"); 1.2655 + return PR_TRUE; 1.2656 +} 1.2657 + 1.2658 +/* PL_Base64Encode, random strings, malloc */ 1.2659 +PRBool test_022(void) 1.2660 +{ 1.2661 + int i; 1.2662 + char buffer[ 4096 ]; 1.2663 + char *rv; 1.2664 + 1.2665 + printf("Test 022 (PL_Base64Decode, random strings, no equals, malloc) ..."); fflush(stdout); 1.2666 + 1.2667 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2668 + { 1.2669 + PRUint32 clen; 1.2670 + 1.2671 + PL_strcpy(buffer, array[i].cyphertext); 1.2672 + clen = PL_strlen(buffer); 1.2673 + 1.2674 + if( 0 == (clen & 3) ) 1.2675 + { 1.2676 + if( '=' == buffer[clen-1] ) 1.2677 + { 1.2678 + if( '=' == buffer[clen-2] ) 1.2679 + { 1.2680 + buffer[clen-2] = buffer[clen-1] = (char)0; 1.2681 + clen -= 2; 1.2682 + } 1.2683 + else 1.2684 + { 1.2685 + buffer[clen-1] = (char)0; 1.2686 + clen -= 1; 1.2687 + } 1.2688 + } 1.2689 + } 1.2690 + 1.2691 + rv = PL_Base64Decode(buffer, clen, (char *)0); 1.2692 + 1.2693 + if( (char *)0 == rv ) 1.2694 + { 1.2695 + printf("FAIL\n\t(%d): no return value\n", i); 1.2696 + return PR_FALSE; 1.2697 + } 1.2698 + 1.2699 + if( 0 != PL_strcmp(rv, array[i].plaintext) ) 1.2700 + { 1.2701 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", 1.2702 + i, array[i].cyphertext, array[i].plaintext, rv); 1.2703 + return PR_FALSE; 1.2704 + } 1.2705 + } 1.2706 + 1.2707 + printf("PASS\n"); 1.2708 + return PR_TRUE; 1.2709 +} 1.2710 + 1.2711 +/* PL_Base64Encode, random strings */ 1.2712 +PRBool test_023(void) 1.2713 +{ 1.2714 + int i; 1.2715 + char result[ 4096 ]; 1.2716 + 1.2717 + printf("Test 023 (PL_Base64Encode, random strings, strlen) ..."); fflush(stdout); 1.2718 + 1.2719 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2720 + { 1.2721 + PRUint32 plen = PL_strlen(array[i].plaintext); 1.2722 + PRUint32 clen = ((plen + 2)/3)*4; 1.2723 + 1.2724 + char *rv = PL_Base64Encode(array[i].plaintext, 0, result); 1.2725 + 1.2726 + if( rv != result ) 1.2727 + { 1.2728 + printf("FAIL\n\t(%d): return value\n", i); 1.2729 + return PR_FALSE; 1.2730 + } 1.2731 + 1.2732 + if( 0 != PL_strncmp(result, array[i].cyphertext, clen) ) 1.2733 + { 1.2734 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", 1.2735 + i, array[i].plaintext, array[i].cyphertext, clen, result); 1.2736 + return PR_FALSE; 1.2737 + } 1.2738 + } 1.2739 + 1.2740 + printf("PASS\n"); 1.2741 + return PR_TRUE; 1.2742 +} 1.2743 + 1.2744 +/* PL_Base64Encode, random strings, malloc */ 1.2745 +PRBool test_024(void) 1.2746 +{ 1.2747 + int i; 1.2748 + 1.2749 + printf("Test 024 (PL_Base64Encode, random strings, malloc, strlen) ..."); fflush(stdout); 1.2750 + 1.2751 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2752 + { 1.2753 + PRUint32 plen = PL_strlen(array[i].plaintext); 1.2754 + PRUint32 clen = ((plen + 2)/3)*4; 1.2755 + 1.2756 + char *rv = PL_Base64Encode(array[i].plaintext, 0, (char *)0); 1.2757 + 1.2758 + if( (char *)0 == rv ) 1.2759 + { 1.2760 + printf("FAIL\n\t(%d): no return value\n", i); 1.2761 + return PR_FALSE; 1.2762 + } 1.2763 + 1.2764 + if( 0 != PL_strcmp(rv, array[i].cyphertext) ) 1.2765 + { 1.2766 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", 1.2767 + i, array[i].plaintext, array[i].cyphertext, rv); 1.2768 + return PR_FALSE; 1.2769 + } 1.2770 + } 1.2771 + 1.2772 + printf("PASS\n"); 1.2773 + return PR_TRUE; 1.2774 +} 1.2775 + 1.2776 +/* PL_Base64Decode, random strings */ 1.2777 +PRBool test_025(void) 1.2778 +{ 1.2779 + int i; 1.2780 + char result[ 4096 ]; 1.2781 + 1.2782 + printf("Test 025 (PL_Base64Decode, random strings, equals, strlen) ..."); fflush(stdout); 1.2783 + 1.2784 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2785 + { 1.2786 + PRUint32 clen = PL_strlen(array[i].cyphertext); 1.2787 + PRUint32 plen = (clen * 3) / 4; 1.2788 + 1.2789 + char *rv = PL_Base64Decode(array[i].cyphertext, 0, result); 1.2790 + 1.2791 + if( rv != result ) 1.2792 + { 1.2793 + printf("FAIL\n\t(%d): return value\n", i); 1.2794 + return PR_FALSE; 1.2795 + } 1.2796 + 1.2797 + if( 0 == (clen & 3) ) 1.2798 + { 1.2799 + if( '=' == array[i].cyphertext[clen-1] ) 1.2800 + { 1.2801 + if( '=' == array[i].cyphertext[clen-2] ) 1.2802 + { 1.2803 + plen -= 2; 1.2804 + } 1.2805 + else 1.2806 + { 1.2807 + plen -= 1; 1.2808 + } 1.2809 + } 1.2810 + } 1.2811 + 1.2812 + if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) 1.2813 + { 1.2814 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", 1.2815 + i, array[i].cyphertext, array[i].plaintext, plen, result); 1.2816 + return PR_FALSE; 1.2817 + } 1.2818 + } 1.2819 + 1.2820 + printf("PASS\n"); 1.2821 + return PR_TRUE; 1.2822 +} 1.2823 + 1.2824 +/* PL_Base64Decode, random strings */ 1.2825 +PRBool test_026(void) 1.2826 +{ 1.2827 + int i; 1.2828 + char buffer[ 4096 ]; 1.2829 + char result[ 4096 ]; 1.2830 + char *rv; 1.2831 + 1.2832 + printf("Test 026 (PL_Base64Decode, random strings, no equals, strlen) ..."); fflush(stdout); 1.2833 + 1.2834 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2835 + { 1.2836 + PRUint32 clen, plen; 1.2837 + 1.2838 + PL_strcpy(buffer, array[i].cyphertext); 1.2839 + clen = PL_strlen(buffer); 1.2840 + 1.2841 + if( 0 == (clen & 3) ) 1.2842 + { 1.2843 + if( '=' == buffer[clen-1] ) 1.2844 + { 1.2845 + if( '=' == buffer[clen-2] ) 1.2846 + { 1.2847 + buffer[clen-2] = buffer[clen-1] = (char)0; 1.2848 + clen -= 2; 1.2849 + } 1.2850 + else 1.2851 + { 1.2852 + buffer[clen-1] = (char)0; 1.2853 + clen -= 1; 1.2854 + } 1.2855 + } 1.2856 + } 1.2857 + 1.2858 + plen = (clen * 3) / 4; 1.2859 + 1.2860 + rv = PL_Base64Decode(buffer, 0, result); 1.2861 + 1.2862 + if( rv != result ) 1.2863 + { 1.2864 + printf("FAIL\n\t(%d): return value\n", i); 1.2865 + return PR_FALSE; 1.2866 + } 1.2867 + 1.2868 + if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) 1.2869 + { 1.2870 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", 1.2871 + i, array[i].cyphertext, array[i].plaintext, plen, result); 1.2872 + return PR_FALSE; 1.2873 + } 1.2874 + } 1.2875 + 1.2876 + printf("PASS\n"); 1.2877 + return PR_TRUE; 1.2878 +} 1.2879 + 1.2880 +/* PL_Base64Decode, random strings, malloc */ 1.2881 +PRBool test_027(void) 1.2882 +{ 1.2883 + int i; 1.2884 + 1.2885 + printf("Test 027 (PL_Base64Decode, random strings, equals, malloc, strlen) ..."); fflush(stdout); 1.2886 + 1.2887 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2888 + { 1.2889 + PRUint32 clen = PL_strlen(array[i].cyphertext); 1.2890 + 1.2891 + char *rv = PL_Base64Decode(array[i].cyphertext, 0, (char *)0); 1.2892 + 1.2893 + if( (char *)0 == rv ) 1.2894 + { 1.2895 + printf("FAIL\n\t(%d): no return value\n", i); 1.2896 + return PR_FALSE; 1.2897 + } 1.2898 + 1.2899 + if( 0 != PL_strcmp(rv, array[i].plaintext) ) 1.2900 + { 1.2901 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", 1.2902 + i, array[i].cyphertext, array[i].plaintext, rv); 1.2903 + PR_DELETE(rv); 1.2904 + return PR_FALSE; 1.2905 + } 1.2906 + 1.2907 + PR_DELETE(rv); 1.2908 + } 1.2909 + 1.2910 + printf("PASS\n"); 1.2911 + return PR_TRUE; 1.2912 +} 1.2913 + 1.2914 +/* PL_Base64Encode, random strings, malloc */ 1.2915 +PRBool test_028(void) 1.2916 +{ 1.2917 + int i; 1.2918 + char buffer[ 4096 ]; 1.2919 + char *rv; 1.2920 + 1.2921 + printf("Test 028 (PL_Base64Decode, random strings, no equals, malloc, strlen) ..."); fflush(stdout); 1.2922 + 1.2923 + for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) 1.2924 + { 1.2925 + PRUint32 clen; 1.2926 + 1.2927 + PL_strcpy(buffer, array[i].cyphertext); 1.2928 + clen = PL_strlen(buffer); 1.2929 + 1.2930 + if( 0 == (clen & 3) ) 1.2931 + { 1.2932 + if( '=' == buffer[clen-1] ) 1.2933 + { 1.2934 + if( '=' == buffer[clen-2] ) 1.2935 + { 1.2936 + buffer[clen-2] = buffer[clen-1] = (char)0; 1.2937 + clen -= 2; 1.2938 + } 1.2939 + else 1.2940 + { 1.2941 + buffer[clen-1] = (char)0; 1.2942 + clen -= 1; 1.2943 + } 1.2944 + } 1.2945 + } 1.2946 + 1.2947 + rv = PL_Base64Decode(buffer, 0, (char *)0); 1.2948 + 1.2949 + if( (char *)0 == rv ) 1.2950 + { 1.2951 + printf("FAIL\n\t(%d): no return value\n", i); 1.2952 + return PR_FALSE; 1.2953 + } 1.2954 + 1.2955 + if( 0 != PL_strcmp(rv, array[i].plaintext) ) 1.2956 + { 1.2957 + printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", 1.2958 + i, array[i].cyphertext, array[i].plaintext, rv); 1.2959 + return PR_FALSE; 1.2960 + } 1.2961 + } 1.2962 + 1.2963 + printf("PASS\n"); 1.2964 + return PR_TRUE; 1.2965 +} 1.2966 + 1.2967 +int 1.2968 +main 1.2969 +( 1.2970 + int argc, 1.2971 + char *argv[] 1.2972 +) 1.2973 +{ 1.2974 + printf("Testing the Portable Library base64 functions:\n"); 1.2975 + printf("(warning: the \"triple characters\" tests are slow)\n"); 1.2976 + 1.2977 + if( 1 1.2978 + && test_001() 1.2979 + && test_002() 1.2980 + && test_003() 1.2981 + && test_004() 1.2982 + && test_005() 1.2983 + && test_006() 1.2984 + && test_007() 1.2985 + && test_008() 1.2986 + && test_009() 1.2987 + && test_010() 1.2988 + && test_011() 1.2989 + && test_012() 1.2990 + && test_013() 1.2991 + && test_014() 1.2992 + && test_015() 1.2993 + && test_016() 1.2994 + && test_017() 1.2995 + && test_018() 1.2996 + && test_019() 1.2997 + && test_020() 1.2998 + && test_021() 1.2999 + && test_022() 1.3000 + && test_023() 1.3001 + && test_024() 1.3002 + && test_025() 1.3003 + && test_026() 1.3004 + && test_027() 1.3005 + && test_028() 1.3006 + ) 1.3007 + { 1.3008 + printf("Suite passed.\n"); 1.3009 + return 0; 1.3010 + } 1.3011 + else 1.3012 + { 1.3013 + printf("Suite failed.\n"); 1.3014 + return 1; 1.3015 + } 1.3016 + 1.3017 + /*NOTREACHED*/ 1.3018 +}