C# 终本案件、综合执行人、裁判文书爬虫

终本案件:http://zxgk.court.gov.cn/zhongben/new_index.html

综合执行人:http://zxgk.court.gov.cn/zhixing/new_index.html

裁判文书:http://wenshu.court.gov.cn

  终本案件和执行人爬取还是挺简单的,没有涉及到加密,验证码也可以直接识别过掉,主要是网站不是很稳定,经常出现502,504,500错误,涉及到一些失败重连机制。IP限制我们用的是拨号来解决的,客户对于速度的要求不是很

高,考虑到客户预算有限没有上优质HTTP代理。

  本来开始是用的.net4.5的httpclient,但是在实际的抓取过程当中发现这个类库有BUG,释放SOCKET的时间需要很长。后改用从4.0开始就一直在使用的RestSharp来做访问,问题得到解决,网页解析类库采用的是anglesharp,解

析速度还是不错的。由于网站经常出现访问错误,已经有些数据查询会直接让网站报500,所以采用了Polly来做超时和重试。

  外包项目,直接做的类库给他们调用没有写界面,前两个没什么好说的,主要来说说文书爬虫。

 

  文书获取列表页的时候需要提交三个参数:GUID\Code\VL5X ,GUID是随机数生成的,我们可以直接使用

Guid.NewGuid().ToString("D");

  生成GUID就可以了,Code是访问网页返回的,带上GUID访问返回明文的Code,访问网址:/ValiCode/GetCode

        private string GetCode(RestClient client)
        {
            cc:
            PageId = Guid.NewGuid().ToString("D");
            var rsp = "/ValiCode/GetCode".PostAsResponse(client, "guid=" + PageId);
            if (!ProcessResponse(rsp, client))
            {
                goto cc;
            }
            return rsp.Content;
        }

  ProcessResponse是做的访问结果判断是否需要过验证码或者拨号

  

private bool ProcessResponse(IRestResponse rsp, RestClient client)
        {
            if (rsp.StatusCode == HttpStatusCode.BadGateway || rsp.StatusCode == HttpStatusCode.GatewayTimeout)
            {
                Reconnection(DialerInfo);
                return false;
            }
            if (rsp.Content.Contains("网站当前访问量较大,请输入验证码后继续访问"))
            {
                Reconnection(DialerInfo);
                var buffer = client.Execute(new RestRequest(string.Format("waf_captcha/?{0}", DateTime.Now.Ticks))).RawBytes;
                var captcha = Helpers.ProcessImage(buffer, buffer.Length);
                rsp.Content = client.Execute(new RestRequest("waf_verify.htm?captcha=" + captcha)).Content;
                return false;
            }
            foreach (var s in ProhibitKey)
            {
                if (rsp.Content.Contains(s))
                {
                    Reconnection(DialerInfo);
                    return false;
                }
            }
            return true;
        }

  目前发现的几个关键字:

        //被封IP时候出现的关键词

        public static string[] ProhibitKey = new[]
        {
            "网站当前访问量较大,请输入验证码后继续访问",
            "请开启JavaScript并刷新该页",
            "源站出现问题,暂时无法访问",
        };

  VL5X是根据Cookie来计算的值,Cookie是带上guid\code访问得到的:

private string GetCookie(string name, string code, RestClient client)
        {
            cc:
            var rsp =
                string.Format("/list/list/?sorttype=1&number={0}&guid={1}&conditions=searchWord+QWJS+++{2}", code, PageId, "全文检索:" + name)
                    .GetAsResponse(client);
            if (!ProcessResponse(rsp, client))
            {
                goto cc;
            }

            var cookie = rsp.Cookies.FirstOrDefault(x => x.Name == "vjkl5");
            if (cookie == null)
            {
                Reconnection(DialerInfo);
                goto cc;
            }

            return cookie.Value;
        }

  拿到cookie后,根据js加密出vl5x的值,加密的JS:(JS我改写了,调用getValue这个方法,传入cookie就可以返回vl5x的值)

 

   1 function strToLong(str) {
   2 var long = 0;
   3 for (var i = 0; i < str.length; i++) {
   4     long += (str.charCodeAt(i) << (i % 16))
   5 }
   6 return long
   7 }
   8 function strToLongEn(str) {
   9 var long = 0;
  10 for (var i = 0; i < str.length; i++) {
  11     long += (str.charCodeAt(i) << (i % 16)) + i
  12 }
  13 return long
  14 }
  15 function strToLongEn2(str, step) {
  16 var long = 0;
  17 for (var i = 0; i < str.length; i++) {
  18     long += (str.charCodeAt(i) << (i % 16)) + (i * step)
  19 }
  20 return long
  21 }
  22 function strToLongEn3(str, step) {
  23 var long = 0;
  24 for (var i = 0; i < str.length; i++) {
  25     long += (str.charCodeAt(i) << (i % 16)) + (i + step - str.charCodeAt(i))
  26 }
  27 return long
  28 }
  29 function makeKey_0(str) {
  30 var str = str.substr(5, 5 * 5) + str.substr((5 + 1) * (5 + 1), 3);
  31 var a = str.substr(5) + str.substr( - 4);
  32 var b = str.substr(4) + a.substr( - 6);
  33 return hex_md5(str).substr(4, 24)
  34 }
  35 function makeKey_1(str) {
  36 var str = str.substr(5, 5 * 5) + "5" + str.substr(1, 2) + "1" + str.substr((5 + 1) * (5 + 1), 3);
  37 var a = str.substr(5) + str.substr(4);
  38 var b = str.substr(12) + a.substr( - 6);
  39 var c = str.substr(4) + a.substr(6);
  40 return hex_md5(c).substr(4, 24)
  41 }
  42 function makeKey_2(str) {
  43 var str = str.substr(5, 5 * 5) + "15" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
  44 var a = strToLong(str.substr(5)) + str.substr(4);
  45 var b = strToLong(str.substr(5)) + str.substr(4);
  46 var c = str.substr(4) + b.substr(5);
  47 return hex_md5(c).substr(1, 24)
  48 }
  49 function makeKey_3(str) {
  50 var str = str.substr(5, 5 * 5) + "15" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
  51 var a = strToLongEn(str.substr(5)) + str.substr(4);
  52 var b = str.substr(4) + a.substr(5);
  53 var c = strToLong(str.substr(5)) + str.substr(4);
  54 return hex_md5(b).substr(3, 24)
  55 }
  56 function makeKey_4(str) {
  57 var str = str.substr(5, 5 * 5) + "2" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
  58 var long = 0;
  59 for (var i = 0; i < str.substr(1).length; i++) {
  60     long += (str.charCodeAt(i) << (i % 16))
  61 }
  62 var aa = long + str.substr(4);
  63 var long = 0;
  64 var a = str.substr(5);
  65 for (var i = 0; i < a.length; i++) {
  66     long += (a.charCodeAt(i) << (i % 16)) + i
  67 }
  68 a = long + "" + str.substr(4);
  69 var b = hex_md5(str.substr(1)) + strToLong(a.substr(5));
  70 return hex_md5(b).substr(3, 24)
  71 }
  72 function makeKey_5(str) {
  73 var base = new Base64();
  74 var str = base.encode(str.substr(5, 5 * 5) + str.substr(1, 2) + "1") + str.substr((5 + 1) * (5 + 1), 3);
  75 var a = strToLongEn(str.substr(4, 10)) + str.substr( - 4);
  76 var b = hex_md5(str.substr(4)) + a.substr(2);
  77 var a = str.substr(3);
  78 var c = strToLong(str.substr(5)) + str.substr(4);
  79 var aa = long + str.substr(4);
  80 var long = 0;
  81 for (var i = 0; i < a.length; i++) {
  82     long += (a.charCodeAt(i) << (i % 12)) + i
  83 }
  84 a = long + "" + str.substr(4);
  85 return hex_md5(str).substr(4, 24)
  86 }
  87 function makeKey_6(str) {
  88 var base = new Base64();
  89 var str = str.substr(5, 5 * 5) + str.substr((5 + 1) * (5 + 1), 3);
  90 var a = base.encode(str.substr(4, 10)) + str.substr(2);
  91 var b = str.substr(6) + a.substr(2);
  92 var c = strToLong(str.substr(5)) + str.substr(4);
  93 var aa = long + str.substr(4);
  94 var long = 0;
  95 var a = str.substr(5);
  96 for (var i = 0; i < a.length; i++) {
  97     long += (a.charCodeAt(i) << (i % 16)) + i
  98 }
  99 a = long + "" + str.substr(4);
 100 return hex_md5(b).substr(2, 24)
 101 }
 102 function makeKey_7(str) {
 103 var base = new Base64();
 104 var str = base.encode(str.substr(5, 5 * 4) + "55" + str.substr(1, 2)) + str.substr((5 + 1) * (5 + 1), 3);
 105 var long = 0;
 106 for (var i = 0; i < str.substr(1).length; i++) {
 107     long += (str.charCodeAt(i) << (i % 16 + 5)) + 3 + 5
 108 }
 109 var aa = long + str.substr(4);
 110 var long = 0;
 111 var a = str.substr(5);
 112 for (var i = 0; i < a.length; i++) {
 113     long += (a.charCodeAt(i) << (i % 16))
 114 }
 115 a = long + "" + str.substr(4);
 116 var b = hex_md5(str.substr(1)) + strToLong(a.substr(5));
 117 return hex_md5(b).substr(3, 24)
 118 }
 119 function makeKey_8(str) {
 120 var base = new Base64();
 121 var str = base.encode(str.substr(5, 5 * 5 - 1) + "5" + "-" + "5") + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
 122 var long = 0;
 123 for (var i = 0; i < str.substr(1).length; i++) {
 124     long += (str.charCodeAt(i) << (i % 16))
 125 }
 126 var aa = long + str.substr(4);
 127 var long = 0;
 128 var a = str.substr(5);
 129 for (var i = 0; i < a.length; i++) {
 130     long += (a.charCodeAt(i) << (i % 16))
 131 }
 132 a = long + "" + str.substr(4);
 133 var b = hex_md5(str.substr(1)) + strToLongEn(a.substr(5));
 134 return hex_md5(b).substr(4, 24)
 135 }
 136 function makeKey_9(str) {
 137 var str = str.substr(5, 5 * 5) + "5" + str.substr(1, 2) + "1" + str.substr((5 + 1) * (5 + 1), 3);
 138 var a = str.substr(5) + str.substr(4);
 139 var b = str.substr(12) + a.substr( - 6);
 140 var c = hex_sha1(str.substr(4)) + a.substr(6);
 141 return hex_md5(c).substr(4, 24)
 142 }
 143 function makeKey_10(str) {
 144 var base = new Base64();
 145 var str = base.encode(str.substr(5, 5 * 5 - 1) + "5") + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
 146 var long = 0;
 147 for (var i = 0; i < str.substr(1).length; i++) {
 148     long += (str.charCodeAt(i) << (i % 16))
 149 }
 150 var aa = long + str.substr(4);
 151 var long = 0;
 152 var a = str.substr(5);
 153 for (var i = 0; i < a.length; i++) {
 154     long += (a.charCodeAt(i) << (i % 16))
 155 }
 156 a = long + "" + str.substr(4);
 157 var b = hex_md5(str.substr(1)) + hex_sha1(a.substr(5));
 158 return hex_md5(b).substr(4, 24)
 159 }
 160 function makeKey_11(str) {
 161 var base = new Base64();
 162 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2) + str.substr((5 + 1) * (5 + 1), 3);
 163 var long = 0;
 164 for (var i = 0; i < str.substr(1).length; i++) {
 165     long += (str.charCodeAt(i) << (i % 16))
 166 }
 167 var aa = long + str.substr(4);
 168 var long = 0;
 169 var a = str.substr(5);
 170 for (var i = 0; i < a.length; i++) {
 171     long += (a.charCodeAt(i) << (i % 16))
 172 }
 173 a = long + "" + str.substr(2);
 174 var b = str.substr(1) + hex_sha1(a.substr(5));
 175 return hex_md5(b).substr(2, 24)
 176 }
 177 function makeKey_12(str) {
 178 var base = new Base64();
 179 var str = str.substr(5, 5 * 5 - 1) + str.substr((5 + 1) * (5 + 1), 3) + "2" + str.substr(1, 2);
 180 var long = 0;
 181 for (var i = 0; i < str.substr(1).length; i++) {
 182     long += (str.charCodeAt(i) << (i % 16))
 183 }
 184 var aa = long + str.substr(4);
 185 var long = 0;
 186 var a = str.substr(5);
 187 for (var i = 0; i < a.length; i++) {
 188     long += (a.charCodeAt(i) << (i % 16))
 189 }
 190 a = long + "" + str.substr(2);
 191 var b = str.substr(1) + hex_sha1(str.substr(5));
 192 return hex_md5(b).substr(1, 24)
 193 }
 194 function makeKey_13(str) {
 195 var base = new Base64();
 196 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2);
 197 var long = 0;
 198 for (var i = 0; i < str.substr(1).length; i++) {
 199     long += (str.charCodeAt(i) << (i % 16))
 200 }
 201 var aa = long + str.substr(4);
 202 var long = 0;
 203 var a = str.substr(5);
 204 for (var i = 0; i < a.length; i++) {
 205     long += (a.charCodeAt(i) << (i % 16))
 206 }
 207 a = long + "" + str.substr(2);
 208 var b = base.encode(str.substr(1) + hex_sha1(str.substr(5)));
 209 return hex_md5(b).substr(1, 24)
 210 }
 211 function makeKey_14(str) {
 212 var base = new Base64();
 213 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2);
 214 var long = 0;
 215 for (var i = 0; i < str.substr(1).length; i++) {
 216     long += (str.charCodeAt(i) << (i % 16))
 217 }
 218 var aa = long + str.substr(4);
 219 var long = 0;
 220 var a = str.substr(5);
 221 for (var i = 0; i < a.length; i++) {
 222     long += (a.charCodeAt(i) << (i % 16))
 223 }
 224 a = long + "" + str.substr(2);
 225 var b = base.encode(str.substr(1) + str.substr(5) + str.substr(1, 3));
 226 return hex_sha1(b).substr(1, 24)
 227 }
 228 function makeKey_15(str) {
 229 var base = new Base64();
 230 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2);
 231 var long = 0;
 232 for (var i = 0; i < str.substr(1).length; i++) {
 233     long += (str.charCodeAt(i) << (i % 16))
 234 }
 235 var aa = long + str.substr(4);
 236 var long = 0;
 237 var a = str.substr(5);
 238 for (var i = 0; i < a.length; i++) {
 239     long += (a.charCodeAt(i) << (i % 16))
 240 }
 241 a = long + "" + str.substr(2);
 242 var b = base.encode(a.substr(1) + str.substr(5) + str.substr(2, 3));
 243 return hex_sha1(b).substr(1, 24)
 244 }
 245 function makeKey_16(str) {
 246 var base = new Base64();
 247 var str = str.substr(5, 5 * 5 - 1) + "2" + str.substr(1, 2) + "-" + "5";
 248 var long = 0;
 249 for (var i = 0; i < str.substr(1).length; i++) {
 250     long += (str.charCodeAt(i) << (i % 11))
 251 }
 252 var aa = long + str.substr(4);
 253 var long = 0;
 254 var a = str.substr(5);
 255 for (var i = 0; i < a.length; i++) {
 256     long += (a.charCodeAt(i) << (i % 16)) + i
 257 }
 258 a = long + "" + str.substr(2);
 259 var b = base.encode(a.substr(1)) + strToLongEn2(str.substr(5), 5) + str.substr(2, 3);
 260 return hex_md5(b).substr(2, 24)
 261 }
 262 function makeKey_17(str) {
 263 var base = new Base64();
 264 var str = str.substr(5, 5 * 5 - 1) + "7" + str.substr(1, 2) + "-" + "5";
 265 var long = 0;
 266 for (var i = 0; i < str.substr(1).length; i++) {
 267     long += (str.charCodeAt(i) << (i % 11))
 268 }
 269 var aa = long + str.substr(4);
 270 var long = 0;
 271 var a = str.substr(5);
 272 for (var i = 0; i < a.length; i++) {
 273     long += (a.charCodeAt(i) << (i % 16)) + i
 274 }
 275 a = long + "" + str.substr(2);
 276 var b = base.encode(a.substr(1)) + strToLongEn2(str.substr(5), 5 + 1) + str.substr(2 + 5, 3);
 277 return hex_md5(b).substr(0, 24)
 278 }
 279 function makeKey_18(str) {
 280 var base = new Base64();
 281 var str = str.substr(5, 5 * 5 - 1) + "7" + str.substr(1, 2) + "5" + str.substr(2 + 5, 3);
 282 var long = 0;
 283 for (var i = 0; i < str.substr(1).length; i++) {
 284     long += (str.charCodeAt(i) << (i % 11))
 285 }
 286 var aa = long + str.substr(4);
 287 var long = 0;
 288 var a = str.substr(5);
 289 for (var i = 0; i < a.length; i++) {
 290     long += (a.charCodeAt(i) << (i % 16)) + i
 291 }
 292 a = long + "" + str.substr(2);
 293 var b = a.substr(1) + strToLongEn2(str.substr(5), 5 + 1) + str.substr(2 + 5, 3);
 294 return hex_md5(b).substr(0, 24)
 295 }
 296 function makeKey_19(str) {
 297 var base = new Base64();
 298 var str = str.substr(5, 5 * 5 - 1) + "7" + str.substr(5, 2) + "5" + str.substr(2 + 5, 3);
 299 var long = 0;
 300 for (var i = 0; i < str.substr(1).length; i++) {
 301     long += (str.charCodeAt(i) << (i % 11))
 302 }
 303 var aa = long + str.substr(4);
 304 var long = 0;
 305 var a = str.substr(5);
 306 for (var i = 0; i < a.length; i++) {
 307     long += (a.charCodeAt(i) << (i % 16)) + i
 308 }
 309 a = long + "" + str.substr(2);
 310 var b = a.substr(1) + strToLongEn3(str.substr(5), 5 - 1) + str.substr(2 + 5, 3);
 311 return hex_md5(b).substr(0, 24)
 312 }
 313 function makeKey_20(str) {
 314 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(1, 24)
 315 }
 316 function makeKey_21(str) {
 317 return hex_md5(makeKey_11(str) + makeKey_3(str)).substr(2, 24)
 318 }
 319 function makeKey_22(str) {
 320 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(3, 24)
 321 }
 322 function makeKey_23(str) {
 323 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(4, 24)
 324 }
 325 function makeKey_24(str) {
 326 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(1, 24)
 327 }
 328 function makeKey_25(str) {
 329 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(2, 24)
 330 }
 331 function makeKey_26(str) {
 332 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(3, 24)
 333 }
 334 function makeKey_27(str) {
 335 return hex_md5(makeKey_17(str) + makeKey_3(str)).substr(4, 24)
 336 }
 337 function makeKey_28(str) {
 338 return hex_md5(makeKey_18(str) + makeKey_7(str)).substr(1, 24)
 339 }
 340 function makeKey_29(str) {
 341 return hex_md5(makeKey_19(str) + makeKey_3(str)).substr(2, 24)
 342 }
 343 function makeKey_30(str) {
 344 return hex_md5(makeKey_0(str) + makeKey_7(str)).substr(3, 24)
 345 }
 346 function makeKey_31(str) {
 347 return hex_md5(makeKey_1(str) + makeKey_8(str)).substr(4, 24)
 348 }
 349 function makeKey_32(str) {
 350 return hex_md5(makeKey_4(str) + makeKey_14(str)).substr(3, 24)
 351 }
 352 function makeKey_33(str) {
 353 return hex_md5(makeKey_5(str) + makeKey_15(str)).substr(4, 24)
 354 }
 355 function makeKey_34(str) {
 356 return hex_md5(makeKey_3(str) + makeKey_16(str)).substr(1, 24)
 357 }
 358 function makeKey_35(str) {
 359 return hex_md5(makeKey_7(str) + makeKey_9(str)).substr(2, 24)
 360 }
 361 function makeKey_36(str) {
 362 return hex_md5(makeKey_8(str) + makeKey_10(str)).substr(3, 24)
 363 }
 364 function makeKey_37(str) {
 365 return hex_md5(makeKey_6(str) + makeKey_17(str)).substr(1, 24)
 366 }
 367 function makeKey_38(str) {
 368 return hex_md5(makeKey_12(str) + makeKey_18(str)).substr(2, 24)
 369 }
 370 function makeKey_39(str) {
 371 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(3, 24)
 372 }
 373 function makeKey_40(str) {
 374 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(4, 24)
 375 }
 376 function makeKey_41(str) {
 377 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(3, 24)
 378 }
 379 function makeKey_42(str) {
 380 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(4, 24)
 381 }
 382 function makeKey_43(str) {
 383 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(1, 24)
 384 }
 385 function makeKey_44(str) {
 386 return hex_md5(makeKey_17(str) + makeKey_3(str)).substr(2, 24)
 387 }
 388 function makeKey_45(str) {
 389 return hex_md5(makeKey_18(str) + makeKey_7(str)).substr(3, 24)
 390 }
 391 function makeKey_46(str) {
 392 return hex_md5(makeKey_19(str) + makeKey_17(str)).substr(4, 24)
 393 }
 394 function makeKey_47(str) {
 395 return hex_md5(makeKey_0(str) + makeKey_18(str)).substr(1, 24)
 396 }
 397 function makeKey_48(str) {
 398 return hex_md5(makeKey_1(str) + makeKey_19(str)).substr(2, 24)
 399 }
 400 function makeKey_49(str) {
 401 return hex_md5(makeKey_4(str) + makeKey_0(str)).substr(3, 24)
 402 }
 403 function makeKey_50(str) {
 404 return hex_md5(makeKey_5(str) + makeKey_1(str)).substr(4, 24)
 405 }
 406 function makeKey_51(str) {
 407 return hex_md5(makeKey_3(str) + makeKey_4(str)).substr(1, 24)
 408 }
 409 function makeKey_52(str) {
 410 return hex_md5(makeKey_7(str) + makeKey_14(str)).substr(2, 24)
 411 }
 412 function makeKey_53(str) {
 413 return hex_md5(makeKey_12(str) + makeKey_15(str)).substr(3, 24)
 414 }
 415 function makeKey_54(str) {
 416 return hex_md5(makeKey_14(str) + makeKey_16(str)).substr(4, 24)
 417 }
 418 function makeKey_55(str) {
 419 return hex_md5(makeKey_15(str) + makeKey_9(str)).substr(3, 24)
 420 }
 421 function makeKey_56(str) {
 422 return hex_md5(makeKey_16(str) + makeKey_10(str)).substr(4, 24)
 423 }
 424 function makeKey_57(str) {
 425 return hex_md5(makeKey_9(str) + makeKey_17(str)).substr(1, 24)
 426 }
 427 function makeKey_58(str) {
 428 return hex_md5(makeKey_10(str) + makeKey_18(str)).substr(2, 24)
 429 }
 430 function makeKey_59(str) {
 431 return hex_md5(makeKey_17(str) + makeKey_19(str)).substr(3, 24)
 432 }
 433 function makeKey_60(str) {
 434 return hex_md5(makeKey_18(str) + makeKey_0(str)).substr(1, 24)
 435 }
 436 function makeKey_61(str) {
 437 return hex_md5(makeKey_19(str) + makeKey_1(str)).substr(2, 24)
 438 }
 439 function makeKey_62(str) {
 440 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(3, 24)
 441 }
 442 function makeKey_63(str) {
 443 return hex_md5(makeKey_1(str) + makeKey_19(str)).substr(4, 24)
 444 }
 445 function makeKey_64(str) {
 446 return hex_md5(makeKey_4(str) + makeKey_0(str)).substr(3, 24)
 447 }
 448 function makeKey_65(str) {
 449 return hex_md5(makeKey_14(str) + makeKey_1(str)).substr(1, 24)
 450 }
 451 function makeKey_66(str) {
 452 return hex_md5(makeKey_15(str) + makeKey_4(str)).substr(2, 24)
 453 }
 454 function makeKey_67(str) {
 455 return hex_md5(makeKey_16(str) + makeKey_5(str)).substr(3, 24)
 456 }
 457 function makeKey_68(str) {
 458 return hex_md5(makeKey_9(str) + makeKey_3(str)).substr(4, 24)
 459 }
 460 function makeKey_69(str) {
 461 return hex_md5(makeKey_10(str) + makeKey_7(str)).substr(1, 24)
 462 }
 463 function makeKey_70(str) {
 464 return hex_md5(makeKey_17(str) + makeKey_0(str)).substr(2, 24)
 465 }
 466 function makeKey_71(str) {
 467 return hex_md5(makeKey_18(str) + makeKey_1(str)).substr(3, 24)
 468 }
 469 function makeKey_72(str) {
 470 return hex_md5(makeKey_19(str) + makeKey_4(str)).substr(4, 24)
 471 }
 472 function makeKey_73(str) {
 473 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(1, 24)
 474 }
 475 function makeKey_74(str) {
 476 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(2, 24)
 477 }
 478 function makeKey_75(str) {
 479 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(3, 24)
 480 }
 481 function makeKey_76(str) {
 482 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(4, 24)
 483 }
 484 function makeKey_77(str) {
 485 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(3, 24)
 486 }
 487 function makeKey_78(str) {
 488 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(4, 24)
 489 }
 490 function makeKey_79(str) {
 491 return hex_md5(makeKey_10(str) + makeKey_9(str)).substr(1, 24)
 492 }
 493 function makeKey_80(str) {
 494 return hex_md5(makeKey_17(str) + makeKey_10(str)).substr(2, 24)
 495 }
 496 function makeKey_81(str) {
 497 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(3, 24)
 498 }
 499 function makeKey_82(str) {
 500 return hex_md5(makeKey_14(str) + makeKey_18(str)).substr(1, 24)
 501 }
 502 function makeKey_83(str) {
 503 return hex_md5(makeKey_15(str) + makeKey_19(str)).substr(4, 24)
 504 }
 505 function makeKey_84(str) {
 506 return hex_md5(makeKey_16(str) + makeKey_0(str)).substr(1, 24)
 507 }
 508 function makeKey_85(str) {
 509 return hex_md5(makeKey_9(str) + makeKey_1(str)).substr(2, 24)
 510 }
 511 function makeKey_86(str) {
 512 return hex_md5(makeKey_10(str) + makeKey_4(str)).substr(3, 24)
 513 }
 514 function makeKey_87(str) {
 515 return hex_md5(makeKey_14(str) + makeKey_14(str)).substr(4, 24)
 516 }
 517 function makeKey_88(str) {
 518 return hex_md5(makeKey_15(str) + makeKey_15(str)).substr(1, 24)
 519 }
 520 function makeKey_89(str) {
 521 return hex_md5(makeKey_16(str) + makeKey_16(str)).substr(2, 24)
 522 }
 523 function makeKey_90(str) {
 524 return hex_md5(makeKey_9(str) + makeKey_9(str)).substr(3, 24)
 525 }
 526 function makeKey_91(str) {
 527 return hex_md5(makeKey_10(str) + makeKey_10(str)).substr(4, 24)
 528 }
 529 function makeKey_92(str) {
 530 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(3, 24)
 531 }
 532 function makeKey_93(str) {
 533 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
 534 }
 535 function makeKey_94(str) {
 536 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(1, 24)
 537 }
 538 function makeKey_95(str) {
 539 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(2, 24)
 540 }
 541 function makeKey_96(str) {
 542 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(3, 24)
 543 }
 544 function makeKey_97(str) {
 545 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(4, 24)
 546 }
 547 function makeKey_98(str) {
 548 return hex_md5(makeKey_5(str) + makeKey_5(str)).substr(3, 24)
 549 }
 550 function makeKey_99(str) {
 551 return hex_md5(makeKey_3(str) + makeKey_3(str)).substr(4, 24)
 552 }
 553 function makeKey_100(str) {
 554 return hex_md5(makeKey_7(str) + makeKey_3(str)).substr(1, 24)
 555 }
 556 function makeKey_101(str) {
 557 return hex_md5(makeKey_10(str) + makeKey_7(str)).substr(2, 24)
 558 }
 559 function makeKey_102(str) {
 560 return hex_md5(makeKey_17(str) + makeKey_18(str)).substr(1, 24)
 561 }
 562 function makeKey_103(str) {
 563 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(2, 24)
 564 }
 565 function makeKey_104(str) {
 566 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(3, 24)
 567 }
 568 function makeKey_105(str) {
 569 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(4, 24)
 570 }
 571 function makeKey_106(str) {
 572 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(1, 24)
 573 }
 574 function makeKey_107(str) {
 575 return hex_md5(makeKey_14(str) + makeKey_14(str)).substr(2, 24)
 576 }
 577 function makeKey_108(str) {
 578 return hex_md5(makeKey_15(str) + makeKey_15(str)).substr(3, 24)
 579 }
 580 function makeKey_109(str) {
 581 return hex_md5(makeKey_16(str) + makeKey_16(str)).substr(4, 24)
 582 }
 583 function makeKey_110(str) {
 584 return hex_md5(makeKey_9(str) + makeKey_9(str)).substr(1, 24)
 585 }
 586 function makeKey_111(str) {
 587 return hex_md5(makeKey_10(str) + makeKey_10(str)).substr(2, 24)
 588 }
 589 function makeKey_112(str) {
 590 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(3, 24)
 591 }
 592 function makeKey_113(str) {
 593 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
 594 }
 595 function makeKey_114(str) {
 596 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(3, 24)
 597 }
 598 function makeKey_115(str) {
 599 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(4, 24)
 600 }
 601 function makeKey_116(str) {
 602 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(1, 24)
 603 }
 604 function makeKey_117(str) {
 605 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(2, 24)
 606 }
 607 function makeKey_118(str) {
 608 return hex_md5(makeKey_5(str) + makeKey_15(str)).substr(3, 24)
 609 }
 610 function makeKey_119(str) {
 611 return hex_md5(makeKey_3(str) + makeKey_16(str)).substr(1, 24)
 612 }
 613 function makeKey_120(str) {
 614 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(1, 24)
 615 }
 616 function makeKey_121(str) {
 617 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(2, 24)
 618 }
 619 function makeKey_122(str) {
 620 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(3, 24)
 621 }
 622 function makeKey_123(str) {
 623 return hex_md5(makeKey_4(str) + makeKey_18(str)).substr(4, 24)
 624 }
 625 function makeKey_124(str) {
 626 return hex_md5(makeKey_5(str) + makeKey_19(str)).substr(1, 24)
 627 }
 628 function makeKey_125(str) {
 629 return hex_md5(makeKey_3(str) + makeKey_0(str)).substr(2, 24)
 630 }
 631 function makeKey_126(str) {
 632 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(3, 24)
 633 }
 634 function makeKey_127(str) {
 635 return hex_md5(makeKey_3(str) + makeKey_4(str)).substr(4, 24)
 636 }
 637 function makeKey_128(str) {
 638 return hex_md5(makeKey_7(str) + makeKey_5(str)).substr(1, 24)
 639 }
 640 function makeKey_129(str) {
 641 return hex_md5(makeKey_8(str) + makeKey_3(str)).substr(2, 24)
 642 }
 643 function makeKey_130(str) {
 644 return hex_md5(makeKey_14(str) + makeKey_7(str)).substr(3, 24)
 645 }
 646 function makeKey_131(str) {
 647 return hex_md5(makeKey_15(str) + makeKey_10(str)).substr(4, 24)
 648 }
 649 function makeKey_132(str) {
 650 return hex_md5(makeKey_16(str) + makeKey_17(str)).substr(3, 24)
 651 }
 652 function makeKey_133(str) {
 653 return hex_md5(makeKey_9(str) + makeKey_18(str)).substr(4, 24)
 654 }
 655 function makeKey_134(str) {
 656 return hex_md5(makeKey_10(str) + makeKey_19(str)).substr(1, 24)
 657 }
 658 function makeKey_135(str) {
 659 return hex_md5(makeKey_17(str) + makeKey_0(str)).substr(2, 24)
 660 }
 661 function makeKey_136(str) {
 662 return hex_md5(makeKey_18(str) + makeKey_1(str)).substr(1, 24)
 663 }
 664 function makeKey_137(str) {
 665 return hex_md5(makeKey_19(str) + makeKey_14(str)).substr(2, 24)
 666 }
 667 function makeKey_138(str) {
 668 return hex_md5(makeKey_0(str) + makeKey_15(str)).substr(3, 24)
 669 }
 670 function makeKey_139(str) {
 671 return hex_md5(makeKey_1(str) + makeKey_16(str)).substr(4, 24)
 672 }
 673 function makeKey_140(str) {
 674 return hex_md5(makeKey_4(str) + makeKey_9(str)).substr(1, 24)
 675 }
 676 function makeKey_141(str) {
 677 return hex_md5(makeKey_5(str) + makeKey_10(str)).substr(2, 24)
 678 }
 679 function makeKey_142(str) {
 680 return hex_md5(makeKey_3(str) + makeKey_17(str)).substr(3, 24)
 681 }
 682 function makeKey_143(str) {
 683 return hex_md5(makeKey_7(str) + makeKey_18(str)).substr(4, 24)
 684 }
 685 function makeKey_144(str) {
 686 return hex_md5(makeKey_17(str) + makeKey_19(str)).substr(1, 24)
 687 }
 688 function makeKey_145(str) {
 689 return hex_md5(makeKey_18(str) + makeKey_0(str)).substr(2, 24)
 690 }
 691 function makeKey_146(str) {
 692 return hex_md5(makeKey_19(str) + makeKey_1(str)).substr(3, 24)
 693 }
 694 function makeKey_147(str) {
 695 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(4, 24)
 696 }
 697 function makeKey_148(str) {
 698 return hex_md5(makeKey_1(str) + makeKey_5(str)).substr(3, 24)
 699 }
 700 function makeKey_149(str) {
 701 return hex_md5(makeKey_4(str) + makeKey_3(str)).substr(4, 24)
 702 }
 703 function makeKey_150(str) {
 704 return hex_md5(makeKey_14(str) + makeKey_19(str)).substr(1, 24)
 705 }
 706 function makeKey_151(str) {
 707 return hex_md5(makeKey_15(str) + makeKey_0(str)).substr(2, 24)
 708 }
 709 function makeKey_152(str) {
 710 return hex_md5(makeKey_16(str) + makeKey_1(str)).substr(3, 24)
 711 }
 712 function makeKey_153(str) {
 713 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(1, 24)
 714 }
 715 function makeKey_154(str) {
 716 return hex_md5(makeKey_10(str) + makeKey_5(str)).substr(1, 24)
 717 }
 718 function makeKey_155(str) {
 719 return hex_md5(makeKey_17(str) + makeKey_3(str)).substr(2, 24)
 720 }
 721 function makeKey_156(str) {
 722 return hex_md5(makeKey_18(str) + makeKey_7(str)).substr(3, 24)
 723 }
 724 function makeKey_157(str) {
 725 return hex_md5(makeKey_19(str) + makeKey_3(str)).substr(4, 24)
 726 }
 727 function makeKey_158(str) {
 728 return hex_md5(makeKey_0(str) + makeKey_7(str)).substr(1, 24)
 729 }
 730 function makeKey_159(str) {
 731 return hex_md5(makeKey_1(str) + makeKey_8(str)).substr(2, 24)
 732 }
 733 function makeKey_160(str) {
 734 return hex_md5(makeKey_4(str) + makeKey_14(str)).substr(3, 24)
 735 }
 736 function makeKey_161(str) {
 737 return hex_md5(makeKey_19(str) + makeKey_15(str)).substr(4, 24)
 738 }
 739 function makeKey_162(str) {
 740 return hex_md5(makeKey_0(str) + makeKey_16(str)).substr(1, 24)
 741 }
 742 function makeKey_163(str) {
 743 return hex_md5(makeKey_1(str) + makeKey_9(str)).substr(2, 24)
 744 }
 745 function makeKey_164(str) {
 746 return hex_md5(makeKey_4(str) + makeKey_10(str)).substr(3, 24)
 747 }
 748 function makeKey_165(str) {
 749 return hex_md5(makeKey_5(str) + makeKey_17(str)).substr(4, 24)
 750 }
 751 function makeKey_166(str) {
 752 return hex_md5(makeKey_3(str) + makeKey_18(str)).substr(3, 24)
 753 }
 754 function makeKey_167(str) {
 755 return hex_md5(makeKey_7(str) + makeKey_19(str)).substr(4, 24)
 756 }
 757 function makeKey_168(str) {
 758 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(1, 24)
 759 }
 760 function makeKey_169(str) {
 761 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(2, 24)
 762 }
 763 function makeKey_170(str) {
 764 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(3, 24)
 765 }
 766 function makeKey_171(str) {
 767 return hex_md5(makeKey_17(str) + makeKey_5(str)).substr(1, 24)
 768 }
 769 function makeKey_172(str) {
 770 return hex_md5(makeKey_18(str) + makeKey_3(str)).substr(2, 24)
 771 }
 772 function makeKey_173(str) {
 773 return hex_md5(makeKey_19(str) + makeKey_7(str)).substr(3, 24)
 774 }
 775 function makeKey_174(str) {
 776 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(4, 24)
 777 }
 778 function makeKey_175(str) {
 779 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(1, 24)
 780 }
 781 function makeKey_176(str) {
 782 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(2, 24)
 783 }
 784 function makeKey_177(str) {
 785 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(3, 24)
 786 }
 787 function makeKey_178(str) {
 788 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(4, 24)
 789 }
 790 function makeKey_179(str) {
 791 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(1, 24)
 792 }
 793 function makeKey_180(str) {
 794 return hex_md5(makeKey_18(str) + makeKey_14(str)).substr(3, 24)
 795 }
 796 function makeKey_181(str) {
 797 return hex_md5(makeKey_19(str) + makeKey_15(str)).substr(1, 24)
 798 }
 799 function makeKey_182(str) {
 800 return hex_md5(makeKey_0(str) + makeKey_16(str)).substr(2, 24)
 801 }
 802 function makeKey_183(str) {
 803 return hex_md5(makeKey_1(str) + makeKey_9(str)).substr(3, 24)
 804 }
 805 function makeKey_184(str) {
 806 return hex_md5(makeKey_4(str) + makeKey_10(str)).substr(4, 24)
 807 }
 808 function makeKey_185(str) {
 809 return hex_md5(makeKey_14(str) + makeKey_17(str)).substr(3, 24)
 810 }
 811 function makeKey_186(str) {
 812 return hex_md5(makeKey_15(str) + makeKey_18(str)).substr(4, 24)
 813 }
 814 function makeKey_187(str) {
 815 return hex_md5(makeKey_16(str) + makeKey_19(str)).substr(4, 24)
 816 }
 817 function makeKey_188(str) {
 818 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(1, 24)
 819 }
 820 function makeKey_189(str) {
 821 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(2, 24)
 822 }
 823 function makeKey_190(str) {
 824 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(3, 24)
 825 }
 826 function makeKey_191(str) {
 827 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(4, 24)
 828 }
 829 function makeKey_192(str) {
 830 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(1, 24)
 831 }
 832 function makeKey_193(str) {
 833 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(2, 24)
 834 }
 835 function makeKey_194(str) {
 836 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(3, 24)
 837 }
 838 function makeKey_195(str) {
 839 return hex_md5(makeKey_4(str) + makeKey_14(str)).substr(4, 24)
 840 }
 841 function makeKey_196(str) {
 842 return hex_md5(makeKey_5(str) + makeKey_15(str)).substr(3, 24)
 843 }
 844 function makeKey_197(str) {
 845 return hex_md5(makeKey_3(str) + makeKey_16(str)).substr(4, 24)
 846 }
 847 function makeKey_198(str) {
 848 return hex_md5(makeKey_3(str) + makeKey_9(str)).substr(1, 24)
 849 }
 850 function makeKey_199(str) {
 851 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(2, 24)
 852 }
 853 function makeKey_200(str) {
 854 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(2, 24)
 855 }
 856 function makeKey_201(str) {
 857 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(3, 24)
 858 }
 859 function makeKey_202(str) {
 860 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(1, 24)
 861 }
 862 function makeKey_203(str) {
 863 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(2, 24)
 864 }
 865 function makeKey_204(str) {
 866 return hex_md5(makeKey_4(str) + makeKey_5(str)).substr(3, 24)
 867 }
 868 function makeKey_205(str) {
 869 return hex_md5(makeKey_14(str) + makeKey_3(str)).substr(4, 24)
 870 }
 871 function makeKey_206(str) {
 872 return hex_md5(makeKey_15(str) + makeKey_7(str)).substr(1, 24)
 873 }
 874 function makeKey_207(str) {
 875 return hex_md5(makeKey_16(str) + makeKey_17(str)).substr(2, 24)
 876 }
 877 function makeKey_208(str) {
 878 return hex_md5(makeKey_9(str) + makeKey_18(str)).substr(3, 24)
 879 }
 880 function makeKey_209(str) {
 881 return hex_md5(makeKey_10(str) + makeKey_19(str)).substr(4, 24)
 882 }
 883 function makeKey_210(str) {
 884 return hex_md5(makeKey_17(str) + makeKey_0(str)).substr(1, 24)
 885 }
 886 function makeKey_211(str) {
 887 return hex_md5(makeKey_18(str) + makeKey_1(str)).substr(3, 24)
 888 }
 889 function makeKey_212(str) {
 890 return hex_md5(makeKey_19(str) + makeKey_4(str)).substr(1, 24)
 891 }
 892 function makeKey_213(str) {
 893 return hex_md5(makeKey_0(str) + makeKey_14(str)).substr(2, 24)
 894 }
 895 function makeKey_214(str) {
 896 return hex_md5(makeKey_1(str) + makeKey_15(str)).substr(3, 24)
 897 }
 898 function makeKey_215(str) {
 899 return hex_md5(makeKey_4(str) + makeKey_16(str)).substr(4, 24)
 900 }
 901 function makeKey_216(str) {
 902 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(3, 24)
 903 }
 904 function makeKey_217(str) {
 905 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(4, 24)
 906 }
 907 function makeKey_218(str) {
 908 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(4, 24)
 909 }
 910 function makeKey_219(str) {
 911 return hex_md5(makeKey_4(str) + makeKey_18(str)).substr(1, 24)
 912 }
 913 function makeKey_220(str) {
 914 return hex_md5(makeKey_5(str) + makeKey_19(str)).substr(2, 24)
 915 }
 916 function makeKey_221(str) {
 917 return hex_md5(makeKey_3(str) + makeKey_0(str)).substr(3, 24)
 918 }
 919 function makeKey_222(str) {
 920 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(4, 24)
 921 }
 922 function makeKey_223(str) {
 923 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(1, 24)
 924 }
 925 function makeKey_224(str) {
 926 return hex_md5(makeKey_1(str) + makeKey_5(str)).substr(2, 24)
 927 }
 928 function makeKey_225(str) {
 929 return hex_md5(makeKey_4(str) + makeKey_3(str)).substr(3, 24)
 930 }
 931 function makeKey_226(str) {
 932 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(4, 24)
 933 }
 934 function makeKey_227(str) {
 935 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(2, 24)
 936 }
 937 function makeKey_228(str) {
 938 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(3, 24)
 939 }
 940 function makeKey_229(str) {
 941 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(1, 24)
 942 }
 943 function makeKey_230(str) {
 944 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(2, 24)
 945 }
 946 function makeKey_231(str) {
 947 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(3, 24)
 948 }
 949 function makeKey_232(str) {
 950 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(4, 24)
 951 }
 952 function makeKey_233(str) {
 953 return hex_md5(makeKey_10(str) + makeKey_14(str)).substr(1, 24)
 954 }
 955 function makeKey_234(str) {
 956 return hex_md5(makeKey_17(str) + makeKey_15(str)).substr(2, 24)
 957 }
 958 function makeKey_235(str) {
 959 return hex_md5(makeKey_18(str) + makeKey_16(str)).substr(3, 24)
 960 }
 961 function makeKey_236(str) {
 962 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(4, 24)
 963 }
 964 function makeKey_237(str) {
 965 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(1, 24)
 966 }
 967 function makeKey_238(str) {
 968 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(3, 24)
 969 }
 970 function makeKey_239(str) {
 971 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(1, 24)
 972 }
 973 function makeKey_240(str) {
 974 return hex_md5(makeKey_14(str) + makeKey_0(str)).substr(2, 24)
 975 }
 976 function makeKey_241(str) {
 977 return hex_md5(makeKey_15(str) + makeKey_1(str)).substr(3, 24)
 978 }
 979 function makeKey_242(str) {
 980 return hex_md5(makeKey_16(str) + makeKey_4(str)).substr(4, 24)
 981 }
 982 function makeKey_243(str) {
 983 return hex_md5(makeKey_9(str) + makeKey_5(str)).substr(3, 24)
 984 }
 985 function makeKey_244(str) {
 986 return hex_md5(makeKey_10(str) + makeKey_3(str)).substr(4, 24)
 987 }
 988 function makeKey_245(str) {
 989 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(4, 24)
 990 }
 991 function makeKey_246(str) {
 992 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(2, 24)
 993 }
 994 function makeKey_247(str) {
 995 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(3, 24)
 996 }
 997 function makeKey_248(str) {
 998 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(1, 24)
 999 }
1000 function makeKey_249(str) {
1001 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(2, 24)
1002 }
1003 function makeKey_250(str) {
1004 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(3, 24)
1005 }
1006 function makeKey_251(str) {
1007 return hex_md5(makeKey_19(str) + makeKey_4(str)).substr(4, 24)
1008 }
1009 function makeKey_252(str) {
1010 return hex_md5(makeKey_0(str) + makeKey_14(str)).substr(1, 24)
1011 }
1012 function makeKey_253(str) {
1013 return hex_md5(makeKey_1(str) + makeKey_15(str)).substr(2, 24)
1014 }
1015 function makeKey_254(str) {
1016 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(3, 24)
1017 }
1018 function makeKey_255(str) {
1019 return hex_md5(makeKey_5(str) + makeKey_14(str)).substr(4, 24)
1020 }
1021 function makeKey_256(str) {
1022 return hex_md5(makeKey_3(str) + makeKey_15(str)).substr(1, 24)
1023 }
1024 function makeKey_257(str) {
1025 return hex_md5(makeKey_7(str) + makeKey_16(str)).substr(3, 24)
1026 }
1027 function makeKey_258(str) {
1028 return hex_md5(makeKey_0(str) + makeKey_9(str)).substr(1, 24)
1029 }
1030 function makeKey_259(str) {
1031 return hex_md5(makeKey_1(str) + makeKey_10(str)).substr(2, 24)
1032 }
1033 function makeKey_260(str) {
1034 return hex_md5(makeKey_4(str) + makeKey_17(str)).substr(3, 24)
1035 }
1036 function makeKey_261(str) {
1037 return hex_md5(makeKey_17(str) + makeKey_18(str)).substr(4, 24)
1038 }
1039 function makeKey_262(str) {
1040 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(3, 24)
1041 }
1042 function makeKey_263(str) {
1043 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(4, 24)
1044 }
1045 function makeKey_264(str) {
1046 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(4, 24)
1047 }
1048 function makeKey_265(str) {
1049 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(1, 24)
1050 }
1051 function makeKey_266(str) {
1052 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(2, 24)
1053 }
1054 function makeKey_267(str) {
1055 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(3, 24)
1056 }
1057 function makeKey_268(str) {
1058 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(4, 24)
1059 }
1060 function makeKey_269(str) {
1061 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(1, 24)
1062 }
1063 function makeKey_270(str) {
1064 return hex_md5(makeKey_18(str) + makeKey_14(str)).substr(2, 24)
1065 }
1066 function makeKey_271(str) {
1067 return hex_md5(makeKey_19(str) + makeKey_15(str)).substr(3, 24)
1068 }
1069 function makeKey_272(str) {
1070 return hex_md5(makeKey_0(str) + makeKey_16(str)).substr(4, 24)
1071 }
1072 function makeKey_273(str) {
1073 return hex_md5(makeKey_1(str) + makeKey_9(str)).substr(3, 24)
1074 }
1075 function makeKey_274(str) {
1076 return hex_md5(makeKey_19(str) + makeKey_1(str)).substr(4, 24)
1077 }
1078 function makeKey_275(str) {
1079 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(1, 24)
1080 }
1081 function makeKey_276(str) {
1082 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(2, 24)
1083 }
1084 function makeKey_277(str) {
1085 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(2, 24)
1086 }
1087 function makeKey_278(str) {
1088 return hex_md5(makeKey_5(str) + makeKey_4(str)).substr(3, 24)
1089 }
1090 function makeKey_279(str) {
1091 return hex_md5(makeKey_3(str) + makeKey_5(str)).substr(1, 24)
1092 }
1093 function makeKey_280(str) {
1094 return hex_md5(makeKey_7(str) + makeKey_3(str)).substr(2, 24)
1095 }
1096 function makeKey_281(str) {
1097 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(3, 24)
1098 }
1099 function makeKey_282(str) {
1100 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
1101 }
1102 function makeKey_283(str) {
1103 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
1104 }
1105 function makeKey_284(str) {
1106 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(2, 24)
1107 }
1108 function makeKey_285(str) {
1109 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(3, 24)
1110 }
1111 function makeKey_286(str) {
1112 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(4, 24)
1113 }
1114 function makeKey_287(str) {
1115 return hex_md5(makeKey_14(str) + makeKey_4(str)).substr(1, 24)
1116 }
1117 function makeKey_288(str) {
1118 return hex_md5(makeKey_15(str) + makeKey_14(str)).substr(3, 24)
1119 }
1120 function makeKey_289(str) {
1121 return hex_md5(makeKey_16(str) + makeKey_15(str)).substr(1, 24)
1122 }
1123 function makeKey_290(str) {
1124 return hex_md5(makeKey_9(str) + makeKey_16(str)).substr(2, 24)
1125 }
1126 function makeKey_291(str) {
1127 return hex_md5(makeKey_10(str) + makeKey_9(str)).substr(3, 24)
1128 }
1129 function makeKey_292(str) {
1130 return hex_md5(makeKey_17(str) + makeKey_10(str)).substr(4, 24)
1131 }
1132 function makeKey_293(str) {
1133 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(3, 24)
1134 }
1135 function makeKey_294(str) {
1136 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
1137 }
1138 function makeKey_295(str) {
1139 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(4, 24)
1140 }
1141 function makeKey_296(str) {
1142 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(1, 24)
1143 }
1144 function makeKey_297(str) {
1145 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(2, 24)
1146 }
1147 function makeKey_298(str) {
1148 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(3, 24)
1149 }
1150 function makeKey_299(str) {
1151 return hex_md5(makeKey_5(str) + makeKey_5(str)).substr(4, 24)
1152 }
1153 function makeKey_300(str) {
1154 return hex_md5(makeKey_3(str) + makeKey_3(str)).substr(1, 24)
1155 }
1156 function makeKey_301(str) {
1157 return hex_md5(makeKey_7(str) + makeKey_7(str)).substr(2, 24)
1158 }
1159 function makeKey_302(str) {
1160 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(3, 24)
1161 }
1162 function makeKey_303(str) {
1163 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(4, 24)
1164 }
1165 function makeKey_304(str) {
1166 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(3, 24)
1167 }
1168 function makeKey_305(str) {
1169 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(4, 24)
1170 }
1171 function makeKey_306(str) {
1172 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(1, 24)
1173 }
1174 function makeKey_307(str) {
1175 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(2, 24)
1176 }
1177 function makeKey_308(str) {
1178 return hex_md5(makeKey_14(str) + makeKey_14(str)).substr(2, 24)
1179 }
1180 function makeKey_309(str) {
1181 return hex_md5(makeKey_15(str) + makeKey_15(str)).substr(3, 24)
1182 }
1183 function makeKey_310(str) {
1184 return hex_md5(makeKey_16(str) + makeKey_16(str)).substr(1, 24)
1185 }
1186 function makeKey_311(str) {
1187 return hex_md5(makeKey_9(str) + makeKey_9(str)).substr(2, 24)
1188 }
1189 function makeKey_312(str) {
1190 return hex_md5(makeKey_10(str) + makeKey_10(str)).substr(3, 24)
1191 }
1192 function makeKey_313(str) {
1193 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(4, 24)
1194 }
1195 function makeKey_314(str) {
1196 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(1, 24)
1197 }
1198 function makeKey_315(str) {
1199 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(2, 24)
1200 }
1201 function makeKey_316(str) {
1202 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(3, 24)
1203 }
1204 function makeKey_317(str) {
1205 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(4, 24)
1206 }
1207 function makeKey_318(str) {
1208 return hex_md5(makeKey_5(str) + makeKey_5(str)).substr(1, 24)
1209 }
1210 function makeKey_319(str) {
1211 return hex_md5(makeKey_3(str) + makeKey_3(str)).substr(3, 24)
1212 }
1213 function makeKey_320(str) {
1214 return hex_md5(makeKey_7(str) + makeKey_7(str)).substr(1, 24)
1215 }
1216 function makeKey_321(str) {
1217 return hex_md5(makeKey_17(str) + makeKey_17(str)).substr(2, 24)
1218 }
1219 function makeKey_322(str) {
1220 return hex_md5(makeKey_18(str) + makeKey_18(str)).substr(3, 24)
1221 }
1222 function makeKey_323(str) {
1223 return hex_md5(makeKey_19(str) + makeKey_19(str)).substr(4, 24)
1224 }
1225 function makeKey_324(str) {
1226 return hex_md5(makeKey_0(str) + makeKey_0(str)).substr(3, 24)
1227 }
1228 function makeKey_325(str) {
1229 return hex_md5(makeKey_1(str) + makeKey_1(str)).substr(4, 24)
1230 }
1231 function makeKey_326(str) {
1232 return hex_md5(makeKey_4(str) + makeKey_4(str)).substr(4, 24)
1233 }
1234 function makeKey_327(str) {
1235 return hex_md5(makeKey_19(str) + makeKey_14(str)).substr(1, 24)
1236 }
1237 function makeKey_328(str) {
1238 return hex_md5(makeKey_0(str) + makeKey_15(str)).substr(2, 24)
1239 }
1240 function makeKey_329(str) {
1241 return hex_md5(makeKey_1(str) + makeKey_16(str)).substr(3, 24)
1242 }
1243 function makeKey_330(str) {
1244 return hex_md5(makeKey_4(str) + makeKey_9(str)).substr(4, 24)
1245 }
1246 function makeKey_331(str) {
1247 return hex_md5(makeKey_19(str) + makeKey_10(str)).substr(1, 24)
1248 }
1249 function makeKey_332(str) {
1250 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(2, 24)
1251 }
1252 function makeKey_333(str) {
1253 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(3, 24)
1254 }
1255 function makeKey_334(str) {
1256 return hex_md5(makeKey_4(str) + makeKey_18(str)).substr(4, 24)
1257 }
1258 function makeKey_335(str) {
1259 return hex_md5(makeKey_5(str) + makeKey_19(str)).substr(3, 24)
1260 }
1261 function makeKey_336(str) {
1262 return hex_md5(makeKey_3(str) + makeKey_0(str)).substr(4, 24)
1263 }
1264 function makeKey_337(str) {
1265 return hex_md5(makeKey_7(str) + makeKey_1(str)).substr(2, 24)
1266 }
1267 function makeKey_338(str) {
1268 return hex_md5(makeKey_0(str) + makeKey_4(str)).substr(3, 24)
1269 }
1270 function makeKey_339(str) {
1271 return hex_md5(makeKey_1(str) + makeKey_5(str)).substr(1, 24)
1272 }
1273 function makeKey_340(str) {
1274 return hex_md5(makeKey_4(str) + makeKey_3(str)).substr(2, 24)
1275 }
1276 function makeKey_341(str) {
1277 return hex_md5(makeKey_17(str) + makeKey_7(str)).substr(3, 24)
1278 }
1279 function makeKey_342(str) {
1280 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
1281 }
1282 function makeKey_343(str) {
1283 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
1284 }
1285 function makeKey_344(str) {
1286 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(2, 24)
1287 }
1288 function makeKey_345(str) {
1289 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(3, 24)
1290 }
1291 function makeKey_346(str) {
1292 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(4, 24)
1293 }
1294 function makeKey_347(str) {
1295 return hex_md5(makeKey_9(str) + makeKey_4(str)).substr(1, 24)
1296 }
1297 function makeKey_348(str) {
1298 return hex_md5(makeKey_10(str) + makeKey_14(str)).substr(3, 24)
1299 }
1300 function makeKey_349(str) {
1301 return hex_md5(makeKey_17(str) + makeKey_15(str)).substr(1, 24)
1302 }
1303 function makeKey_350(str) {
1304 return hex_md5(makeKey_18(str) + makeKey_16(str)).substr(2, 24)
1305 }
1306 function makeKey_351(str) {
1307 return hex_md5(makeKey_19(str) + makeKey_9(str)).substr(3, 24)
1308 }
1309 function makeKey_352(str) {
1310 return hex_md5(makeKey_0(str) + makeKey_10(str)).substr(4, 24)
1311 }
1312 function makeKey_353(str) {
1313 return hex_md5(makeKey_1(str) + makeKey_17(str)).substr(3, 24)
1314 }
1315 function makeKey_354(str) {
1316 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(4, 24)
1317 }
1318 function makeKey_355(str) {
1319 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(4, 24)
1320 }
1321 function makeKey_356(str) {
1322 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(1, 24)
1323 }
1324 function makeKey_357(str) {
1325 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(2, 24)
1326 }
1327 function makeKey_358(str) {
1328 return hex_md5(makeKey_4(str) + makeKey_5(str)).substr(3, 24)
1329 }
1330 function makeKey_359(str) {
1331 return hex_md5(makeKey_5(str) + makeKey_3(str)).substr(4, 24)
1332 }
1333 function makeKey_360(str) {
1334 return hex_md5(makeKey_3(str) + makeKey_7(str)).substr(2, 24)
1335 }
1336 function makeKey_361(str) {
1337 return hex_md5(makeKey_7(str) + makeKey_17(str)).substr(3, 24)
1338 }
1339 function makeKey_362(str) {
1340 return hex_md5(makeKey_17(str) + makeKey_18(str)).substr(1, 24)
1341 }
1342 function makeKey_363(str) {
1343 return hex_md5(makeKey_18(str) + makeKey_19(str)).substr(2, 24)
1344 }
1345 function makeKey_364(str) {
1346 return hex_md5(makeKey_19(str) + makeKey_0(str)).substr(3, 24)
1347 }
1348 function makeKey_365(str) {
1349 return hex_md5(makeKey_0(str) + makeKey_1(str)).substr(4, 24)
1350 }
1351 function makeKey_366(str) {
1352 return hex_md5(makeKey_1(str) + makeKey_4(str)).substr(1, 24)
1353 }
1354 function makeKey_367(str) {
1355 return hex_md5(makeKey_4(str) + makeKey_7(str)).substr(2, 24)
1356 }
1357 function makeKey_368(str) {
1358 return hex_md5(makeKey_14(str) + makeKey_17(str)).substr(3, 24)
1359 }
1360 function makeKey_369(str) {
1361 return hex_md5(makeKey_15(str) + makeKey_18(str)).substr(4, 24)
1362 }
1363 function makeKey_370(str) {
1364 return hex_md5(makeKey_16(str) + makeKey_19(str)).substr(1, 24)
1365 }
1366 function makeKey_371(str) {
1367 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(3, 24)
1368 }
1369 function makeKey_372(str) {
1370 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(1, 24)
1371 }
1372 function makeKey_373(str) {
1373 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(2, 24)
1374 }
1375 function makeKey_374(str) {
1376 return hex_md5(makeKey_19(str) + makeKey_17(str)).substr(3, 24)
1377 }
1378 function makeKey_375(str) {
1379 return hex_md5(makeKey_0(str) + makeKey_18(str)).substr(4, 24)
1380 }
1381 function makeKey_376(str) {
1382 return hex_md5(makeKey_1(str) + makeKey_19(str)).substr(3, 24)
1383 }
1384 function makeKey_377(str) {
1385 return hex_md5(makeKey_4(str) + makeKey_0(str)).substr(4, 24)
1386 }
1387 function makeKey_378(str) {
1388 return hex_md5(makeKey_5(str) + makeKey_1(str)).substr(4, 24)
1389 }
1390 function makeKey_379(str) {
1391 return hex_md5(makeKey_3(str) + makeKey_4(str)).substr(1, 24)
1392 }
1393 function makeKey_380(str) {
1394 return hex_md5(makeKey_7(str) + makeKey_9(str)).substr(2, 24)
1395 }
1396 function makeKey_381(str) {
1397 return hex_md5(makeKey_17(str) + makeKey_10(str)).substr(3, 24)
1398 }
1399 function makeKey_382(str) {
1400 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
1401 }
1402 function makeKey_383(str) {
1403 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
1404 }
1405 function makeKey_384(str) {
1406 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(2, 24)
1407 }
1408 function makeKey_385(str) {
1409 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(3, 24)
1410 }
1411 function makeKey_386(str) {
1412 return hex_md5(makeKey_4(str) + makeKey_1(str)).substr(4, 24)
1413 }
1414 function makeKey_387(str) {
1415 return hex_md5(makeKey_17(str) + makeKey_1(str)).substr(2, 24)
1416 }
1417 function makeKey_388(str) {
1418 return hex_md5(makeKey_18(str) + makeKey_4(str)).substr(3, 24)
1419 }
1420 function makeKey_389(str) {
1421 return hex_md5(makeKey_19(str) + makeKey_7(str)).substr(1, 24)
1422 }
1423 function makeKey_390(str) {
1424 return hex_md5(makeKey_0(str) + makeKey_17(str)).substr(2, 24)
1425 }
1426 function makeKey_391(str) {
1427 return hex_md5(makeKey_1(str) + makeKey_18(str)).substr(3, 24)
1428 }
1429 function makeKey_392(str) {
1430 return hex_md5(makeKey_4(str) + makeKey_19(str)).substr(4, 24)
1431 }
1432 function makeKey_393(str) {
1433 return hex_md5(makeKey_9(str) + makeKey_0(str)).substr(1, 24)
1434 }
1435 function makeKey_394(str) {
1436 return hex_md5(makeKey_10(str) + makeKey_1(str)).substr(2, 24)
1437 }
1438 function makeKey_395(str) {
1439 return hex_md5(makeKey_17(str) + makeKey_4(str)).substr(3, 24)
1440 }
1441 function makeKey_396(str) {
1442 return hex_md5(makeKey_18(str) + makeKey_17(str)).substr(4, 24)
1443 }
1444 function makeKey_397(str) {
1445 return hex_md5(makeKey_19(str) + makeKey_18(str)).substr(1, 24)
1446 }
1447 function makeKey_398(str) {
1448 return hex_md5(makeKey_0(str) + makeKey_19(str)).substr(3, 24)
1449 }
1450 function makeKey_399(str) {
1451 return hex_md5(makeKey_1(str) + makeKey_0(str)).substr(1, 24)
1452 }
1453 var arrFun = [makeKey_0, makeKey_1, makeKey_2, makeKey_3, makeKey_4, makeKey_5, makeKey_6, makeKey_7, makeKey_8, makeKey_9, makeKey_10, makeKey_11, makeKey_12, makeKey_13, makeKey_14, makeKey_15, makeKey_16, makeKey_17, makeKey_18, makeKey_19, makeKey_20, makeKey_21, makeKey_22, makeKey_23, makeKey_24, makeKey_25, makeKey_26, makeKey_27, makeKey_28, makeKey_29, makeKey_30, makeKey_31, makeKey_32, makeKey_33, makeKey_34, makeKey_35, makeKey_36, makeKey_37, makeKey_38, makeKey_39, makeKey_40, makeKey_41, makeKey_42, makeKey_43, makeKey_44, makeKey_45, makeKey_46, makeKey_47, makeKey_48, makeKey_49, makeKey_50, makeKey_51, makeKey_52, makeKey_53, makeKey_54, makeKey_55, makeKey_56, makeKey_57, makeKey_58, makeKey_59, makeKey_60, makeKey_61, makeKey_62, makeKey_63, makeKey_64, makeKey_65, makeKey_66, makeKey_67, makeKey_68, makeKey_69, makeKey_70, makeKey_71, makeKey_72, makeKey_73, makeKey_74, makeKey_75, makeKey_76, makeKey_77, makeKey_78, makeKey_79, makeKey_80, makeKey_81, makeKey_82, makeKey_83, makeKey_84, makeKey_85, makeKey_86, makeKey_87, makeKey_88, makeKey_89, makeKey_90, makeKey_91, makeKey_92, makeKey_93, makeKey_94, makeKey_95, makeKey_96, makeKey_97, makeKey_98, makeKey_99, makeKey_100, makeKey_101, makeKey_102, makeKey_103, makeKey_104, makeKey_105, makeKey_106, makeKey_107, makeKey_108, makeKey_109, makeKey_110, makeKey_111, makeKey_112, makeKey_113, makeKey_114, makeKey_115, makeKey_116, makeKey_117, makeKey_118, makeKey_119, makeKey_120, makeKey_121, makeKey_122, makeKey_123, makeKey_124, makeKey_125, makeKey_126, makeKey_127, makeKey_128, makeKey_129, makeKey_130, makeKey_131, makeKey_132, makeKey_133, makeKey_134, makeKey_135, makeKey_136, makeKey_137, makeKey_138, makeKey_139, makeKey_140, makeKey_141, makeKey_142, makeKey_143, makeKey_144, makeKey_145, makeKey_146, makeKey_147, makeKey_148, makeKey_149, makeKey_150, makeKey_151, makeKey_152, makeKey_153, makeKey_154, makeKey_155, makeKey_156, makeKey_157, makeKey_158, makeKey_159, makeKey_160, makeKey_161, makeKey_162, makeKey_163, makeKey_164, makeKey_165, makeKey_166, makeKey_167, makeKey_168, makeKey_169, makeKey_170, makeKey_171, makeKey_172, makeKey_173, makeKey_174, makeKey_175, makeKey_176, makeKey_177, makeKey_178, makeKey_179, makeKey_180, makeKey_181, makeKey_182, makeKey_183, makeKey_184, makeKey_185, makeKey_186, makeKey_187, makeKey_188, makeKey_189, makeKey_190, makeKey_191, makeKey_192, makeKey_193, makeKey_194, makeKey_195, makeKey_196, makeKey_197, makeKey_198, makeKey_199, makeKey_200, makeKey_201, makeKey_202, makeKey_203, makeKey_204, makeKey_205, makeKey_206, makeKey_207, makeKey_208, makeKey_209, makeKey_210, makeKey_211, makeKey_212, makeKey_213, makeKey_214, makeKey_215, makeKey_216, makeKey_217, makeKey_218, makeKey_219, makeKey_220, makeKey_221, makeKey_222, makeKey_223, makeKey_224, makeKey_225, makeKey_226, makeKey_227, makeKey_228, makeKey_229, makeKey_230, makeKey_231, makeKey_232, makeKey_233, makeKey_234, makeKey_235, makeKey_236, makeKey_237, makeKey_238, makeKey_239, makeKey_240, makeKey_241, makeKey_242, makeKey_243, makeKey_244, makeKey_245, makeKey_246, makeKey_247, makeKey_248, makeKey_249, makeKey_250, makeKey_251, makeKey_252, makeKey_253, makeKey_254, makeKey_255, makeKey_256, makeKey_257, makeKey_258, makeKey_259, makeKey_260, makeKey_261, makeKey_262, makeKey_263, makeKey_264, makeKey_265, makeKey_266, makeKey_267, makeKey_268, makeKey_269, makeKey_270, makeKey_271, makeKey_272, makeKey_273, makeKey_274, makeKey_275, makeKey_276, makeKey_277, makeKey_278, makeKey_279, makeKey_280, makeKey_281, makeKey_282, makeKey_283, makeKey_284, makeKey_285, makeKey_286, makeKey_287, makeKey_288, makeKey_289, makeKey_290, makeKey_291, makeKey_292, makeKey_293, makeKey_294, makeKey_295, makeKey_296, makeKey_297, makeKey_298, makeKey_299, makeKey_300, makeKey_301, makeKey_302, makeKey_303, makeKey_304, makeKey_305, makeKey_306, makeKey_307, makeKey_308, makeKey_309, makeKey_310, makeKey_311, makeKey_312, makeKey_313, makeKey_314, makeKey_315, makeKey_316, makeKey_317, makeKey_318, makeKey_319, makeKey_320, makeKey_321, makeKey_322, makeKey_323, makeKey_324, makeKey_325, makeKey_326, makeKey_327, makeKey_328, makeKey_329, makeKey_330, makeKey_331, makeKey_332, makeKey_333, makeKey_334, makeKey_335, makeKey_336, makeKey_337, makeKey_338, makeKey_339, makeKey_340, makeKey_341, makeKey_342, makeKey_343, makeKey_344, makeKey_345, makeKey_346, makeKey_347, makeKey_348, makeKey_349, makeKey_350, makeKey_351, makeKey_352, makeKey_353, makeKey_354, makeKey_355, makeKey_356, makeKey_357, makeKey_358, makeKey_359, makeKey_360, makeKey_361, makeKey_362, makeKey_363, makeKey_364, makeKey_365, makeKey_366, makeKey_367, makeKey_368, makeKey_369, makeKey_370, makeKey_371, makeKey_372, makeKey_373, makeKey_374, makeKey_375, makeKey_376, makeKey_377, makeKey_378, makeKey_379, makeKey_380, makeKey_381, makeKey_382, makeKey_383, makeKey_384, makeKey_385, makeKey_386, makeKey_387, makeKey_388, makeKey_389, makeKey_390, makeKey_391, makeKey_392, makeKey_393, makeKey_394, makeKey_395, makeKey_396, makeKey_397, makeKey_398, makeKey_399];
1454 function getValue(cookie) {
1455 var funIndex = strToLong(cookie) % arrFun.length;
1456 var fun = arrFun[funIndex];
1457 return fun(cookie);
1458 }
1459 var hexcase = 0;
1460 var b64pad = "";
1461 var chrsz = 8;
1462 function hex_md5(s) {
1463 return binl2hex(core_md5(str2binl(s), s.length * chrsz));
1464 }
1465 function b64_md5(s) {
1466 return binl2b64(core_md5(str2binl(s), s.length * chrsz));
1467 }
1468 function str_md5(s) {
1469 return binl2str(core_md5(str2binl(s), s.length * chrsz));
1470 }
1471 function hex_hmac_md5(key, data) {
1472 return binl2hex(core_hmac_md5(key, data));
1473 }
1474 function b64_hmac_md5(key, data) {
1475 return binl2b64(core_hmac_md5(key, data));
1476 }
1477 function str_hmac_md5(key, data) {
1478 return binl2str(core_hmac_md5(key, data));
1479 }
1480 function md5_vm_test() {
1481 return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
1482 }
1483 function core_md5(x, len) {
1484 x[len >> 5] |= 0x80 << ((len) % 32);
1485 x[(((len + 64) >>> 9) << 4) + 14] = len;
1486 var a = 1732584193;
1487 var b = -271733879;
1488 var c = -1732584194;
1489 var d = 271733878;
1490 for (var i = 0; i < x.length; i += 16) {
1491     var olda = a;
1492     var oldb = b;
1493     var oldc = c;
1494     var oldd = d;
1495     a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
1496     d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
1497     c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
1498     b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
1499     a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
1500     d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
1501     c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
1502     b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
1503     a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
1504     d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
1505     c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
1506     b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
1507     a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
1508     d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
1509     c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
1510     b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
1511     a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
1512     d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
1513     c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
1514     b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
1515     a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
1516     d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
1517     c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
1518     b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
1519     a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
1520     d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
1521     c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
1522     b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
1523     a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
1524     d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
1525     c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
1526     b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
1527     a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
1528     d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
1529     c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
1530     b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
1531     a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
1532     d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
1533     c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
1534     b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
1535     a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
1536     d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
1537     c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
1538     b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
1539     a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
1540     d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
1541     c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
1542     b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
1543     a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
1544     d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
1545     c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
1546     b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
1547     a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
1548     d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
1549     c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
1550     b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
1551     a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
1552     d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
1553     c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
1554     b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
1555     a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
1556     d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
1557     c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
1558     b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
1559     a = safe_add(a, olda);
1560     b = safe_add(b, oldb);
1561     c = safe_add(c, oldc);
1562     d = safe_add(d, oldd);
1563 }
1564 return Array(a, b, c, d);
1565 }
1566 function md5_cmn(q, a, b, x, s, t) {
1567 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
1568 }
1569 function md5_ff(a, b, c, d, x, s, t) {
1570 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
1571 }
1572 function md5_gg(a, b, c, d, x, s, t) {
1573 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
1574 }
1575 function md5_hh(a, b, c, d, x, s, t) {
1576 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
1577 }
1578 function md5_ii(a, b, c, d, x, s, t) {
1579 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
1580 }
1581 function core_hmac_md5(key, data) {
1582 var bkey = str2binl(key);
1583 if (bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
1584 var ipad = Array(16),
1585 opad = Array(16);
1586 for (var i = 0; i < 16; i++) {
1587     ipad[i] = bkey[i] ^ 0x36363636;
1588     opad[i] = bkey[i] ^ 0x5C5C5C5C;
1589 }
1590 var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
1591 return core_md5(opad.concat(hash), 512 + 128);
1592 }
1593 function safe_add(x, y) {
1594 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
1595 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
1596 return (msw << 16) | (lsw & 0xFFFF);
1597 }
1598 function bit_rol(num, cnt) {
1599 return (num << cnt) | (num >>> (32 - cnt));
1600 }
1601 function str2binl(str) {
1602 var bin = Array();
1603 var mask = (1 << chrsz) - 1;
1604 for (var i = 0; i < str.length * chrsz; i += chrsz) bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);
1605 return bin;
1606 }
1607 function binl2str(bin) {
1608 var str = "";
1609 var mask = (1 << chrsz) - 1;
1610 for (var i = 0; i < bin.length * 32; i += chrsz) str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);
1611 return str;
1612 }
1613 function binl2hex(binarray) {
1614 var hex_tab = hexcase ? "0123456789ABCDEF": "0123456789abcdef";
1615 var str = "";
1616 for (var i = 0; i < binarray.length * 4; i++) {
1617     str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF);
1618 }
1619 return str;
1620 }
1621 function binl2b64(binarray) {
1622 var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
1623 var str = "";
1624 for (var i = 0; i < binarray.length * 4; i += 3) {
1625     var triplet = (((binarray[i >> 2] >> 8 * (i % 4)) & 0xFF) << 16) | (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 0xFF) << 8) | ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 0xFF);
1626     for (var j = 0; j < 4; j++) {
1627         if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
1628         else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
1629     }
1630 }
1631 return str;
1632 }
1633 
1634 function Base64() {  
1635    
1636     // private property  
1637     _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";  
1638    
1639     // public method for encoding  
1640     this.encode = function (input) {  
1641         var output = "";  
1642         var chr1, chr2, chr3, enc1, enc2, enc3, enc4;  
1643         var i = 0;  
1644         input = _utf8_encode(input);  
1645         while (i < input.length) {  
1646             chr1 = input.charCodeAt(i++);  
1647             chr2 = input.charCodeAt(i++);  
1648             chr3 = input.charCodeAt(i++);  
1649             enc1 = chr1 >> 2;  
1650             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
1651             enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
1652             enc4 = chr3 & 63;  
1653             if (isNaN(chr2)) {  
1654                 enc3 = enc4 = 64;  
1655             } else if (isNaN(chr3)) {  
1656                 enc4 = 64;  
1657             }  
1658             output = output +  
1659             _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +  
1660             _keyStr.charAt(enc3) + _keyStr.charAt(enc4);  
1661         }  
1662         return output;  
1663     }  
1664    
1665     // public method for decoding  
1666     this.decode = function (input) {  
1667         var output = "";  
1668         var chr1, chr2, chr3;  
1669         var enc1, enc2, enc3, enc4;  
1670         var i = 0;  
1671         input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  
1672         while (i < input.length) {  
1673             enc1 = _keyStr.indexOf(input.charAt(i++));  
1674             enc2 = _keyStr.indexOf(input.charAt(i++));  
1675             enc3 = _keyStr.indexOf(input.charAt(i++));  
1676             enc4 = _keyStr.indexOf(input.charAt(i++));  
1677             chr1 = (enc1 << 2) | (enc2 >> 4);  
1678             chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
1679             chr3 = ((enc3 & 3) << 6) | enc4;  
1680             output = output + String.fromCharCode(chr1);  
1681             if (enc3 != 64) {  
1682                 output = output + String.fromCharCode(chr2);  
1683             }  
1684             if (enc4 != 64) {  
1685                 output = output + String.fromCharCode(chr3);  
1686             }  
1687         }  
1688         output = _utf8_decode(output);  
1689         return output;  
1690     }  
1691    
1692     // private method for UTF-8 encoding  
1693     _utf8_encode = function (string) {  
1694         string = string.replace(/\r\n/g,"\n");  
1695         var utftext = "";  
1696         for (var n = 0; n < string.length; n++) {  
1697             var c = string.charCodeAt(n);  
1698             if (c < 128) {  
1699                 utftext += String.fromCharCode(c);  
1700             } else if((c > 127) && (c < 2048)) {  
1701                 utftext += String.fromCharCode((c >> 6) | 192);  
1702                 utftext += String.fromCharCode((c & 63) | 128);  
1703             } else {  
1704                 utftext += String.fromCharCode((c >> 12) | 224);  
1705                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
1706                 utftext += String.fromCharCode((c & 63) | 128);  
1707             }  
1708    
1709         }  
1710         return utftext;  
1711     }  
1712    
1713     // private method for UTF-8 decoding  
1714     _utf8_decode = function (utftext) {  
1715         var string = "";  
1716         var i = 0;  
1717         var c = c1 = c2 = 0;  
1718         while ( i < utftext.length ) {  
1719             c = utftext.charCodeAt(i);  
1720             if (c < 128) {  
1721                 string += String.fromCharCode(c);  
1722                 i++;  
1723             } else if((c > 191) && (c < 224)) {  
1724                 c2 = utftext.charCodeAt(i+1);  
1725                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
1726                 i += 2;  
1727             } else {  
1728                 c2 = utftext.charCodeAt(i+1);  
1729                 c3 = utftext.charCodeAt(i+2);  
1730                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
1731                 i += 3;  
1732             }  
1733         }  
1734         return string;  
1735     }  
1736 }
1737 
1738 /*   
1739  *   A   JavaScript   implementation   of   the   Secure   Hash   Algorithm,   SHA-1,   as   defined   
1740  *   in   FIPS   PUB   180-1   
1741  *   Version   2.1-BETA   Copyright   Paul   Johnston   2000   -   2002.   
1742  *   Other   contributors:   Greg   Holt,   Andrew   Kepert,   Ydnar,   Lostinet   
1743  *   Distributed   under   the   BSD   License   
1744  *   See   http://pajhome.org.uk/crypt/md5   for   details.   
1745  */
1746 /*   
1747  *   Configurable   variables.   You   may   need   to   tweak   these   to   be   compatible   with   
1748  *   the   server-side,   but   the   defaults   work   in   most   cases.   
1749  */
1750 var hexcase = 0; /*   hex   output   format.   0   -   lowercase;   1   -   uppercase                 */
1751 var b64pad = ""; /*   base-64   pad   character.   "="   for   strict   RFC   compliance       */
1752 var chrsz = 8; /*   bits   per   input   character.   8   -   ASCII;   16   -   Unicode             */
1753 
1754 /*   
1755  *   These   are   the   functions   you'll   usually   want   to   call   
1756  *   They   take   string   arguments   and   return   either   hex   or   base-64   encoded   strings   
1757  */
1758 function hex_sha1(s) {
1759     return binb2hex(core_sha1(str2binb(s), s.length * chrsz));
1760 }
1761 
1762 function b64_sha1(s) {
1763     return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
1764 }
1765 
1766 function str_sha1(s) {
1767     return binb2str(core_sha1(str2binb(s), s.length * chrsz));
1768 }
1769 
1770 function hex_hmac_sha1(key, data) {
1771     return binb2hex(core_hmac_sha1(key, data));
1772 }
1773 
1774 function b64_hmac_sha1(key, data) {
1775     return binb2b64(core_hmac_sha1(key, data));
1776 }
1777 
1778 function str_hmac_sha1(key, data) {
1779     return binb2str(core_hmac_sha1(key, data));
1780 }
1781 
1782 /*   
1783  *   Perform   a   simple   self-test   to   see   if   the   VM   is   working   
1784  */
1785 function sha1_vm_test() {
1786     return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
1787 }
1788 
1789 /*   
1790  *   Calculate   the   SHA-1   of   an   array   of   big-endian   words,   and   a   bit   length   
1791  */
1792 function core_sha1(x, len) {
1793     /*   append   padding   */
1794     x[len >> 5] |= 0x80 << (24 - len % 32);
1795     x[((len + 64 >> 9) << 4) + 15] = len;
1796 
1797     var w = Array(80);
1798     var a = 1732584193;
1799     var b = -271733879;
1800     var c = -1732584194;
1801     var d = 271733878;
1802     var e = -1009589776;
1803 
1804     for (var i = 0; i < x.length; i += 16) {
1805         var olda = a;
1806         var oldb = b;
1807         var oldc = c;
1808         var oldd = d;
1809         var olde = e;
1810 
1811         for (var j = 0; j < 80; j++) {
1812             if (j < 16) w[j] = x[i + j];
1813             else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
1814             var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
1815             e = d;
1816             d = c;
1817             c = rol(b, 30);
1818             b = a;
1819             a = t;
1820         }
1821 
1822         a = safe_add(a, olda);
1823         b = safe_add(b, oldb);
1824         c = safe_add(c, oldc);
1825         d = safe_add(d, oldd);
1826         e = safe_add(e, olde);
1827     }
1828     return Array(a, b, c, d, e);
1829 
1830 }
1831 
1832 /*   
1833  *   Perform   the   appropriate   triplet   combination   function   for   the   current   
1834  *   iteration   
1835  */
1836 function sha1_ft(t, b, c, d) {
1837     if (t < 20) return (b & c) | ((~b) & d);
1838     if (t < 40) return b ^ c ^ d;
1839     if (t < 60) return (b & c) | (b & d) | (c & d);
1840     return b ^ c ^ d;
1841 }
1842 
1843 /*   
1844  *   Determine   the   appropriate   additive   constant   for   the   current   iteration   
1845  */
1846 function sha1_kt(t) {
1847     return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
1848 }
1849 
1850 /*   
1851  *   Calculate   the   HMAC-SHA1   of   a   key   and   some   data   
1852  */
1853 function core_hmac_sha1(key, data) {
1854     var bkey = str2binb(key);
1855     if (bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
1856 
1857     var ipad = Array(16),
1858         opad = Array(16);
1859     for (var i = 0; i < 16; i++) {
1860         ipad[i] = bkey[i] ^ 0x36363636;
1861         opad[i] = bkey[i] ^ 0x5C5C5C5C;
1862     }
1863 
1864     var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
1865     return core_sha1(opad.concat(hash), 512 + 160);
1866 }
1867 
1868 /*   
1869  *   Add   integers,   wrapping   at   2^32.   This   uses   16-bit   operations   internally   
1870  *   to   work   around   bugs   in   some   JS   interpreters.   
1871  */
1872 function safe_add(x, y) {
1873     var lsw = (x & 0xFFFF) + (y & 0xFFFF);
1874     var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
1875     return (msw << 16) | (lsw & 0xFFFF);
1876 }
1877 
1878 /*   
1879  *   Bitwise   rotate   a   32-bit   number   to   the   left.   
1880  */
1881 function rol(num, cnt) {
1882     return (num << cnt) | (num >>> (32 - cnt));
1883 }
1884 
1885 /*   
1886  *   Convert   an   8-bit   or   16-bit   string   to   an   array   of   big-endian   words   
1887  *   In   8-bit   function,   characters   >255   have   their   hi-byte   silently   ignored.   
1888  */
1889 function str2binb(str) {
1890     var bin = Array();
1891     var mask = (1 << chrsz) - 1;
1892     for (var i = 0; i < str.length * chrsz; i += chrsz)
1893     bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i % 32);
1894     return bin;
1895 }
1896 
1897 /*   
1898  *   Convert   an   array   of   big-endian   words   to   a   string   
1899  */
1900 function binb2str(bin) {
1901     var str = "";
1902     var mask = (1 << chrsz) - 1;
1903     for (var i = 0; i < bin.length * 32; i += chrsz)
1904     str += String.fromCharCode((bin[i >> 5] >>> (24 - i % 32)) & mask);
1905     return str;
1906 }
1907 
1908 /*   
1909  *   Convert   an   array   of   big-endian   words   to   a   hex   string.   
1910  */
1911 function binb2hex(binarray) {
1912     var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
1913     var str = "";
1914     for (var i = 0; i < binarray.length * 4; i++) {
1915         str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
1916     }
1917     return str;
1918 }
1919 
1920 /*   
1921  *   Convert   an   array   of   big-endian   words   to   a   base-64   string   
1922  */
1923 function binb2b64(binarray) {
1924     var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
1925     var str = "";
1926     for (var i = 0; i < binarray.length * 4; i += 3) {
1927         var triplet = (((binarray[i >> 2] >> 8 * (3 - i % 4)) & 0xFF) << 16) | (((binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) % 4)) & 0xFF) << 8) | ((binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4)) & 0xFF);
1928         for (var j = 0; j < 4; j++) {
1929             if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
1930             else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
1931         }
1932     }
1933     return str;
1934 }
View Code

  到这一步,获取列表已经完全没有问题了,接下来获取详情页,详情页其实只需要一个参数【文书ID】,获取列表页的时候返回的文书ID是Base64编码的,解码后发现是密文,查找JS发现是通过AES加密

//增加7道爬虫防御 段智峰 20180807
function Navi(id, keyword) {
    var unzipid = unzip(id);
    try {
        var realid = com.str.Decrypt(unzipid);
        if (realid == "") {
            setTimeout("Navi('" + id + "','" + keyword + "')", 1000);
        } else {
            var url = "/content/content?DocID=" + realid + "&KeyWord=" + keyword;
            openWin(url);
        }
    } catch (ex) {
        setTimeout("Navi('" + id + "','" + keyword + "')", 1000);
    }
}
View Code

  这个是网站的解密方法,查看AES发现 KEY和IV居然都是明文写的,直接解密,发现解密不了,打断点调试才发现原来明文写死的KEY是假的,只是烟雾弹,真正的KEY是动态生成的,搞定这个KEY搞了好久,这里就不贴代码了,如果有需要的朋友可以联系我,可以有偿提供解密KEY的代码以及找到KEY的思路。

 

posted @ 2018-09-19 16:43  梦里的畅泳  阅读(1380)  评论(2编辑  收藏  举报