/* @author creep 2015-01-16 15:23:32 dccea4 */
function hex_md5(t) {
return binl2hex(core_md5(str2binl(t), t.length * chrsz))
}
function core_md5(t, i) {
t[i >> 5] |= 128 << i % 32,
t[(i + 64 >>> 9 << 4) + 14] = i;
for (var e = 1732584193, s = - 271733879, o = - 1732584194, n = 271733878, r = 0; r < t.length; r += 16) {
var a = e,
h = s,
c = o,
l = n;
e = md5_ff(e, s, o, n, t[r + 0], 7, - 680876936),
n = md5_ff(n, e, s, o, t[r + 1], 12, - 389564586),
o = md5_ff(o, n, e, s, t[r + 2], 17, 606105819),
s = md5_ff(s, o, n, e, t[r + 3], 22, - 1044525330),
e = md5_ff(e, s, o, n, t[r + 4], 7, - 176418897),
n = md5_ff(n, e, s, o, t[r + 5], 12, 1200080426),
o = md5_ff(o, n, e, s, t[r + 6], 17, - 1473231341),
s = md5_ff(s, o, n, e, t[r + 7], 22, - 45705983),
e = md5_ff(e, s, o, n, t[r + 8], 7, 1770035416),
n = md5_ff(n, e, s, o, t[r + 9], 12, - 1958414417),
o = md5_ff(o, n, e, s, t[r + 10], 17, - 42063),
s = md5_ff(s, o, n, e, t[r + 11], 22, - 1990404162),
e = md5_ff(e, s, o, n, t[r + 12], 7, 1804603682),
n = md5_ff(n, e, s, o, t[r + 13], 12, - 40341101),
o = md5_ff(o, n, e, s, t[r + 14], 17, - 1502002290),
s = md5_ff(s, o, n, e, t[r + 15], 22, 1236535329),
e = md5_gg(e, s, o, n, t[r + 1], 5, - 165796510),
n = md5_gg(n, e, s, o, t[r + 6], 9, - 1069501632),
o = md5_gg(o, n, e, s, t[r + 11], 14, 643717713),
s = md5_gg(s, o, n, e, t[r + 0], 20, - 373897302),
e = md5_gg(e, s, o, n, t[r + 5], 5, - 701558691),
n = md5_gg(n, e, s, o, t[r + 10], 9, 38016083),
o = md5_gg(o, n, e, s, t[r + 15], 14, - 660478335),
s = md5_gg(s, o, n, e, t[r + 4], 20, - 405537848),
e = md5_gg(e, s, o, n, t[r + 9], 5, 568446438),
n = md5_gg(n, e, s, o, t[r + 14], 9, - 1019803690),
o = md5_gg(o, n, e, s, t[r + 3], 14, - 187363961),
s = md5_gg(s, o, n, e, t[r + 8], 20, 1163531501),
e = md5_gg(e, s, o, n, t[r + 13], 5, - 1444681467),
n = md5_gg(n, e, s, o, t[r + 2], 9, - 51403784),
o = md5_gg(o, n, e, s, t[r + 7], 14, 1735328473),
s = md5_gg(s, o, n, e, t[r + 12], 20, - 1926607734),
e = md5_hh(e, s, o, n, t[r + 5], 4, - 378558),
n = md5_hh(n, e, s, o, t[r + 8], 11, - 2022574463),
o = md5_hh(o, n, e, s, t[r + 11], 16, 1839030562),
s = md5_hh(s, o, n, e, t[r + 14], 23, - 35309556),
e = md5_hh(e, s, o, n, t[r + 1], 4, - 1530992060),
n = md5_hh(n, e, s, o, t[r + 4], 11, 1272893353),
o = md5_hh(o, n, e, s, t[r + 7], 16, - 155497632),
s = md5_hh(s, o, n, e, t[r + 10], 23, - 1094730640),
e = md5_hh(e, s, o, n, t[r + 13], 4, 681279174),
n = md5_hh(n, e, s, o, t[r + 0], 11, - 358537222),
o = md5_hh(o, n, e, s, t[r + 3], 16, - 722521979),
s = md5_hh(s, o, n, e, t[r + 6], 23, 76029189),
e = md5_hh(e, s, o, n, t[r + 9], 4, - 640364487),
n = md5_hh(n, e, s, o, t[r + 12], 11, - 421815835),
o = md5_hh(o, n, e, s, t[r + 15], 16, 530742520),
s = md5_hh(s, o, n, e, t[r + 2], 23, - 995338651),
e = md5_ii(e, s, o, n, t[r + 0], 6, - 198630844),
n = md5_ii(n, e, s, o, t[r + 7], 10, 1126891415),
o = md5_ii(o, n, e, s, t[r + 14], 15, - 1416354905),
s = md5_ii(s, o, n, e, t[r + 5], 21, - 57434055),
e = md5_ii(e, s, o, n, t[r + 12], 6, 1700485571),
n = md5_ii(n, e, s, o, t[r + 3], 10, - 1894986606),
o = md5_ii(o, n, e, s, t[r + 10], 15, - 1051523),
s = md5_ii(s, o, n, e, t[r + 1], 21, - 2054922799),
e = md5_ii(e, s, o, n, t[r + 8], 6, 1873313359),
n = md5_ii(n, e, s, o, t[r + 15], 10, - 30611744),
o = md5_ii(o, n, e, s, t[r + 6], 15, - 1560198380),
s = md5_ii(s, o, n, e, t[r + 13], 21, 1309151649),
e = md5_ii(e, s, o, n, t[r + 4], 6, - 145523070),
n = md5_ii(n, e, s, o, t[r + 11], 10, - 1120210379),
o = md5_ii(o, n, e, s, t[r + 2], 15, 718787259),
s = md5_ii(s, o, n, e, t[r + 9], 21, - 343485551),
e = safe_add(e, a),
s = safe_add(s, h),
o = safe_add(o, c),
n = safe_add(n, l)
}
return Array(e, s, o, n)
}
function md5_cmn(t, i, e, s, o, n) {
return safe_add(bit_rol(safe_add(safe_add(i, t), safe_add(s, n)), o), e)
}
function md5_ff(t, i, e, s, o, n, r) {
return md5_cmn(i & e | ~i & s, t, i, o, n, r)
}
function md5_gg(t, i, e, s, o, n, r) {
return md5_cmn(i & s | e & ~s, t, i, o, n, r)
}
function md5_hh(t, i, e, s, o, n, r) {
return md5_cmn(i ^ e ^ s, t, i, o, n, r)
}
function md5_ii(t, i, e, s, o, n, r) {
return md5_cmn(e ^ (i | ~s), t, i, o, n, r)
}
function safe_add(t, i) {
var e = (65535 & t) + (65535 & i),
s = (t >> 16) + (i >> 16) + (e >> 16);
return s << 16 | 65535 & e
}
function bit_rol(t, i) {
return t << i | t >>> 32 - i
}
function binl2hex(t) {
for (var i = hexcase ? '0123456789ABCDEF' : '0123456789abcdef', e = '', s = 0; s < 4 * t.length; s++) e += i.charAt(t[s >> 2] >> s % 4 * 8 + 4 & 15) + i.charAt(t[s >> 2] >> s % 4 * 8 & 15);
return e
}