var hexcase=0;var b64pad="";function hex_md5(a){return rstr2hex(rstr_md5(str2rstr_utf8(a)))}function rstr_md5(a){return binl2rstr(binl_md5(rstr2binl(a),a.length*8))}function rstr2hex(c){try{hexcase}catch(g){hexcase=0}var f=hexcase?"0123456789ABCDEF":"0123456789abcdef";var b="";var a;for(var d=0;d>>4)&15)+f.charAt(a&15)}return b}function str2rstr_utf8(c){var b="";var d=-1;var a,e;while(++d>>6)&31),128|(a&63))}else{if(a<=65535){b+=String.fromCharCode(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63))}else{if(a<=2097151){b+=String.fromCharCode(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63))}}}}}return b}function rstr2binl(b){var a=Array(b.length>>2);for(var c=0;c>5]|=(b.charCodeAt(c/8)&255)<<(c%32)}return a}function binl2rstr(b){var a="";for(var c=0;c>5]>>>(c%32))&255)}return a}function binl_md5(p,k){p[k>>5]|=128<<((k)%32);p[(((k+64)>>>9)<<4)+14]=k;var o=1732584193;var n=-271733879;var m=-1732584194;var l=271733878;for(var g=0;g>16)+(d>>16)+(c>>16);return(b<<16)|(c&65535)}function bit_rol(a,b){return(a<>>(32-b))}function hex_sha1(a){return rstr2hex(rstr_sha1(str2rstr_utf8(a)))}function rstr_sha1(a){return binb2rstr(binb_sha1(rstr2binb(a),a.length*8))}function rstr2binb(b){var a=Array(b.length>>2);for(var c=0;c>5]|=(b.charCodeAt(c/8)&255)<<(24-c%32)}return a}function binb2rstr(b){var a="";for(var c=0;c>5]>>>(24-c%32))&255)}return a}function binb_sha1(v,o){v[o>>5]|=128<<(24-o%32);v[((o+64>>9)<<4)+15]=o;var y=Array(80);var u=1732584193;var s=-271733879;var r=-1732584194;var q=271733878;var p=-1009589776;for(var l=0;l256||p>256){throw"Max image size is 256 x 256"}var g={hash:vizhash.textHash(o)},k=g.hash.intArray,f=vizhash.color(k.next(),k.next(),k.next());a=g.width=a||80;p=g.height=p||80;var c=g.canvas=vizhash.createCanvas(a,p);var b=g.context=c.getContext("2d");function n(){var r=k.next();return a*r/256}function j(){var r=k.next();return p*r/256}function m(t,A,w,s,H,z){var F=A-s/2,E=w-H/2,D=0.5522848;var v=(s/2)*D,r=(H/2)*D,G=F+s,C=E+H,B=F+s/2,u=E+H/2;t.beginPath();t.moveTo(F,u);t.bezierCurveTo(F,u-r,B-v,E,B,E);t.bezierCurveTo(B+v,E,G,u-r,G,u);t.bezierCurveTo(G,u+r,B+v,C,B,C);t.bezierCurveTo(B-v,C,F,u+r,F,u);t.fillStyle=z.toString();t.fill();t.closePath()}function q(t,u,r){t.beginPath();for(var s=0;s