1 2 3LinkProtector={};LinkProtector.GetBytesFromHex=function(s){if(s.indexOf("0x")==0||s.indexOf("0X")==0){s=s.substring(2);} 4if(s.length%2==1)s="0"+s;var bytes=new Array();for(var i=0;i<s.length;i+=2){bytes[i/2]=parseInt(s.slice(i,i+2),16);} 5return bytes;} 6LinkProtector.GetStringFromBytes=function(bytes){var s=new String;var b=new Number;var b1=new Number;var b2=new Number;var b3=new Number;var b4=new Number;var bE=new Number;var ln=bytes.length;for(var i=0;i<ln;i++){b=bytes[i];if(b<0x80){s+=(b>0)?String.fromCharCode(b):"";}else if(b<0xC0){}else if(b<0xE0){if(ln>i+1){b1=(b&0x1F);i++;b2=(bytes[i]&0x3F);bE=(b1<<6)|b2;s+=String.fromCharCode(bE);}}else if(b<0xF0){if(ln>i+2){b1=(b&0xF);i++;b2=(bytes[i]&0x3F);i++;b3=(bytes[i]&0x3F);bE=(b1<<12)|(b2<<6)|b3;s+=String.fromCharCode(bE);}}else if(b<0xF8){if(ln>i+3){b1=(b&0x7);i++;b2=(bytes[i]&0x3F);i++;b3=(bytes[i]&0x3F);i++;b4=(bytes[i]&0x3F);bE=(b1<<18)|(b2<<12)(b3<<6)|b4;s+=String.fromCharCode(bE);}}else{s+="?"}} 7return s;} 8LinkProtector.Unprotect=function(sender,e){sender.style.visibility="hidden";sender.onfocus="";sender.onmouseover="";var regex=new RegExp("'([0-9A-F]+)'");var hex=regex.exec(sender.href)[1];var bytes=LinkProtector.GetBytesFromHex(hex);var url=LinkProtector.GetStringFromBytes(bytes);sender.href=url;window.setTimeout(function(){sender.style.visibility="";sender.style.visibility="hidden";sender.style.visibility="";},1);return false;}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.