-
Notifications
You must be signed in to change notification settings - Fork 0
/
decompress.js
4 lines (4 loc) · 1.19 KB
/
decompress.js
1
2
3
4
var o={},f=String.fromCharCode,m=Math.pow;function g(p,x){if(!o[p]){o[p]={};for(var e=0;e<p.length;e++)o[p][p.charAt(e)]=e}return o[p][x]}
function d(p){var x=p.length,e=function(a){return g("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",p.charAt(a))},r=[],t=4,v=4,w=3,c="",y=[],n,a,h=e(0),b=32,u=1;for(n=0;3>n;n+=1)r[n]=n;c=0;var k=m(2,2);for(a=1;a!=k;){var l=h&b;b>>=1;0==b&&(b=32,h=e(u++));c|=(0<l?1:0)*a;a<<=1}switch(c){case 0:c=0;k=m(2,8);for(a=1;a!=k;)l=h&b,b>>=1,0==b&&(b=32,h=e(u++)),c|=(0<l?1:0)*a,a<<=1;var q=f(c);break;case 1:c=0;k=m(2,16);for(a=1;a!=k;)l=h&b,b>>=1,0==b&&(b=32,h=e(u++)),c|=(0<l?1:0)*a,a<<=1;
q=f(c);break;case 2:return""}n=r[3]=q;for(y.push(q);;){if(u>x)return"";c=0;k=m(2,w);for(a=1;a!=k;)l=h&b,b>>=1,0==b&&(b=32,h=e(u++)),c|=(0<l?1:0)*a,a<<=1;switch(q=c){case 0:c=0;k=m(2,8);for(a=1;a!=k;)l=h&b,b>>=1,0==b&&(b=32,h=e(u++)),c|=(0<l?1:0)*a,a<<=1;r[v++]=f(c);q=v-1;t--;break;case 1:c=0;k=m(2,16);for(a=1;a!=k;)l=h&b,b>>=1,0==b&&(b=32,h=e(u++)),c|=(0<l?1:0)*a,a<<=1;r[v++]=f(c);q=v-1;t--;break;case 2:return y.join("")}0==t&&(t=m(2,w),w++);if(r[q])c=r[q];else if(q===v)c=n+n.charAt(0);else return null;
y.push(c);r[v++]=n+c.charAt(0);t--;n=c;0==t&&(t=m(2,w),w++)}};