<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>Checking your browser…</title>
<style>
html,body{height:100%;margin:0}
body{display:flex;align-items:center;justify-content:center;background:#0f1115;color:#c8ccd4;font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.box{text-align:center;max-width:420px;padding:32px}
.spin{width:42px;height:42px;margin:0 auto 22px;border:4px solid #2a2f3a;border-top-color:#5b8cff;border-radius:50%;animation:r .9s linear infinite}
@keyframes r{to{transform:rotate(360deg)}}
h1{font-size:18px;font-weight:600;color:#eef1f6;margin:0 0 8px}
p{margin:6px 0;color:#9aa1ad}
.bar{height:4px;background:#2a2f3a;border-radius:2px;margin-top:18px;overflow:hidden}
.bar>i{display:block;height:100%;width:0;background:#5b8cff;transition:width .2s}
noscript{color:#ff7676}
</style>
</head>
<body>
<div class="box">
<div class="spin"></div>
<h1>Checking your browser</h1>
<p>This takes a moment and happens only once. Please wait…</p>
<div class="bar"><i id="b"></i></div>
<noscript><p>JavaScript is required to access this site.</p></noscript>
</div>
<script>
// Minimal synchronous SHA-256 (UTF-8 input -> hex). Public-domain style impl.
var SHA256=(function(){
function rotr(n,x){return (x>>>n)|(x<<(32-n));}
var K=[0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,
0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,
0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,
0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,
0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,
0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2];
function toBytes(s){var u=unescape(encodeURIComponent(s)),b=new Array(u.length);for(var i=0;i<u.length;i++)b[i]=u.charCodeAt(i)&0xff;return b;}
return function(str){
var H=[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19];
var msg=toBytes(str),l=msg.length,bl=l*8;
msg.push(0x80);while(msg.length%64!==56)msg.push(0);
for(var i=7;i>=0;i--)msg.push((bl/Math.pow(2,i*8))&0xff);
var w=new Array(64);
for(var j=0;j<msg.length;j+=64){
for(var t=0;t<16;t++)w[t]=(msg[j+t*4]<<24)|(msg[j+t*4+1]<<16)|(msg[j+t*4+2]<<8)|(msg[j+t*4+3]);
for(t=16;t<64;t++){var s0=rotr(7,w[t-15])^rotr(18,w[t-15])^(w[t-15]>>>3);var s1=rotr(17,w[t-2])^rotr(19,w[t-2])^(w[t-2]>>>10);w[t]=(w[t-16]+s0+w[t-7]+s1)|0;}
var a=H[0],b=H[1],c=H[2],d=H[3],e=H[4],f=H[5],g=H[6],h=H[7];
for(t=0;t<64;t++){var S1=rotr(6,e)^rotr(11,e)^rotr(25,e);var ch=(e&f)^((~e)&g);var t1=(h+S1+ch+K[t]+w[t])|0;var S0=rotr(2,a)^rotr(13,a)^rotr(22,a);var mj=(a&b)^(a&c)^(b&c);var t2=(S0+mj)|0;h=g;g=f;f=e;e=(d+t1)|0;d=c;c=b;b=a;a=(t1+t2)|0;}
H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0;H[4]=(H[4]+e)|0;H[5]=(H[5]+f)|0;H[6]=(H[6]+g)|0;H[7]=(H[7]+h)|0;
}
var out='';for(i=0;i<8;i++){out+=('00000000'+(H[i]>>>0).toString(16)).slice(-8);}return out;
};
})();

(function(){
var TOKEN="1782383555.627688dc44d15770f496b2c7cb520d4a1aac454445e37d67288c1f786fe149be";
var DIFF=4;
var FP=0;
var prefix=new Array(DIFF+1).join('0');
var bar=document.getElementById('b');
var nonce=0;
var BATCH=2000;
function step(){
var end=nonce+BATCH;
for(;nonce<end;nonce++){
if(SHA256(TOKEN+':'+nonce).indexOf(prefix)===0){
done(nonce);return;
}
}
// crude progress: grows toward ~90% over expected work
var pct=Math.min(90,Math.round((nonce/(Math.pow(16,DIFF)))*100));
bar.style.width=pct+'%';
setTimeout(step,0);
}
// Headless / automation fingerprint: navigator.webdriver and the WebGL renderer
// (software rasterizers like SwiftShader/llvmpipe betray a datacenter headless
// browser). Best-effort and time-bounded; failures fall back to empty signals.
function fp(){
if(!FP)return '';
var wd=0,gl='';
try{if(navigator.webdriver)wd=1;}catch(e){}
try{
var c=document.createElement('canvas');
var g=c.getContext('webgl')||c.getContext('experimental-webgl');
if(g){var ext=g.getExtension('WEBGL_debug_renderer_info');if(ext)gl=g.getParameter(ext.UNMASKED_RENDERER_WEBGL)||'';}
}catch(e){}
return '&wd='+wd+'&gl='+encodeURIComponent((''+gl).slice(0,120));
}
function done(n){
bar.style.width='100%';
var r=location.pathname+location.search;
location.replace('/__ab/verify?t='+encodeURIComponent(TOKEN)+'&n='+n+'&r='+encodeURIComponent(r)+fp());
}
setTimeout(step,30);
})();
</script>
</body>
</html>
