// (C) 2010, Lee J Haywood.
g32=''
g115=48
g69=['Lee J Haywood','SokEvo','A','sokevo.txt',107,'SokHard','B','sokhard.txt',163,'SokWhole','X','sokwhole.txt','',null,'David W Skinner','Microban','C','m1.txt',155,'Microban II','D','m2.txt',135,'Microban III','E','m3.txt',46,'Sasquatch','F','s1.txt',50,'Sasquatch II','G','s2.txt',50,'Sasquatch III','H','s3.txt',50,'Sasquatch IV','I','s4.txt',50,'Sasquatch V','J','s5.txt',50,'Sasquatch VI','K','s6.txt',50,'Sasquatch VII','L','s7.txt',50,'Sasquatch VIII','M','s8.txt',50,'Sasquatch IX','W','s9.txt',50,null,'Evgeniy Grigoriev','Grigr2001','N','grigr2001.txt',100,'Grigr2002','O','grigr2002.txt',40,'GrigrSpecial','P','GrigrSpecial.txt',40,null,'Crazy Monk','Disciple','S','Disciple.txt',50,null,'Phil Shapiro','Simple Sokoban','V','phil_shapiro.txt',61,null,'Alfred Pfeiffer','Multiban','Q','multiban.txt',10,null,'Mark Mainwood','Colour Bind','U',null,20,'Interlock Amiga','R',null,26,'Interlock PC','T',null,35,null,null]
g107='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._'
g76=" #!$.RGYB'@bygr:v><^wW&AFQX123456789"
g175='@&AFQX'
g104=' #!$RGYB@&AFQX123456789'
g130=".'bygr:v><^wW"
g68='1000011110111000001000100100000110010100110101011101101101000100110011000111010011111010010001011100100111000001101010111000101000110110011001101010010100001010000000011010010011001110010000011001001011110100000001010001111001101100011000101110000000101000'
g28=8
g131=3
g40=_111('i13')
g125=_111('i15')
g18=_111('i18')
g17=_111('i19')
g47=_111('i71')
g116=_111('i12')
g26=_111('i72')
g117=_111('i37')
g84=_111('i35')
g143=_111('i38')
g42=_111('i11')
g129=_111('i46')
g95=_111('i48')
g134=_111('i41')
g51=_111('Solution')
g8=null
g123=null
g136=new
Array
g136['B']=0
g136['C']=0
g136['G']=1
g136['H']=1
g136['R']=2
g136['S']=2
g136['Y']=3
g136['Z']=3
g75=new
Array
g88=4
g21=13
g56=13
g102=0
g173=0
g154=-1
g169=null
g9=new
Array
g49=new
Array
g1=new
Array
g168='B'
g52='@'
g127=0
g157=0
g165=false
g97=(g26!=null)
g150=false
g38=false
g82=false
g101=true
g103=true
g148=false
g162=false
g145=false
g27=1
g106=false
g92=false
g14=true
g31=false
g59=false
g94=null
g16=false
g25=null
g45=''
g79=null
g4=new
Array
g54=new
Array
g135=new
Array(g21)
g86=new
Array(g21)
g146=new
Array(g56)
g124=0
g159=new
Array
g11=new
Array
if(typeof(baseURL)=='undefined'){baseURL=''}
g10=true
g24='#FFFFFF'
g89=null
g172=false
g144=true
g3=false
g64=false
_52(true)
g19=0
g34=''
g126=0
g65=''
g36=''
_95()
if(navigator.userAgent.indexOf('Chrome')>=0||navigator.userAgent.indexOf('Safari')>=0){document.onkeyup=_80}
else
if(document.addEventListener){document.addEventListener("keypress",_80,false)}
else
if(document.attachEvent){document.attachEvent("onkeydown",_80)}
else{document[onkeypress]=_80}
g41=null
try{g41=new
ActiveXObject("Msxml2.XMLHTTP")}
catch(objectException){try{g41=new
ActiveXObject("Microsoft.XMLHTTP")}
catch(objectException2){g41=null}}
if(g41==null){if(typeof
XMLHttpRequest!="undefined"){g41=new
XMLHttpRequest()}}
g110=navigator.appName.substring(0,9)=='Microsoft'
g23=(g110?'<span dir="rtl"></span>':'\u200B')
if(g110){_4(false,'i36')}
function
_95(){var n,q,v
,c=window.location.search.replace(/.*\?/,'')
if(c!=''){if(c.match(/=/)){var w=c.split('&')
for(var m=w.length-1;m>=0;m--){n=w[m].split('=')
if(n.length==2){v=n[0].toLowerCase()
q=decodeURIComponent(
n[1].replace(/\+/g,'%20'))
switch(v){case
'c':case
's':case
'l':case
'g':case
'u':g65=v+q
_4(false,'i16')
break
case
't':g36='; '+q
break
case
'f':if(q=='1'){q='A'}
if(q=='2'){q='B'}
if(q.length==1&&q>='A'&&q<='Z'){g34=q}
break
case
'p':if(q.length<=10&&q.match(/^[1-9][0-9]*$/)){g126=parseInt(q,10)-1}
break}}}}
else{g19=
parseInt(window.location.search.replace(/.*\?/,''),10)
}}}
function
_44(){var c,a,dj,w,o,l,s,g,sj,m,uk=-1,f=-1,qc=-1,z=-1,i=new
Array
var y=_28('data'),t=y.split('_'),xv='?'
if(t.length>0){var u=t[0].split(',')
xv=u[0]
if(u.length>1){g111=Number(u[1])
_20(true)
if(u.length>2){uk=Number(u[2])}
if(u.length>3){f=Number(u[3])}
if(u.length>4){qc=Number(u[4])}
if(u.length>5){g127=g107.indexOf(u[5].charAt(0))
if(g127&1){_111('i17').removeAttribute('checked')}
if(g127&8){i['U']=true}
if(g127&16){i['R']=true}
if(g127&32){i['T']=true}
if(u[5].length>1){g157=g107.indexOf(u[5].charAt(1))
g14=1-(g157&1)
g168='BGRY'
.charAt(g157>>1)}}}
for(sj=1;sj<t.length;sj++){u=t[sj].split(',')
if(u[1]=='x'){i[u[0].split(':')[0]]=true}}}
g97=(xv!='')
_4(true,'i20')
_35(false)
_96()
var b=_26(g138,2),d=_26(g67,3),xh=_26(g6,1),qq=-1
a=g40.insertRow(++qq)
a.width='100%'
w=document.createElement('a')
w.setAttribute('href','javascript:_112()')
w.title='Import puzzles'
o=document.createTextNode('Import')
w.appendChild(o)
a.insertCell(0)
dj=a.insertCell(1)
w.className='cToggle'
dj.style.textAlign='right'
dj.noWrap=true
dj.appendChild(w)
var p=0,q=-1,k=0,r=0,hb=0,e=true
for(sj=0;sj<g69.length;sj++){if(g69[sj]==null){e=true}
else{a=g40.insertRow(++qq)
o=document.createTextNode(g69[sj])
dj=a.insertCell(0)
if(e){w=document.createElement('a')
w.setAttribute('href','copyrights.html#'+
g69[sj].replace(/ /g,'_'))
w.setAttribute('target','_blank')
w.className='cName cExt'
w.appendChild(o)
dj.appendChild(w)
dj.colSpan='2'
dj.noWrap=true
e=false}
else{dj.width='70%'
dj=a.insertCell(1)
dj.id='c'+p
dj.noWrap=true
w=document.createElement('a')
w.setAttribute('href','javascript:_92('+p+')')
w.className='cLevel'
w.appendChild(o)
w.onfocus=function(){this.blur()}
dj.appendChild(w)
m=g69[sj+3]
if(m!=''){l=document.createElement('span')
l.className='cNum'
o=document.createTextNode('\xA0'+'('+m+')')
l.appendChild(o)
dj.appendChild(l)}
s=g69[sj+1]
if(i[s]){w.className='cDone'}
if(s==xv){q=p}
if(g34==s){z=p}
if(g69[sj+2]==null){if(s=='R'){k=p
g9[0]=k}
else
if(s=='T'){r=p
g9[1]=r}
else{hb=p
g9[2]=hb}
g49[p]=0
if(s=='R'){m=b}
else
if(s=='T'){m=d}
else{m=xh}
g4[p++]=new
_60(s,g69[sj],null,m)}
else{g4[p++]=new
_60(s,g69[sj],g69[sj+2],null)}
sj+=3}}}
var x=-1,n=-1,h=-1
if(uk>=0){x=_98(k,uk)
g49[k]=x}
if(f>=0){n=_98(r,f)
g49[r]=n}
if(qc>=0){h=_98(hb,qc)
g49[hb]=h}
var v=-1,j=-1
if(g19>0){j=_98(k,g19)
if(j>=0){v=k}
else{j=_98(r,g19)
if(j>=0){v=r}}
if(j<0||(v==k&&j<x)||(v==r&&j<n)){window.location=window.location.pathname}
else
if(v==k){q=k
x=j
g49[k]=j}
else{q=r
n=j
g49[r]=j}
g19=0}
if(z>=0){q=z}
else
if(g65!=''){q=-1}
else
if(x>=0||n>=0){if(j>0||q==k||q==r){g102=q
if(q==k){g154=x}
else{g154=n}
_19(true)
q=-1}}
if(q>=0){_92(q)}
i4=true}
function
_92(e){if(g3){return}
if(g102>=0){_111('c'+g102).style.backgroundColor=''}
if(g165){alert('Sorry, already busy loading')}
else{if(g154>=0){g26.rows[g154+1].
cells[1].style.backgroundColor=''
_88()}
_82(false)
if(g42.innerHTML!=''){_74()}
g102=e
if(g4[e].r==null){g165=true
_111('c'+e).style.backgroundColor='#FF8080'
g41.open('GET','/p/'+g4[e].x,true)
g41.onreadystatechange=_18
g41.send(null)}
else{_19(true)}}}
function
_18(){var y,z,q,p,l,s,j,d
if(g16){y=('\n'+g45).split('\n')}
else{if(g41.readyState!=4){return}
g165=false
try{if(g41.status!=200){alert('Failed with status '+g41.status+': '+g41.statusText,1)
return}}
catch(dummyException){alert("Sorry, the server isn't working properly at the moment.")
return}
y=g41.responseText.split('\n')}
var g=new
Array
var e=0,t=-1,u=(y.length>1&&y[0].charAt(0)==';'),r='',m=null,c=0,b=1,f=false
for(z=0;z<y.length;z++){s=false
q=y[z].replace(/[	\r]+$/g,'').replace(/[-_]/g,' ')
if(q.length<=0||
(!u&&q.replace(/ /g,'').length<=0))
{t=-1
if(m!=null&&f){t=e
g[e++]=new
_64(r,m,b)
r=''}
f=false
u=true
m=null}
else
if(u){l=true
d=false
for(p=0;p<q.length;p++){switch(q.charAt(p)){case
' ':case
'#':break
case
'@':case
'+':d=true
break
case
'.':case
'$':case
'*':case
'B':case
'G':case
'R':case
'Y':case
'b':case
'g':case
'r':case
'y':case
'C':case
'H':case
'S':case
'Z':case
'c':case
'h':case
's':case
'z':case
'a':case
'f':case
'q':case
'x':break
case
'A':case
'F':case
'Q':case
'X':d=true
break
case
'!':case
':':case
'v':case
'<':case
'>':case
'^':case
"'":break
case
'"':d=true
break
case
'w':case
'W':break
case
'&':d=true
break
case
'1':case
'2':case
'3':case
'4':case
'5':case
'6':case
'7':case
'8':case
'9':if(b==1){l=false}
break
default:l=false}}
if(l){if(m==null){if(r==''){r="Untitled"}
m=new
Array
c=0}
m[c++]=q
if(d){f=true}}
else{if(m!=null){if(f){t=e
g[e++]=new
_64(r,m,b)
s=true}
f=false
m=null
r=''
u=false}
else{
j=q.replace(/^; *|^\s+|\s+$/g,'')
if(j=='@I2@'){b=2}
else
if(j=='@I3@'){b=3}
else{b=1
if(r!=''){r+=' - '}
r+=j}}}}
else{s=true}
if(s&&t>=0&&q.substring(0,6)=="Title:"){g[t].a=
q.replace(/^Title: */,'')
}}
if(m!=null&&f){g[e++]=new
_64(r,m,b)}
if(g65!=''&&e>0){g102=-1
g12=0
g11=new
Array}
g65=''
g4[g102].r=g
if(g40){_19(true)
if(g4[g102].y=='X'){var w=document.createElement('span')
w.className='cNum'
var n=document.createTextNode('\xA0'+'('+e+'+)')
w.appendChild(n)
_111('c'+g102).appendChild(w)}}}
function
_19(m){var x,a,o,v,c,n
if(g102<0){g162=false
g145=false}
else{g145=(g4[g102].x==null)
g162=!g145
if(g145){g75[g102]=_3(g102,g49[g102])}}
while(g26.rows.length>0){g26.deleteRow(g26.rows.length-1)}
if(g162){g12=-1
_5('if')}
if(g145){if(m){g12=g49[g102]}
else{g12=-1}}
var q=g4[g102].r
if(q==null){return}
x=g26.insertRow(0)
var h=document.createElement('input')
h.setAttribute('type','checkbox')
if(!(g127&2)){if(g110){h.setAttribute('defaultChecked','true')}
else{h.setAttribute('checked','checked')}}
h.id='xAutoAdvance'
h.onclick=_78
a=x.insertCell(0)
a.setAttribute('colSpan',2)
if(g110){a.style.setAttribute('color','#808080')
a.style.setAttribute('padding-left','75px')
a.style.setAttribute('padding-bottom','10px')
a.style.setAttribute('white-space','nowrap')}
else{a.setAttribute('style','color:#808080;padding-left:75px;padding-bottom:10px;white-space:nowrap')}
a.appendChild(h)
v=document.createTextNode('\xA0Auto-advance')
a.appendChild(v)
for(var i=0;i<q.length;i++){x=g26.insertRow(i+1)
v=document.createTextNode(i+1)
a=x.insertCell(0)
a.appendChild(v)
a.style.textAlign='right'
o=document.createElement("a")
o.setAttribute("href","javascript:_66("+i+",0,1)")
c=q[i]
n=c.w
o.title=c.a+' ('+c.w.length+'\xD7'+(c.w[0].length/c.m)+')'
o.onfocus=function(){this.blur()}
v=document.createTextNode(q[i].a)
o.appendChild(v)
a=x.insertCell(1)
a.noWrap=true
a.style.fontSize='large'
a.style.fontFamily="monospace"
a.appendChild(o)
if((g162&&g11[i])||(g145&&i<g49[g102])){o.className='cDone'}
else{var w=0
switch(g4[g102].y){case
'U':w=8
break
case
'R':w=16
break
case
'T':w=32
break}
if(g127&w){o.className='cDone'}
else{o.className='cGo'}}
if(g145&&i>=g49[g102]){break}}
if(g102>=0){h=_111('c'+g102)
h.style.backgroundColor='#80FF80'
g116.scrollTop=parseInt(h.offsetTop,10)}
if(g34!=''&&g126>0){g34=''
g12=g126}
if(g12>=0){setTimeout('_66('+g12+',0,1)',250)}
else{g47.scrollTop=0}
if(g4[g102].y=='X'){x=g26.insertRow(q.length+1)
a=x.insertCell(0)
a.setAttribute('colSpan',2)
v=document.createTextNode('Reached the end?')
a.appendChild(v)
a.appendChild(document.createElement('br'))
v=document.createTextNode('This collection is growing!\xA0 Subscribe to its ')
a.appendChild(v)
var k=document.createElement('img')
k.setAttribute('src','http://discussionator.com/rss.gif')
k.setAttribute('border','0')
k.setAttribute('alt','RSS')
o=document.createElement('a')
o.setAttribute('href','http://feeds2.feedburner.com/SokWhole')
o.setAttribute('target','_blank')
o.setAttribute('title','RSS feed')
o.appendChild(k)
a.appendChild(o)
v=document.createTextNode(' feed to see when new puzzles are added...')
a.appendChild(v)}}
function
_66(m,o,c){if(g3){return}
if(g26){if(g154>=0){g26.rows[g154+1].
cells[1].style.backgroundColor=''
_88()}
if(m+1>g26.rows.length-1){return}
g26.rows[m+1].
cells[1].style.backgroundColor='#80FF80'
var q=g26.rows[m+1].cells[1].offsetTop,x=parseInt(g47.style.height,10)
if(q>x){g47.scrollTop=q-(x/2)}
else
if(q<parseInt(g47.scrollTop,10)){q-=x/2
if(q<0){q=0}
g47.scrollTop=q}
if(c){_4(false,'i34')
if(g26){_4(false,'i22','i21')}}}
var w=g4[g102].r[m]
g169=w.w
g27=w.m
g154=m
if(!g16){_5('lw')}
var v=g169.length,i=g169[0].length/g27
_79()
if(c){if(g97){_35()}
_4(false,'i34')
if(g26){_4(false,'i22','i21')
_4(true,'i32','i33')}
setTimeout('_22('+v+','+i+','+o+')',100)}}
function
_22(o,h,x){if(g21!=o||g56!=h){g21=o
g56=h
_1()}
g31=true
_87(x,true)
if(g51){_41()}}
function
_82(f){_79()
if(f){if(g3){return}
if(g154<0){if(!g97){_35()}
return}
_88()
g26.rows[g154+1].
cells[1].style.backgroundColor=''
_4(true,'i32')
_4(false,'i33')}
g154=-1
g172=false
_4(false,'i34','i22','i21')}
function
_2(x){var a,e,m,n,c,v,p,z=g4[g102].r[g154],u='',t=''
for(var j=0;j<3;j++){a=_16(j)
if(a!=''){if(a!=null&&(u==''||a.length<u.length)){
//a=a.replace(/[^01]/g,'')
u=a
switch(j){case
0:t='g'
break
case
1:t='u'
if(g103){t='s'}
break
default:t='l'
break}}}}
if(t==''){_4(false,'i22','i21')}
else{var w='i21'
for(var k=0;k<2;k++){a=u
if(k){a+='1'}
while(a.length%6!=0){a+='0'}
p=_104(a)
a=_100(a)
e=''
for(m=a.length-6;m>=0;m-=6){n=0
c=1
for(v=5;v>=0;v--){if(a.charAt(m+v)=='1'){n+=c}
c
<<=
1}
e+=g107.charAt(n)}
e+=p
_111(w).href='?'+(z.a=='Untitled'?'':'t='+encodeURIComponent(z.a)+'&')+t+'='+e
_4(true,w)
if(x){break}
w='i22'}}}
function
_16(d){var y,f,l,u,c,g,b
switch(d){case
0:y=_99
break
case
1:y=_72
break
default:y=_53
break}
var w='0',q=new
Array
var h=new
Array
var j=new
Array
var r=0
for(var i=0;i<g21;i++){for(b=0;b<g56;b++){l=g135[i][b]
if(l=='?'){l=' '}
if(l.length==2){if(l=='@0'){l='&'}
else{l=l.charAt(1)+l.charAt(0)}}
f=g86[i][b].s
if(f=='B'||f=='G'||f=='R'||f=='Y'){f=f.toLowerCase()}
l+=f
if(g103&&d==1){switch(l){case
' ':l='000'
break
case
'#':l='001'
break
case
'$':l='010'
break
case
' .':l='011'
break
case
'$.':l='100'
break
case
'@':l='101'
break
case
'@.':l='110'
break
default:return ''}}
q.push(l)
if(l
in
h){h[l]++}
else{j.push(l)
h[l]=1
r++}}}
if(r<=0){return ''}
j.sort(function(n,o){return h[o]-h[n]})
var v=_25(r-1),x='',s=new
Array
for(var m=0;m<j.length;m++){l=j[m]
s[l]=m
if(g103&&d==1){x+=l}
else{c=g76
if(l.charAt(0)>='1'&&l.charAt(0)<='9'){u=c.indexOf(l.charAt(0))
if(u<0){return ''}
x+=_25(u)
l=l.substr(1)
c=g175}
if(l.charAt(0)==' '||l.length==1){v+='0'
g=g76}
else{v+='1'
if(c!=g175){c=g104}
g=g130}
if(l.charAt(0)!=' '||l.length==1){u=c.indexOf(l.charAt(0))
if(u<0){return ''}
x+=_25(u)}
if(l.length>1){u=g.indexOf(l.charAt(1))
if(u<0){return ''}
x+=_25(u)}}}
v+=x
v+=_25(g21-1)
v+=_25(g56-1)
for(m=0;m<q.length;m++){v+=y(s[q[m]])}
return v}
function
_36(v){var s,j,t,q,r,h,b,w,l,u,c,m,x=v.charAt(0),k='',z=1
if(x!='c'&&v.length>1){k=v.charAt(v.length-1)
z=v.length-(1+k.length)}
var i=''
while((x=='c'&&z<v.length)||(x!='c'&&z>=1)){l=g107.indexOf(v.charAt(z))
u=32
for(c=0;c<6;c++){i+=(l&u?'1':'0')
u
>>=
1}
if(x=='c'){z++}
else{z--}}
if(x=='c'){w=_11(i)
if(w==null){return 1}}
else{switch(x){case
'l':s=_77
break
case
'g':s=_37
break
case
'u':case
's':s=_113
break
default:return 2}
i=_39(i)
if(_104(i)!=k){return 'in checksum'}
var a=_29(i,1)
if(a.length<2){return 3}
z=a[0]
j=a[1]+1
if(x!='s'){t=i.substr(z,j)
if(t.length!=j){return 4}
z+=j}
var g=1,o=new
Array
var n=new
Array
for(c=0;c<j;c++){h=''
if(x=='s'){switch(i.substr(z,3)){case
'000':q=' '
break
case
'001':q='#'
break
case
'010':q='$'
break
case
'011':q='.'
break
case
'100':q='*'
break
case
'101':q='@'
break
case
'110':q='+'
break
default:return 5}
z+=3}
else{m=t.charAt(c)
if(m=='0'){b=g76}
else{b=g104}
a=_29(i.substr(z),1)
if(a.length<2){return 6}
z+=a[0]
if(a[1]>=b.length){return 7+', '+a[1]}
q=b.charAt(a[1])
if(q>='1'&&q<='9'){a=_29(i.substr(z),1)
if(a.length<2){return 8}
z+=a[0]
if(a[1]>=g175.length){return 9}
q=g175.charAt(a[1])+q}
r=''
if(m=='1'){if(g130.indexOf(q)>=0){return '10, '+q}
a=_29(i.substr(z),1)
if(a.length<2){return 11}
z+=a[0]
if(a[1]>=b.length){return 12}
r=g130.charAt(a[1])
if(q==' '){q=r}
else{q=r+q
h=q
switch(q){case
'.$':q='*'
break
case
'.@':q='+'
break
case
"'@":q='"'
break
case
'bB':case
'gG':case
'rR':case
'yY':q=String.fromCharCode(q.charCodeAt(1)+1)
break
case
"'B":case
"'G":case
"'R":case
"'Y":q=String.fromCharCode(q.charCodeAt(1)-1).toLowerCase()
break
case
':B':case
':G':case
':R':case
':Y':q=String.fromCharCode(q.charCodeAt(1)+1).toLowerCase()
break}}}
if(q.length>g){g=q.length}}
o.push(q)
n.push(h)}
a=_29(i.substr(z),2)
if(a.length!=3){return 13}
z+=a[0]
var p=a[1]+1,e=a[2]+1,f=p*e
a=s(i.substr(z),f)
if(a.length-1<f){return 14+', '+a.length+'/'+f}
z+=a[0]
w=''
if(g>1){w='; @I'+g+'@\n'}
for(c=0;c<f;c++){if(c>0&&c%e==0){w+='\n'}
q=a[c+1]
if(!(q
in
o)){return 15+', '+q+'/'+o.length}
h=n[q]
q=o[q]
if(h!=''&&g>1){q=h}
if((c+1)%e>0){while(q.length<g){q+=' '}}
w+=q}
g64=(i.charAt(z)=='1')
if(g64){_4(false,'i71','i24','i36')
_4(true,'i32','i33')}}
if(g36!=''){w=g36+'\n'+w}
g18.value=w
_112()
return 0}
function
_11(e){var l,r,z=''
for(l=0;l<e.length;l+=3){switch(e.substr(l,3)){case
'000':r=' '
break
case
'001':r='#'
break
case
'010':r='$'
break
case
'011':r='.'
break
case
'100':r='*'
break
case
'101':r='@'
break
case
'110':r='+'
break
case
'111':r='\n'
break
default:alert('Invalid character in XSB definition.')
return null}
z+=r}
return z}
function
_25(c){var w,n=''
for(w=Math.floor(c/g28);w>=1;w--){n+='0'}
n+='1'
var q=1
for(w=g131;w>=1;w--){n+=(c&q?'1':'0')
q
<<=
1}
return n}
function
_29(s,w){var f,p,j,b,n=[0],u=s.length,q=0
while(q<u){f=0
p=0
while(s.charAt(q++)=='0'){p++
if(q==u){n[0]=q
return n}}
j=1
for(b=g131;b>=1;b--){if(s.charAt(q++)=='1'){f+=j}
j
<<=
1}
f+=p*g28
n.push(f)
if(n.length-1>=w){break}}
n[0]=q
return n}
function
_53(n){var p
if(n==0){return '0'}
var q=0,w=''
do{q++
p=''
while(n>0){p=((n%2)?'1':'0')+p
n
>>=
1}
w=p.substr(1)+w
n=p.length-1}
while(n>0)
w='0'+w
while(q--
>
0){w='1'+w}
return w}
function
_77(n,u){var b,y,f,d,s,j=[0],y=n.length,p=0
while(p<y){b=0
while(n.charAt(p++)=='1'){b++}
if(b==0){g=0}
else{g=1
while(--b){f='1'+n.substr(p,g)
p+=g
g=0
d=1
for(s=f.length-1;s>=0;s--){if(f.charAt(s)=='1'){g+=d}
d
<<=
1}}}
j.push(g)
if(j.length-1>=u){break}}
j[0]=p
return j}
function
_99(d){d++
var g=''
while(d>0){g=((d%2)?'1':'0')+g
d
>>=
1}
var y=g.length
while(--y>0){g='0'+g}
return g}
function
_37(l,r){var e,z,a,t,d,h=[0],y=l.length,k=0
while(k<y){e=0
while(l.charAt(k++)=='0'){e++}
z='1'+l.substr(k,e)
k+=e
a=0
t=1
for(d=z.length-1;d>=0;d--){if(z.charAt(d)=='1'){a+=t}
t
<<=
1}
h.push(a-1)
if(h.length-1>=r){break}}
h[0]=k
return h}
function
_72(a){var k=''
while(a--
>
0){k+='0'}
return k+'1'}
function
_113(c,v){var i=[0],o=0
for(m=0;m<c.length;m++){if(c.charAt(m)=='1'){i.push(o)
if(i.length-1>=v){m++
break}
o=0}
else{o++}}
i[0]=m
return i}
function
_100(t){var r,l,z=t.length,k=[0,9],a=0,e=''
for(r=0;r<z;r++){l=(t.charAt(r)==g68.charAt(k[a]))?'0':'1'
a=1-a
k[a]=(k[a]+(l=='1'?k[1-a]:1))%256
e+=l}
k=[0,9]
a=1
t=''
for(r=z-1;r>=0;r--){l=(e.charAt(r)==g68.charAt(k[a]))?'0':'1'
a=1-a
k[a]=(k[a]+(l=='1'?k[1-a]:1))%256
t+=l}
return t}
function
_39(w){var v,m,c,q=w.length,o=[0,9],i=1,x=''
for(v=0;v<q;v++){m=w.charAt(v)
c=m
m=(m==g68.charAt(o[i]))?'0':'1'
i=1-i
o[i]=(o[i]+(c=='1'?o[1-i]:1))%256
x+=m}
o=[0,9]
i=0
w=''
for(v=q-1;v>=0;v--){m=x.charAt(v)
c=m
m=(m==g68.charAt(o[i]))?'0':'1'
i=1-i
o[i]=(o[i]+(c=='1'?o[1-i]:1))%256
w+=m}
return w}
function
_104(q){var p,w=0
for(var n=q.length-1;n>=0;n--){p=(q.charAt(n)=='1'?1:0)
w^=p
w
<<=
1
if(w>63){w=w-63}}
return g107.charAt(w)}
function
_112(){if(g3){return}
if(g25!=null){clearTimeout(g25)}
g16=!g16
if(g16){if(g165){alert('Sorry, busy loading')}
else{if(g154>=0){_88()
_82(false)}
g17.innerHTML=''
_4(false,'i12','i14')
g125.style.display=(g64?'none':'')
g173=g102
g102=-1
g154=-1
g4[g102]=new
_60(null,null,null,null)
_19(true)
if(g18.value==''){g18.focus()}
g45=''
_84(true)}}
else{g102=g173
g154=-1
_4(true,'i12','i14')
g125.style.display="none"
_19(true)}}
function
_84(g){var y
if(!g3){if(g18.value==g45){if(g){if(g45!=''){g17.innerHTML=''
var d=g154
if(d>=0){y=_6(d)}
g12=-1
g154=-1
_18()
if(d>=0&&g4[g102].r.length>d&&_111('i17').checked){_66(d,false,y!=_6(d))}
_90()}
g=false}}
else{g45=g18.value
g=true}}
g25=setTimeout('_84('+g+')',1500)}
function
_6(i){var o=g4[g102].r[i],h=o.a+' ',x=o.w
for(var k=0;k<x.length;k++){h+=x[k]+'\n'}
return h}
function
_41(){
var m=g51.innerHTML.replace(/[\r\n]/g,'')
for(var v=0;v<m.length;v++){_105(m.substr(v,1),false)}
_62()
g160=0
if(g78>0){_117('Use <B>Redo</B> to step through solution')
_90()}}
function
_1(){var r,l,d,g
while(g117.rows.length>g21){g117.deleteRow(g117.rows.length-1)}
for(var y=0;y<g21;y++){if(g117.rows.length<y+1){r=g117.insertRow(y)}
else{r=g117.rows[y]}
while(r.cells.length>g56){r.deleteCell(r.cells.length-1)}
for(l=0;l<g56;l++){if(r.cells.length<l+1){d=r.insertCell(l)}
else{d=r.cells[l]}
d.height=g111+'px'
d.width=g111+'px'
d.id='c'+y+'_'+l
d.onclick=function(){_47(this)}
_94(d,'W')}}
_97()}
function
_87(x,i){g38=true
g82=false
g63=true
g33=null
g39={y:
-1,x:
-1}
g30=0
g91=-1
g37=-1
g57=false
g170=0
g62=0
g74=new
Array(g88)
for(var o=0;o<g88;o++){g74[o]=false}
g172=false
g60=false
g22=false
g160=0
if(i||g64){g149=new
Array
g78=0}
else
if(g78>0){_117('Note: Move history is still available')}
if(g123){g123.innerHTML='\xA0'}
if(g8){g8.value=''}
g121=''
g3=x
if(g169!=null){_46(true,true,x)}}
function
_46(u,w,r){var d,l,q,p,c,b,m,n,j
if(u){g172=false
g1=new
Array
g147=0
g46=false
g103=true
g148=false
g106=false
try{var y=new
Array
var i=new
Array
var f='',o=0,g=0
for(d=0;d<g21;d++){g135[d]=new
Array(g56)
g86[d]=new
Array(g56)
y[d]=new
Array(g56)
q=g169[d]
for(l=0;l<g56;l++){b=' '
m=''
c=''
for(n=0;n<g27;n++){p=q.charAt(l*g27+n)
if(g102==g9[0]){switch(p){case
'*':p='@'
break
case
'+':p='!'
break}}
if(p>='1'&&p<='9'){if(c!=''&&p!=c){throw 'Pusher number clash'}
c=p}
else{j=_107(p)
if(j.type!=' '){if(b!=' '&&b!=j.type){throw 'Content type clash ['+b+'/'+j.type+']'}
b=j.type}
if(j.meta!=''){if(m!=''&&m!=j.meta){throw 'Cell type clash ['+m+'/'+j.meta+']'}
m=j.meta}}}
if((b=='#'||b=='!')&&m!=''){throw 'Cannot combine '+b+' with '+m}
if((m=='B'||m=='G'||m=='R'||m=='Y')&&(((b=='B'||b=='G'||b=='R'||b=='Y')&&b!=m)||((b=='A'||b=='F'||b=='Q'||b=='X')&&String.fromCharCode(b.charCodeAt(0)+1)!=m))){throw 'Filter/object mismatch ['+m+'/'+b+']'}
if(b=='@'||b=='&'||b=='A'||b=='F'||b=='Q'||b=='X'){if(c!=''){if(b=='&'){b='@'}
b=b+String(c)}
else
if(b=='&'){b='@0'}
if(f!=''&&(b=='@'||b!=f)){g106=true}
f=b}
else
if(c!=''){throw 'Orphaned pusher number '+c}
switch(b){case
' ':case
'.':case
'$':case
'*':case
'@':case
'+':case
'#':break
default:g103=false}
g135[d][l]=b
y[d][l]=m
if(b=='$'){o++}
if(m=='.'){g++
if(b!='$'){g147++}}
if(_55(d,l,false,true)){return}}}
_15(y)
for(d=0;d<g21;d++){for(l=0;l<g56;l++){g86[d][l]=new
_21(d,l,g135[d][l],y[d][l])}}
_34()
if(g16&&o!=g){g17.innerHTML='Box/goal mismatch'}
if(g148){_51()}
g57=false
_8(0,0,'',false,0,0,0,0,true)
if(g16&&g26){if(!g64){_2(false)}}
else
if(g162){_111('i22').href='?f='+g4[g102].y+'&p='+(g154+1)
_4(true,'i22')
_2(true)}
else
if(g26){_111('i22').href='#'
_111('i21').href='#'
_4(false,'i22','i21')}
if(!_9(-1,-1,'',false)){throw 'Missing pusher'}}
catch(s){if(g16&&g26){g17.innerHTML='Invalid puzzle definition<BR>'+s}
else{_76('Internal parse error\n'+s)}
_4(false,'i34')
if(g26){_4(false,'i32','i22','i21')}
return}
g172=true
if(w){var v=g4[g102]
.r[g154]
if(v.h!=null){g149=v.h
g78=v.g
v.h=null
if(g16){g160=0}
else{g160=v.q
_91(false,false,0)
_62()}}}}
if(r){if(g26){_4(false,'i32')}
_4(true,'i34')
_30(true,g21-1,true,true)}
else
if(w){for(var d=0;d<g21;d++){_30(true,d,false,false)}
if(g26){_4(false,'i32')}
_4(true,'i34')}
if(g84){g84.innerHTML=g4[g102]
.r[g154].a
if(g101){g84.style.color='#633925'
g84.style.backgroundColor='#D2AD74'}
else{g84.style.color='#A0FFFF'
g84.style.backgroundColor='#8080FF'}}
_38()}
function
_107(d){var l=''
switch(d){case
'.':l='.'
d=' '
break
case
'*':l='.'
d='$'
break
case
'+':l='.'
d='@'
break
case
'"':l="'"
d='@'
break
case
"'":case
'<':case
'>':case
'v':case
'^':case
':':case
'w':case
'W':l=d
d=' '
break
case
'B':case
'G':case
'R':case
'Y':case
'A':case
'F':case
'Q':case
'X':g148=true
break
case
'b':case
'g':case
'r':case
'y':g148=true
l=d.toUpperCase()
d=' '
break
case
'C':case
'H':case
'S':case
'Z':g148=true
d=String.fromCharCode(d.charCodeAt(0)-1)
l=d
break
case
'a':case
'f':case
'q':case
'x':g148=true
d=String.fromCharCode(d.charCodeAt(0)+1).toUpperCase()
l="'"
break
case
'c':case
'h':case
's':case
'z':g148=true
d=String.fromCharCode(d.charCodeAt(0)-1).toUpperCase()
l=':'
break
default:if(d>='1'&&d<='9'){g148=true
l=d
d=' '}}
return {
type:
d,meta:
l}}
function
_15(t){var k,d,a,z,l,r,e
_108('Wall')
_23(-1,-1)
for(k=0;k<g21;k++){for(d=0;d<g56;d++){if(g135[k][d]==' '&&g33[k][d]<=0){g135[k][d]='?'}}}
if(g103&&!g106){do{e=false
for(k=0;k<g21;k++){for(d=0;d<g56;d++){if(g135[k][d]==' '&&t[k][d]==''){l=0
for(r=0;r<4;r++){a=k
z=d
switch(r){case
0:a++
break
case
1:z--
break
case
2:z++
break
case
3:a--
break}
if(a<0||a>=g21||z<0||z>=g56||g135[a][z]=='#'){l++}}
if(l>=3){g135[k][d]='#'
e=true}}}}}
while(e)}
g1=new
Array}
function
_34(){var p,j,n,b=new
Array
for(p=0;p<g21;p++){for(j=0;j<g56;j++){switch(g86[p][j].s){case
'v':case
'<':case
'>':case
'^':n=_13(p,j)
if(n!=null){b.push(n)}}}}
for(var u=0;u<b.length;u++){p=b[u].y
j=b[u].x
g86[p][j].s=''
g135[p][j]='!'}}
function
_13(m,j){var n,p,u,b,c,v,w=new
Array
var q=''
do{w[m+','+j]=true
n=g86[m][j].s
if(n=='|'){n=q}
p=0
u=0
switch(n){case
'v':p=1
v='^'
break
case
'<':u=-1
v='>'
break
case
'>':u=1
v='<'
break
case
'^':p=-1
v='v'
break
default:return null}
b=m+p
c=j+u
if(b<0||b>=g21||c<0||c>=g56||g86[b][c].s==v){return null}
m=b
j=c
q=n}
while(!((m+','+j)
in
w))
return {
y:
m,x:
j}}
function
_30(z,l,e,d){var t,g,r,k,a,l,y
if(z){t=g117.rows[l]
g=t.cells}
if(d){if(l<g21-1){r=g117.rows[l+1].cells}
for(y=0;y<g56;y++){k=g[y]
k.style.backgroundColor='#FF0000'
while(k.firstChild!=null){k.removeChild(k.firstChild)}
if(l<g21-1){r[y].style.backgroundColor='#000000'}}
if(--l<0){setTimeout('_30(1,0,1,0)',50)}
else{setTimeout('_30(1,'+l+',1,1)',50)}}
else{for(y=0;y<g56;y++){if(_55(l,y,z,true)){return}
if(e&&l<g21-1){k=g117.rows[l+1].cells[y]
k.style.backgroundColor='#FF0000'}}
if(++l<g21){if(e){setTimeout('_30(1,'+l+',1,0)',50)}}
else{if(e){g3=false}
if(z){_90()
_4(true,'i46')
if(g78==0){_117('Good luck!')}}
if(g31&&g103&&!g106){if(_71()){return}}
g31=false}}}
function
_55(g,t,r,z){var d,h,x,o,i=g135[g][t].charAt(0),k=''
if(r){try{k=g86[g][t].s}
catch(a){alert('Bad cell at '+g+','+t)
return}}
if(k=='B'||k=='G'||k=='R'||k=='Y'){if(i==' '){i=k.toLowerCase()}
else
if(i==k){i=String.fromCharCode(i.charCodeAt(0)+1)}}
else
if(k=='.'&&(i=='B'||i=='G'||i=='R'||i=='Y')){i=String.fromCharCode(i.charCodeAt(0)+1)}
switch(i){case
' ':d='#FFFFFF'
h='E'
switch(k){case
'.':d='#FFFF00'
h='T'
break
case
"'":d='#000000'
h='I'
break
case
'v':d='#FF00FF'
h='51'
break;case
'<':d='#FF00FF'
h='52'
break;case
'>':d='#FF00FF'
h='53'
break;case
'^':d='#FF00FF'
h='54'
break;case
':':d='#202020'
h='N'
break
case
'w':d='#808080'
h='1'
break
case
'W':d='#404040'
h='2'
break}
break
case
'#':d='#A0A0A0'
h='W'
break
case
'@':h=_86(-1,-1,i,k,'@').b
d='#0000FF'
break
case
'A':case
'F':case
'Q':case
'X':h=_86(-1,-1,i,k,i).i
break
case
'$':if(r&&g86[g][t].z){d='#FF007F'
if(g168=='R'){h='Y'}
else{h='R'}
if(k=='.'){h=String.fromCharCode(h.charCodeAt(0)+1)}}
else
if(k=='.'){d='#00FF00'
if(g148){h='K'}
else{h=String.fromCharCode(g168.charCodeAt(0)+1)}}
else{d='#FF0000'
if(g148){h='J'}
else{h=g168}}
break
case
'?':if(g101){d='#8A6654'}
else{d=''}
h=''
break
case
'!':d='#000000'
h='0'
break
case
'#':d='#A0A0A0'
h='W'
break
case
'B':case
'C':d='#0000FF'
h=i
break
case
'G':case
'H':d='#00FF00'
h=i
break
case
'R':case
'S':d='#FF0000'
h=i
break
case
'Y':case
'Z':d='#FFFF00'
h=i
break
case
'b':d='#E8E8FF'
h='A'
break
case
'g':d='#E0FFE0'
h='F'
break
case
'r':d='#FFE8E8'
h='Q'
break
case
'y':d='#FFFFC0'
h='X'
break
default:_76('Bad cell type ('+i+','+g+','+t+')')
return true}
for(var e=0;e<g1.length;e++){if(g==g1[e].y&&t==g1[e].x){g24=d
if(z){o=_86(-1,-1,i,k,g1[e].type)
h=o.i
d='#FFA500'
g1[e].images=o}}}
if(r){var y=g117.rows[g].cells[t]
y.style.backgroundColor=d
if(g101&&h!=''){if(i=='#'){h=g90[g86[g][t].k]}
if(h=='J'||h=='B'||h=='G'||h=='R'||h=='Y'){switch(k){case
"'":h+='i'
break
case
':':h+='x'
break
case
'w':h+='1'
break
case
'W':h+='2'
break}}
_94(y,h)}
else
if(y.firstChild!=null){y.removeChild(y.firstChild)}}
return false}
function
_86(r,k,z,h,l){var e
if(r>=0&&k>=0){z=g135[r][k]
h=g86[r][k].s}
if(g103){l=g52}
var t='',a=''
switch(l.charAt(0)){case
'A':case
'F':case
'Q':case
'X':if(h==':'){return {
i:
'Ux',b:
'Ux'}}
t=String.fromCharCode(l.charCodeAt(0)+1)
a='c'
break}
if(z=='!'){return {
i:
'P0',b:
'U0'}}
if(h=='.'||h=='B'||h=='G'||h=='R'||h=='Y'){return {
i:
'O'+t,b:
'V'+a}}
switch(h){case
"'":e='i'
break
case
':':return {
i:
'Ux',b:
'Ux'}
case
'w':e='1'
break
case
'W':e='2'
break
default:e=''}
return {
i:
'P'+t+e,b:
'U'+a+e}}
function
_94(i,x){if(g101){var h='ic'+x+'.bmp',o=i.firstChild
if(o){
if(o.src.replace(/.*\//,'')!=h)
{o.src=baseURL+h}}
else{o=document.createElement("img")
o.setAttribute("src",baseURL+h)
o.setAttribute("border","0")
o.style.height=g111+'px'
o.style.width=g111+'px'
i.appendChild(o)}}}
function
_80(e){var k,h
g144=true
if(g165){return}
if(!e){e=window.event}
if(e.target){k=e.target}
else
if(e.srcElement){k=e.srcElement}
if(k){if(k.nodeType==3){k=k.parentNode}
if(k.tagName=='INPUT'||k.tagName=='TEXTAREA'){return}}
var a=(e.which)?e.which:e.keyCode
if(a>=64&&a<=90&&!e.shiftKey){a+=32}
if(a==78&&g154<0){_66(0,true,true)
return}
if(g3){if(a>=37&&a<=40){_102(e)}
if(!e.isFake){setTimeout('_80({keyCode:'+a+',shiftKey:'+e.shiftKey+',altKey:'+e.altKey+',ctrlKey:'+e.ctrlKey+',isFake:1'+'})',200)}
return}
if(a==73){_112()
return}
if(((g38&&!g172)||g97)&&a!=105&&a!=99){return}
if(!g82){_117('&nbsp;')}
_85()
var z=g4[g102].r,t=0
if(z){t=z.length
if(g145){t=g49[g102]+1}}
if(e.shiftKey){switch(a){case
38:if(document.body.firstChild.nodeName.toUpperCase()=='BR'){document.body.removeChild(document.body.firstChild)}
_102(e)
break
case
40:document.body.insertBefore(document.createElement('br'),document.body.firstChild)
_102(e)
break
case
63:if(g59){document.title='Crossoban'
_117('Diagnostics off')}
else{if(!g103||g106){document.title='Crossoban'}
else
if(g156==null){document.title='Committed: '+g163}
else{document.title='Working...'}
_117('Diagnostics on')}
g59=!g59
_102(e)
break
case
65:if(g103&&!g106){g14=!g14
if(g14){_71()
_117('Analysis enabled')}
else{_79()
_75(null)
_117('Analysis disabled')}
_78()
_90()}
break
case
66:g10=!g10
if(g10){_117('Blink enabled')}
else{_117('Blink disabled')}
break
case
67:if(g103){g52='@AFQX'
.charAt(('@AFQX'
.indexOf(g52)+1)%5)
_46(false,true,false)
_45(true)}
break
case
78:if(g154+1<t){_66(g154+1,false,true)}
else
if(t>0){_66(0,false,true)}
break
case
80:if(g154>0){_66(g154-1,false,true)}
else
if(t>0){_66(t-1,false,true)}
break
case
82:if(e.shiftKey&&g160>0){g160=0
_88()
_87(true,true)}
break
case
86:if(g32!=''){alert(g32)}
for(var x
in
window){if(x.charAt(0)=='v'&&x.charAt(1)>='A'&&x.charAt(1)<='Z'&&!(x
in
g159)){g159[x]=true
alert('Variable '+x+' not declared.')}}
break
case
77:g101=!g101
if(g101){g111=g132
_117('Images mode')}
else{g132=g111
g111=g95.offsetHeight
if(!g111){g111=g95.style.pixelHeight}
_117('Block mode')}
g3=true
_4(false,'i34')
_20(false)
_46(false,true,false)
setTimeout("_4(1,'i34');g3=0",500)
break}}
else
if(!e.altKey&&!e.ctrlKey){if(!g82){switch(a){case
33:if(g111>=10){g111-=5
_20(true)
_102(e)
_5('lv')
_90()}
break
case
34:if(g111<=200){g111+=5
_20(true)
_102(e)
_5('lv')
_90()}
break
case
35:if(g78>0&&g160<g78){g160=g78
_91(true,false,0)}
_102(e)
break
case
36:if(g160>0){g160=0
_91(true,false,0)}
_102(e)
break
case
45:_102(e)
case
114:if(g78>0&&g160<g78){g160++
_91(true,false,0)}
else
if(g103&&g147==0){_117('Solved - nothing to redo')}
else{_117('There is nothing to redo')}
break
case
8:case
46:_102(e)
case
117:if(g160>0){g160--
_91(true,false,0)}
else{_117('This is the beginning')}
break
case
110:if(g22){if(g154+1<t){_66(g154+1,false,true)}
else
if(t>0){_66(0,false,true)}}
break}}
switch(a){case
13:if(g82){if(g63){_117('<B>No path to destination</B>')}
else{g82=false
_70(true)
_117('&nbsp;')
_105(g152,true)
_90()}}
break
case
32:if(_9(-1,-1,'',true)){_102(e)}
break
case
37:case
52:_32('l',true)
_102(e)
break
case
38:case
56:_32('u',true)
_102(e)
break
case
39:case
54:_32('r',true)
_102(e)
break
case
40:case
50:_32('d',true)
_102(e)
break
case
99:if(g145){if(g42.innerHTML==''){_57()
if(!g97){_90()}}
else{_74()}
_102(e)}
if(g103){g168='BGRY'
.charAt(('BGRY'
.indexOf(g168)+1)%4)
_46(false,true,false)
_78()}
break
case
101:case
118:if(g8!=null){_109()
_102(e)}
break
case
104:if(g82){_115()}
else
if(g1.length>1){_117('Multiple pushers - please use arrow keys')}
else{if(!_108('')){g82=true
_23(-1,-1)
_90()
_45(false)}}
_102(e)
break
case
105:if(g40){_35(true)}
break
case
107:_116(true)
break
case
109:if(g8){if(g79!=null){clearTimeout(g79)
g79=null}
g8=null
g123=null}
else{g8=_111('i45')
g123=_111('i44')
if(g92){g79=setTimeout('_56()',500)}
else{_38()}
_4(!g92,'i44')
_4(g92,'i45')}
_4(g8!=null,'i39')
_90()
break}}
_62()}
function
_102(c){if(c.cancelable){c.preventDefault()}
else
if(!c.isFake&&window.event){window.event.returnValue=false}}
function
_32(n,q){var p,w,b,u,j,c
_85()
switch(n.toLowerCase()){case
'u':p=-1
w=0
break
case
'd':p=1
w=0
break
case
'l':p=0
w=-1
break
case
'r':p=0
w=1
break}
if(g82){var f=g1[0].y+p,m=g1[0].x+w
if(f>=0&&f<g21&&m>=0&&m<g56){_70(false)
g1[0].y=f
g1[0].x=m
g1[0].cell=null
g1[0].images=null
_23(-1,-1)}
return false}
if(q){_45(false)}
return _8(p,w,n,false,0,0,0,0,q)}
function
_8(gy,s,x,l,y,d,hb,z,g){var b,kz,t,r,mv,p,i,nd,xv,v,u,uk,j,rh,tw,n,o,a,ut,wp,av,re,qq=g147
g153=new
Array
var w=new
Array
var m=new
Array
if(l){try{if(g86[y][d].s!=':'){w.push({
y:
y,x:
d,dy:
gy,dx:
s,type:
g1[0].type,active:
true,live:
true,valid:
true})}}
catch(f){alert(y+','+d)}}
else
if(x==''){for(uk=0;uk<g21;uk++){for(j=0;j<g56;j++){xv=g135[uk][j]
switch(xv.charAt(0)){case
'@':case
'$':case
'A':case
'F':case
'Q':case
'X':case
'B':case
'G':case
'R':case
'Y':v=g86[uk][j].s
gy=0
s=0
switch(v){case
'v':gy=1
break
case
'<':s=-1
break
case
'>':s=1
break
case
'^':gy=-1
break}
if(gy!=0||s!=0){w.push({
y:
uk,x:
j,dy:
gy,dx:
s,type:
xv,valid:
true})
g135[uk][j]=' '}}}}}
else{for(r=0;r<g1.length;r++){kz=g1[r]
w.push({
y:
kz.y,x:
kz.x,dy:
gy,dx:
s,type:
kz.type,active:
true,live:
true})
if(g){_55(kz.y,kz.x,true,false)}}
if(g46&&w.length==0){_117('On a lock - you must undo to continue')}
g1=new
Array}
rh=y
tw=d
var xh=-1,q=-1,qc='',k=0,xk=false,h=false,dj=true,e=false,bd=true,dx=true,sj=null
do{if(!l){b=''
for(uk=0;uk<g21;uk++){for(j=0;j<g56;j++){xv=g135[uk][j]
if(xv==' '){v=g86[uk][j].s
if(v=='w'||v=='W'){b+=':'+uk+','+j+':'+xv}}
else
if(xv!='#'&&xv!='!'){b+=':'+uk+','+j+':'+xv}}}
for(r=0;r<w.length;r++){kz=w[r]
b+=':'+kz.y+','+kz.x+':'+kz.dy+','+kz.dx+':'+kz.type+':'+kz.active+':'+kz.live}
if(b
in
m){_42(true,'L')
return false}
m[b]=true}
for(r=0;r<w.length;r++){kz=w[r]
nd=kz.type.charAt(0)
uk=kz.y+kz.dy
j=kz.x+kz.dx
if(uk<0||uk>=g21||j<0||j>=g56){av=false}
else{xv=g135[uk][j].charAt(0)
if(xv=='!'){if(!l){_42(true,nd.match(/[@AFQX]/)?'P':'B')
return false}
dj=false
av=false}
else{av=true
v=g86[uk][j].s
switch(v){case
'v':if(kz.dy<0){av=false}
break
case
'<':if(kz.dx>0){av=false}
break
case
'>':if(kz.dx<0){av=false}
break
case
'^':if(kz.dy>0){av=false}
break
case
'w':case
'W':if(l){dj=false
av=false}
break}}
if(av){if(xv==' '){if(g148&&(v=='B'||v=='G'||v=='R'||v=='Y')&&(((nd=='B'||nd=='G'||nd=='R'||nd=='Y')&&nd!=v)||((nd=='A'||nd=='F'||nd=='Q'||nd=='X')&&String.fromCharCode(nd.charCodeAt(0)+1)!=v))){av=false}
else
if(bd&&nd=='$'){u=g86[uk][j]
if(u.t){if(g){_117('Bad move '+u.e+' blocked')}
av=false}}}
else
if(kz.live&&v!=':'&&(xv=='$'||((xv=='B'||xv=='G'||xv=='R'||xv=='Y')&&(nd=='@'||String.fromCharCode(nd.charCodeAt(0)+1==xv)))||(g148&&(xv=='@'||xv=='A'||xv=='F'||xv=='Q'||xv=='X')))){if(l){re=false}
else{re=_50(uk,j)}
w.push({
y:
uk,x:
j,dy:
kz.dy,dx:
kz.dx,type:
g135[uk][j],meta:
v,active:
re,valid:
(l&&uk==hb&&j==z)})
g135[uk][j]=' '
if(!l&&xv=='$'&&v=='.'){g147++}
if(g){_55(uk,j,true,false)}}
else{if(!l&&bd&&!g148&&nd=='@'&&xv=='@'){sj={y:
uk,x:
j,d:
x}}
av=false}}}
if(av){kz.Ny=uk
kz.Nx=j
for(p=0;p<4;p++){gy=0
s=0
switch(p){case
0:a='v'
gy=1
break
case
1:a='<'
s=-1
break
case
2:a='>'
s=1
break
case
3:a='^'
gy=-1
break}
n=kz.y-gy
o=kz.x-s
if(n>=0&&n<g21&&o>=0&&o<g56){xv=g135[n][o].charAt(0)
v=g86[n]
[o].s
if(v==a&&(xv=='$'||xv=='B'||xv=='G'||xv=='R'||xv=='Y'||xv=='@'||xv=='A'||xv=='F'||xv=='Q'||xv=='X')){if(l){re=false}
else{re=_50(n,o)}
w.push({
y:
n,x:
o,dy:
gy,dx:
s,type:
g135[n][o],meta:
v,active:
re})
g135[n][o]=' '
if(g){_55(n,o,true,false)}}}}}
else{kz.Ny=kz.y
kz.Nx=kz.x
if(!l&&(nd=='@'||nd=='A'||nd=='F'||nd=='Q'||nd=='X')){gy=0
s=0
switch(g86[kz.y]
[kz.x].s){case
'v':gy=1
break
case
'<':s=-1
break
case
'>':s=1
break
case
'^':gy=-1
break}
if((gy!=0||s!=0)&&(gy!=kz.dy||s!=kz.dx)){kz.dy=gy
kz.dx=s
r--}}}}
do{wp=false
for(r=w.length-1;r>=0;r--){kz=w[r]
for(mv=w.length-1;mv>=0;mv--){if(mv!=r){t=w[mv]
if(t.Ny==kz.Ny&&t.Nx==kz.Nx&&(kz.Ny!=kz.y||kz.Nx!=kz.x)){kz.Ny=kz.y
kz.Nx=kz.x
wp=true}}}}}
while(wp)
i=new
Array
for(r=w.length-1;r>=0;r--){av=false
kz=w[r]
nd=kz.type.charAt(0)
v=g86[kz.y][kz.x].s
if(kz.Ny!=kz.y||kz.Nx!=kz.x){if(l&&!kz.valid){g135[kz.y][kz.x]=kz.type
dj=false
if(++k>1){g29='Multiple boxes - please use the arrow keys'}
continue}
if(!l&&(v=='w'||v=='W')){if(v=='w'){g86[kz.y][kz.x].s='W'}
else{g135[kz.y][kz.x]='!'}
_55(kz.y,kz.x,true,false)}
kz.y=kz.Ny
kz.x=kz.Nx
xk=true
if(nd=='B'||nd=='G'||nd=='R'||nd=='Y'){e=true
h=true}
else
if(nd=='$'){h=true
if(g103&&!l){xh=kz.y
q=kz.x}}
v=g86[kz.y][kz.x].s
switch(v){case
"'":av=true
break
case
'v':kz.dy=1
kz.dx=0
av=true
break
case
'<':kz.dy=0
kz.dx=-1
av=true
break
case
'>':kz.dy=0
kz.dx=1
av=true
break
case
'^':kz.dy=-1
kz.dx=0
av=true
break}}
if(av){if(nd=='@'||nd=='A'||nd=='F'||nd=='Q'||nd=='X'){kz.live=true}
i.push(kz)}
else{if(!l){if(g135[kz.y][kz.x]=='!'){g172=false
if(g){setTimeout("_42(1,'P')",100)}
else{_46(false,true,false)}
_94(g117.rows[kz.y].cells[kz.x],'U0')
return false}
g135[kz.y][kz.x]=kz.type}
if(kz.active){if(l){if(dj){rh=kz.y
tw=kz.x}}
else
if(g86[kz.y]
[kz.x].s==':'){g46=true}
else{g1.push({
y:
kz.y,x:
kz.x,type:
kz.type})}}
else
if(l){if(kz.valid){xh=kz.y
q=kz.x
qc=nd
g135[hb][z]=qc}
else{g135[kz.y][kz.x]=kz.type}}
else
if(nd=='$'){if(v=='.'){g147--}
if(!l&&v!=kz.meta&&(v=='.'||kz.meta=='.')){g153[kz.y+':'+kz.x]=true
g57=true}}
if(g){_55(kz.y,kz.x,true,true)}}}
w=i
bd=false}
while(w.length>0&&dj)
if(l){if(dj){y=rh
d=tw}
return {
y:
y,x:
d,By:
xh,Bx:
q,c:
dj}}
for(r=0;r<g1.length;r++){kz=g1[r]
g135[kz.y][kz.x]=' '}
if(sj!=null){return _9(sj.y,sj.x,x,g)}
if(xk){if(h){x=h?x.toUpperCase():x.toLowerCase()
if(g103){_118(xh,q)}}
if(g&&x!=''){_105(x,true)
_90()
_68(e,true)}
if(g&&(h||g94!=null)){if(g94!=null){clearTimeout(g94)}
g94=setTimeout(_40,250)}}
if(g46&&g1.length==0){if(_9(-1,-1,'',g)&&g){_117('<B>Pusher locked - switched to next</B>')}}
return xk}
function
_50(g,f){for(var s=0;s<g1.length;s++){if(g1[s].y==g&&g1[s].x==f){g1.splice(s,1)
return true}}
return false}
function
_10(d,s,b,q,w,f){var y=-1,u=-1,j=b+d,n=q+s
if(j>=0&&j<g21&&n>=0&&n<g56){var p=g135[j][n]
if(p==' '||g15=='Wall'){b=j
q=n}
else
if(p=='$'&&j==w&&n==f){var g=j+d,c=n+s
if(g>=0&&g<g21&&c>=0&&c<g56&&g135[g][c]==' '&&!g86[g][c].t){b=j
q=n
y=g
u=c}}}
return {
y:
b,x:
q,By:
y,Bx:
u,c:
true}}
function
_93(z,a,t,k){switch(g86[z][a].s){case
'v':if(t<0){return false}
break
case
'<':if(k>0){return false}
break
case
'>':if(k<0){return false}
break
case
'^':if(t>0){return false}
break}
return true}
function
_9(g,r,a,e){var t,h,k,u,v,b,l,s,j,f,o,d,z=g21-1,y=g56-1
if(g1.length>0){z=g1[0].y
y=g1[0].x
for(b=0;b<g1.length;b++){l=g1[b].y
s=g1[b].x
if(l<z||(l==z&&s<y)){z=l
y=s}}}
var m=''
if(g>=0&&r>=0){m=g135[g][r].charAt(1)}
l=z
s=y
var p='',x=new
Array
do{s++
if(s==g56){s=0
l++
if(l==g21){l=0}}
o=g135[l][s]
t=o.charAt(0)
h=o.charAt(1)
if((t=='@'||t=='A'||t=='F'||t=='Q'||t=='X')&&(h==''||!x[h])&&g86[l][s].s!=':'){d=true
if(h!=''){for(j=0;j<=l;j++){for(f=0;f<g56;f++){if(j==l&&f==s){break}
o=g135[j][f]
if(o.charAt(1)==h){d=false}}}}
if(d){k=t
u=h
if(g<0||r<0){p='+'
break}
x[h]=true
p+='+'
if((l==g&&s==r)||(m!=''&&h==m)){break}}}}
while(l!=z||s!=y)
if(p==''){return false}
_115()
var i=g1
g1=new
Array
for(b=0;b<i.length;b++){v=i[b]
g135[v.y][v.x]=v.type
if(e){_55(v.y,v.x,true,true)}}
g=l
r=s
do{t=g135[l][s]
if(((u==''&&t==k)||(u!=''&&t.charAt(1)==u))&&g86[l][s].s!=':'){g135[l][s]=' '
g1.push({
y:
l,x:
s,type:
t})
if(e){_55(l,s,true,true)}
if(u==''){break}}
s++
if(s==g56){s=0
l++
if(l==g21){l=0}}}
while(l!=g||s!=r)
if(g46){g46=false}
else
if(e){_105(a==''?p:a,true)}
_45(k=='@')
return true}
function
_47(q){var m
if((g3||!g172)&&g38){return}
_115()
var x=q.id.substring(1).split('_'),z=Number(x[0]),w=Number(x[1]),o=g135[z][w].charAt(0)
if(o!='@'&&o!='A'&&o!='F'&&o!='Q'&&o!='X'&&g1.length>1){_117('Multiple pushers - please use the arrow keys')
return}
_117('&nbsp;')
if(o==' '){var i=g86[z][w],h=i.s
if(g91>=0&&g37>=0){var k=g135[g91][g37]
if(k=='$'&&i.t){_117('Bad move '+i.e+' blocked')}
else
if((h=='B'||h=='G'||h=='R'||h=='Y')&&k!=h){_117('Colour must match filter')}
else{var a=g1[0]
_94(g117.rows[a.y].cells[a.x],_86(a.y,a.x,'','',a.type).b)
_117('Searching...')
setTimeout('_48('+g91+','+g37+','+z+','+w+')',100)
_85()}}
else{if(_108('Jump')){return}
g1[0].y=z
g1[0].x=w
g1[0].cell=null
if(_23(-1,-1)){_105(g152,true)
_55(g39.y,g39.x,true,false)
g1[0].y=z
g1[0].x=w
g1[0].cell=null
_55(z,w,true,true)}
else{g1[0]=g39}}}
else
if(o=='$'||o=='B'||o=='G'||o=='R'||o=='Y'){var t=g91,c=g37,v=g1[0].type
if(g91==z&&g37==w){_85()}
else
if(o!='$'&&(v=='A'||v=='F'||v=='Q'||v=='X')&&o!=String.fromCharCode(v.charCodeAt(0)+1)){_117('Box colour must match pusher')}
else{if(_108('Box')){return}
g33[z][w]=0
g1[0].y=z
g1[0].x=w
g1[0].cell=null
if(_23(z,w)){var e=1
if(g91>=0&&g37>=0){_85()
_117('Box selection changed')
e=1000}
setTimeout("_117('Click on box destination')",e)
g91=z
g37=w
_110()}
g1[0]=g39}}
else
if(o=='@'||o=='A'||o=='F'||o=='Q'||o=='X'){_9(z,w,'',true)}}
function
_68(s,g){if(s){_51()}
g22=(!g148||g60)&&g147==0
if(g57&&g&&g26){_63(false)}}
function
_51(){var h,e,o,z,y,x,d,k,a,r,l
g60=true
var t=new
Array(g56)
for(y=0;y<g88;y++){l=g74[y]
g74[y]=true
h=0
for(o=g56-1;o>=0;o--){t[o]=0}
x=1
for(e=0;e<g21;e++){r=true
a=false
d=0
for(o=0;o<g56;o++){if(g136[g135[e][o]]==y){if(a){if(e&&g136[g135[e-1][o]]==y){k=t[o]
if(d!=k){for(z=0;z<g56;z++){if(t[z]==d){t[z]=k}}
d=k
h--}}
else{t[o]=d}}
else{if(e&&g136[g135[e-1][o]]==y){d=t[o]}
else{d=x++
t[o]=d
h++}}
a=true
r=false}
else{t[o]=0
a=false}}
if(r&&h>1){e=g21-1}}
if(h>1){g74[y]=false
g60=false}
if(h&&g74[y]!=l){g57=true
g170=y
g62=y}}}
function
_105(j,u){g149[g160++]=j
g78=g160
if(u){_62()}}
function
_91(y,l,s){var f,b,g
if(y&&s==0){_46(true,false,false)}
var d=false
for(var r=s;r<g160;r++){f=g149[r]
for(b=0;b<f.length;b++){g=f.charAt(b)
if(g=='+'){if(!_9(-1,-1,'',false)){d=true}}
else
if(!_32(g,false)){d=true}}}
if(d){_117('Warning: Move history is invalid')}
if(y){if(g172){_46(false,true,false)}
g172=true
_90()
if(g94!=null){clearTimeout(g94)}
g94=setTimeout(_40,250)}
if(!g3){_68(true,l)
g57=false}}
function
_48(g,a,f,d){var o,h,y,x,j,p,u,l,c=new
Date()
var r=g1[0]
g85=g147
var t=g135[g][a]
g135[g][a]=' '
var s=new
Array
var w=new
Array
var k=new
Array
var i=100,m=i
k[i]=1
s[i]=new
Array
s[i][0]=new
_12(g1[0].y,g1[0].x,g,a,0,'')
while(--i>0){k[i]=0
s[i]=new
Array}
for(;;){for(i=1;i<=m&&k[i]<1;i++);if(i>m){break}
u=--k[i]
g1[0].y=s[i][u].l
g1[0].x=s[i][u].v
g1[0].cell=null
o=s[i][u].c
h=s[i][u].o
y=s[i][u].i+1
p=s[i][u].d
s[i][u]=null
g135[o][h]=t
do{if(g114.length==0){_108('Box2')}
x=_23(o,h)
if(x!=null){if(x.By==-1||x.Bx==-1){alert('Failed')
return}
j=x.y+','+x.x+':'+x.By+','+x.Bx
if(!w[j]||w[j]>y){if(x.By==f&&x.Bx==d){_117('&nbsp;')
g1[0]=r
g135[o][h]=' '
g135[g][a]=t
u=g160
_105(p+g152,false)
_91(true,true,u)
_62()
return}
l=i+g152.length+1
while(m<l){m++
s[m]=new
Array
k[m]=0}
s[l][k[l]++]=new
_12(x.y,x.x,x.By,x.Bx,y,p+g152)}
g1[0]=g39
w[j]=y}}
while(g114.length>0)
g135[o][h]=' '}
g1[0]=r
_94(g117.rows[r.y].cells[r.x],_86(r.y,r.x,'','',r.type).i)
g135[g][a]=t
_117('<B>No path to destination</B>')}
function
_85(){if(g91>=0&&g37>=0){if(g155!=null){clearTimeout(g155)
g155=null}
_55(g91,g37,true,false)
g91=-1
g37=-1}}
function
_108(e){var z,r
if(g1.length>1){alert('Multiple pushers - please use arrow keys')
return true}
if(g46){_117('On a lock - you must undo to continue')
return true}
g70=new
Array
g70[1]=new
Array
g70[2]=new
Array
g114=new
Array
g15=e
g29=''
g33=new
Array(g21)
g166=new
Array(g21)
for(var t=g21-1;t>=0;t--){g33[t]=new
Array(g56)
g166[t]=new
Array(g56)
for(z=g56-1;z>=0;z--){r=g135[t][z].charAt(0)
if(r==' '){g33[t][z]=0}
else
if(e=='Wall'){if(r=='#'){g33[t][z]=-1}
else
if(r=='@'||r=='A'||r=='F'||r=='Q'||r=='X'){g1.push({
y:
t,x:
z,type:
r})
g33[t][z]=1
g70[1].push({
y:
t,x:
z})}
else{g33[t][z]=0}}
else{g33[t][z]=-1}
g166[t][z]=new
Array}}
if(e!='Wall'){g39={y:
g1[0].y,x:
g1[0].x,type:
g1[0].type,cell:
null}
g33[g39.y][g39.x]=1
g70[1][0]=g39}
g30=2
g63=false
return false}
function
_23(e,f){var j,a,n,u,c,sj,m,x,r,qc,g,t,i,y,p,b,v,z,o,w,q,d=g1[0].y,h=g1[0].x
g152=''
var qq=(g15!='Box2'||g114.length==0),s=true
while(s&&qq){s=false
y=0
i=g70[g30-1]
for(t=i.length-1;t>=0;t--){j=i[t].y
a=i[t].x
for(qc=0;qc<4;qc++){u=0
c=0
switch(qc){case
0:u=1
v='d'
break
case
1:c=-1
v='l'
break
case
2:c=1
v='r'
break
case
3:u=-1
v='u'
break}
if((g103&&g15=='Box2')||g15=='Wall'){x=_10(u,c,j,a,e,f)}
else{x=_8(u,c,v,true,j,a,e,f,false)}
if(x.c&&(x.y!=j||x.x!=a)){sj=x.y
m=x.x
g166[sj][m].push({
y:
j,x:
a,d:
v,By:
x.By,Bx:
x.Bx})
if(g33[sj][m]==0){g70[g30][y++]={y:
sj,x:
m}
g33[sj][m]=g30
s=true
if((g15==''||g15=='Jump')&&sj==d&&m==h){qq=false}}
if(g15=='Box2'&&x.By>=0){d=sj
h=m
for(g=g114.length-1;g>=0;g--){o=g114[g]
if(o.y==sj&&o.x==m&&o.By==x.By&&o.Bx==x.Bx){break}}
if(g<0){g114.push({
y:
sj,x:
m,By:
x.By,Bx:
x.Bx,d:
v,n:
g30})
if(g114.length>=4){qq=false}}}}}}
g70[++g30]=new
Array}
if(g15=='Box2'){if(g114.length==0){return null}
g63=false}
else{r=g33[d][h]
g63=(r<=0)}
if(g63){if(g15=='Wall'){return false}
if(g29!=''){_117('<B>'+g29+'</B>')}
else{if(g15=='Box'){_117('That box cannot be selected')
return false}
_117('<B>No path to destination</B>')}
if(g15=='Jump'){return false}
if(g15==''){n=g117.rows[g39.y].cells[g39.x]
n.style.backgroundColor='#00FFFF'
_94(n,_86(g39.y,g39.x,'','',g1[0].type).b)
_90()}}
else{if(g15=='Wall'){return true}
if(g15==''){_117('<B>&mdash;</B> Hop mode <B>&mdash;</B>')
_90()}
var k=''
if(g15=='Box2'){w=g114.pop()
d=w.y
h=w.x
k=w.d
r=w.n}
var l=new
Array
var xh=new
Array
l[0]=d
xh[0]=h
var xv=1,uk=false
while(--r>0){b=xv
for(p=0;p<xv;p++){j=l[p]
a=xh[p]
z=g166[j][a]
q=true
for(qc=z.length-1;qc>=0;qc--){o=z[qc]
sj=o.y
m=o.x
v=o.d
if(g33[sj][m]==r&&(g15!='Box2'||uk||o.d==k)){if(g15==''){n=g117.rows[sj].cells[m]
n.style.backgroundColor='#00FFFF'
w=_86(sj,m,'','',g1[0].type)
_94(n,(sj==g39.y&&m==g39.x)?w.b:w.i)}
if(p==0&&q){if(g15=='Box2'&&!uk){x={y:
j,x:
a,By:
o.By,Bx:
o.Bx}
v=v.toUpperCase()
uk=true}
g152=v+g152}
if(q){l[p]=sj
xh[p]=m
q=false}
else
if(g15!='Box2'){l[b]=sj
xh[b]=m
b++}}}}
xv=b
for(p=0;p<xv;p++){for(qc=p+1;qc<xv;qc++){if(l[qc]==l[p]&&xh[qc]==xh[p]){for(g=qc+1;g<xv;g++){l[qc]=l[g]
xh[qc]=xh[g]}
xv--}}}}
if(g15!=''){if(g15=='Box2'){if(x.By<0&&x.Bx<0){alert('Internal box position failure')}
return x}
return true}}
if(!g63||!g101){_55(d,h,true,true)}}
function
_70(l){var d
for(var r=0;r<g21;r++){for(d=g56-1;d>=0;d--){if(g33[r][d]>0){_55(r,d,true,false)}}}
_55(g1[0].y,g1[0].x,true,l)}
function
_115(){if(g82){g82=false
_70()
_117('&nbsp;')
g1[0]=g39
_55(g39.y,g39.x,true,true)
_90()}}
function
_118(n,p){;}
function
_62(){var i='}{M',c
if(g8){var v=''
g121=''
for(var m=0;m<g160;m++){c=g149[m]
if(c.length>1){g121+=_49(v)+(g92?'':g23)+'('+_49(c)+')'
if(!g92){g121+=g23}
v=''}
else{v+=c}}
g121+=_49(v)
if(g92){g8.value=g121}
else{g123.innerHTML=(g121==''?'\xA0':g121)}
_4(true,'i39')}}
function
_49(j){var u
if(!g134.checked){return j}
var n='',b='',q=0
for(var p=0;p<j.length;p++){u=j.charAt(p)
if(u==b){q++}
else{if(q>=3){n+=String(q)}
else
if(q==2){n+=b}
n+=b
q=1
if(!g92&&b!=''){n+=g23}}
b=u}
if(q>=3){n+=String(q)}
else
if(q==2){n+=b}
n+=b
return n}
function
_38(){_111('i44').style.width=((g111*g56)-10)+'px'}
function
_109(){var a='}{E'
if(g79!=null){clearTimeout(g79)
g79=null}
g92=!g92
_4(!g92,'i44','i42')
_4(g92,'i45','i43')
if(g92){_111('i45').focus()
g79=setTimeout('_56()',500)}
_62()}
function
_56(){var q,v
if(!g3&&!g165&&g8.value!=g121){g121=g8.value
g149=new
Array
g160=0
var c=null,w=''
for(var m=0;m<g121.length;m++){q=g121.charAt(m)
if(q=='('){c=''
w=''}
else
if(q==')'){if(c!=null&&c!=''){g149[g160++]=c}
c=null
w=''}
else
if(q.match(/^[dlruDLRU+]$/)){v=q
if(w!=''){w=parseInt(w,10)
while(--w>0){v+=q}
w=''}
if(c==null){g149[g160++]=v}
else{c+=v}}
else
if(q.match(/^[0-9]$/)){w=w+String(q)}}
g78=g160
_91(true,false,0)}
g79=setTimeout('_56()',500)}
function
_74(){_4(false,'i10')
g42.innerHTML=''
if(!g97){_90()}}
function
_17(){var e,x,h,a,k,z
g90=new
Array
var v=new
Array(4)
var t=new
Array
var o=0
for(var i=0;i<256;i++){e=i.toString(2)
while(e.length<8){e='0'+e}
for(x=g164.length-1;x>=0;x--){h=true
a=g164[x]
for(k=3;k<a.length;k+=2){if(e.charAt(Number(a.charAt(k)))!=a.charAt(k+1)){h=false}}
if(h){v[Number(a.charAt(0))]=a.substring(1,3)}}
z=v.join('')
if(t[z]==undefined){if(o<10){t[z]='0'+o}
else{t[z]=o}
o++}
g90[e]=t[z]}}
function
_26(y,e){var g,u,z,f,l,r,k,s,a,j,t=new
Array
var p=0,d=y.length,g=0,b=''
while(g<d){j=1
if(e==1){z=10
f=10}
else
if(e==2){z=13
f=13}
else{z=15-parseInt(y.charAt(g++),10)
f=15-parseInt(y.charAt(g++),10)
if(y.charAt(g)=='I'){f
*=
2
j=2
g++}
b+=z+'x'+f+' '}
l=''
r=0
while(l.length<z*f){u=y.charAt(g++)
if(u>='0'&&u<='9'){r=parseInt(u,10)
if(r<3){r+=10}}
else
if(u=='-'){l+=y.charAt(g++)}
else
if(r==0){l+=u}
else{do{l+=u}
while(--r>0)}}
if(l.length>z*f){alert('Error '+p+' '+l.length+' '+z+'x'+f+'\n'+l)
g8=_111('i45')
_4(true,'i39','i34')
g8.value=l
return}
k=new
Array
for(s=0;s<z;s++){k[s]=l.substr(s*f,f)}
if(e==2&&p>=25){a='Bonus level'}
else{a='Level '+(p+1)+' of '
if(e==1){a+='20'}
if(e==2){a+='25'}
if(e==3){a+='35'}}
t[p++]=new
_64(a,k,j)}
return t}
function
_98(s,j){for(var u=g4[s].r.length-1;u>=0;u--){if(_3(s,u)==j){return u}}
return -1}
function
_88(){if(g154>=0){var v=g4[g102].r[g154]
v.q=g160
v.g=g78
v.h=g149}}
function
_3(g,t){var r,z
if(g<0||t<1){return 0}
var d=g4[g].r[t],s=d.w,a=s.length,k=s[0].length,l=0,h=0
for(var y=a-1;y>=0;y--){for(r=k-1;r>=0;r--){z=s[y].charCodeAt(r)
if(z!=32){l+=z*h
h+=577}}}
return l}
function
_52(c){var v,m
if(g3||!g172||!g10||(g82&&g63&&(g135[g1[0].y]
[g1[0].x]=='#'||g135[g1[0].y]
[g1[0].x]=='+'))){g89=setTimeout('_52(1)',500)}
else{for(var i=0;i<g1.length;i++){m=g1[i]
v=m.cell
if(!v){v=g117.rows[m.y].cells[m.x]
m.cell=v}
if(!m.images){m.images=_86(m.y,m.x,'','',m.type)}
if(c&&g144){v.style.backgroundColor='#FFA500'
_94(v,m.images.i)}
else{v.style.backgroundColor=g24
_94(v,m.images.b)}}
if(c){g89=setTimeout('_52(0)',g82?250:1500)}
else{g89=setTimeout('_52(1)',250)}}}
function
_45(x){if(g89!=null){clearTimeout(g89)}
_52(x)}
function
_110(k){if(k){_55(g91,g37,true,false)
g155=setTimeout('_110(0)',500)}
else{var h=g135[g91][g37]
g135[g91][g37]=' '
_55(g91,g37,true,false)
g135[g91][g37]=h
g155=setTimeout('_110(1)',250)}}
function
_42(j,n){var w,c,p,u
if(j){g172=false
g3=true
for(c=g56-1;c>=0;c--){g146[c]=0}
g124=g56
switch(n){case
'P':_117('<B>Black holes are deadly</B>')
break
case
'B':_117('<B>Black holes eat anything</B>')
break
case
'L':_117('<B>Conveyor loops are deadly</B>')
break}}
do{c=parseInt(Math.random()*g56,10)
w=g146[c]
if(w<g21){p=g117.rows[w].cells[c]
if(g101){_94(p,'D')
if(w>0){p=g117.rows[w-1].cells[c]
p.style.backgroundColor='#C52026'
while(p.firstChild!=null){p.removeChild(p.firstChild)}}}
else{p.style.backgroundColor='#FF0000'}
g146[c]++
if(w+1>=g21){g124--}
setTimeout("_42(0,'"+n+"')",1)
return}}
while(g124>0)
if(n=='P'){_68(true,true)}
g3=false
var q=_111('xAutoAdvance').checked
if(!g22||!q){_87(true,!g16&&!g22)
_46(false,true,false)}}
function
_63(u){var b,p,w,n,y,g,j,s,f
g57=false
if(g22&&(!g148||g170==g62)){_117('Congratulations!')}
g3=true
var f=false
for(var q=0;q<g21;q++){for(b=0;b<g56;b++){y=g135[q][b]
if(y!='$'){y=g136[y]}
g=g117.rows[q].cells[b]
if((y=='$'&&((g22&&g103)||g153[q+':'+b]))||y==g170){if(u){if(g101){_55(q,b,true,true)}
else{g.style.backgroundColor=w}}
else{j=g86[q][b].s
s=false
if(y=='$'){if(j=='.'){s=true}}
else
if(g74[y]){s=true
if(!g22){_117('Colour completed!')}}
else
if(!g22){_117('Colour broken!')}
if(s){p='#FFFFFF'
w='#000000'
n='M'}
else{p='#000000'
w='#FF0000'
n='L'}
if(j=="'"){n+='i'}
if(j=='.'||j=='B'||j=='G'||j=='R'||j=='Y'){n+='t'}
if(g101){_94(g,n)}
else{g.style.backgroundColor=p}}
f=true}}}
if(u){g170=(g170+1)%g88
if(g22&&g148&&g170!=g62){if(f){setTimeout('_63(0)',150)}
else{_63(false)}}
else{g3=false
if(g22){_67()}}}
else{setTimeout('_63(1)',f&&g22?500:150)}}
function
_67(){_88()
if(g162){_5('ly')}
var b=null,n=g154
if(g102>=0){b=g4[g102]
var f=new
Image(1,1)
f.src='http://discussionator.com/log.php?p=c&t='+encodeURIComponent(b.a)+'&v='+encodeURIComponent('#'+(n+1))}
var p=g4[g102].r.length
do{n=(n+1)%p}
while(n!=g154&&g11[n])
if(n!=g154){if(g145){if(n>g49[g102]){g49[g102]=n
_19(false)
g26.rows[g154+1].
cells[1].style.backgroundColor='#80FF80'
g75[g102]=_3(g102,g49[g102])
_5('lv')}
else
if(n==0){var j=0
switch(b.y){case
'U':j=8
break
case
'R':j=16
break
case
'T':j=32
break}
if(!(g127&j)){g127
|=
j
_5('lv')
alert("Congratulations!  You've solved them all!")
_19(false)}}}
else
if(g154>=0){var u=g26.rows[g154+1].cells[1]
u.firstChild.className='cDone'}
if(_111('xAutoAdvance').checked){_66(n,true,true)}
else{_117('<B>Solved - press N to start next puzzle</B>')}}
else
if(_111('xAutoAdvance').checked){_82(false)}}
function
_96(){_111('i29').style.height=(_114()-100)+"px"}
function
_69(){if(g101){g72=500}
else{var y=g95.offsetHeight
if(!y){y=g95.style.pixelHeight}
if(y!=g111&&y>4&&y<500){g111=y
_20(false)
g72=100}
else
if(g72<1000){g72+=50}}
setTimeout('_69()',g72)}
function
_20(j){var p,g,u
for(var f=g117.rows.length-1;f>=0;f--){p=g117.rows[f].cells
for(g=p.length-1;g>=0;g--){u=p[g]
u.height=g111+'px'
u.width=g111+'px'
if(g101){u=u.firstChild
if(u!=null){u.style.height=g111+'px'
u.style.width=g111+'px'}}}}
if(g101){_117(parseInt((g111*100)/50,10)+'% zoom')}
else{_117(g111+' &times; '+g111)}
if(j&&navigator.appName.substring(0,9)=='Opera'){_4(false,'i34')
setTimeout("_4(1,'i34');_38()",250)}
else{_38()}}
function
_97(){var p=_114()
if(g116){g116.style.height=(p-(_111('i14').offsetHeight+25))+"px"}
if(g47){g47.style.height=(p-25)+"px"
if(g26.rows.length>0&&g47.scrollWidth>g47.style.width){g47.style.width=(g47.scrollWidth+15)+"px"}}}
function
_114(){if(window.innerHeight!=null){return window.innerHeight}
if(document.documentElement&&document.documentElement.clientHeight){return document.documentElement.clientHeight}
if(document.body!=null){document.body.clientHeight}
return null}
function
_35(f){var y,s=_111('i24')
g97=!g97
if(g97){_4(false,'i25','i32')
if(g154>=0){_4(false,'i27')
_4(true,'i26')}
else{_4(false,'i26')
_4(true,'i27')}
_111('i23').style.visibility="visible"
_4(true,'i28')
_4(false,'i34','i46','i22','i21')
_111('i30').src=baseURL+'icSokoban.gif'
_111('i31').src=baseURL+'icInterlock.gif'
var d=document.getElementsByTagName('img')
for(var g=0;g<d.length;g++){y=d[g].id
if(y.match(/^ic/)){d[g].src=
baseURL+y.replace(/_[0-9]+$/,'')+'.bmp'
}}
_96()
_111('i29').focus()}
else{_4(true,'i25')
_4(false,'i26','i27','i33')
_111('i23').style.visibility="hidden"
_4(false,'i28')
_4(g154<0,'i32')
_4(g154>=0,'i34','i46')
_4(g154>=0&&!g145&&!g64,'i22','i21')
if(f&&!g38){_87(true,true)
_116(false)}}}
function
_116(w){g150=!g150
if(g150){_111('i47').style.visibility="visible"
_4(false,'i50')
_4(true,'i49','i51')
_90()}
else{_111('i47').style.visibility="hidden"
_4(false,'i49','i51','i52','i53','i54','i58','i59','i55','i56','i57','i60','i61','i62','i63','i64','i65','i66','i67','i68','i69','i70')
_4(true,'i50')}
if(w&&g26){_78()}}
function
_90(){if(g150){if(g82){_4(false,'i52','i53','i54','i58','i59','i55','i60','i61','i62','i63','i64','i65','i66','i67','i68','i69','i70')
_4((g1[0].y!=g39.y||g1[0].x!=g39.x)&&!g63,'i57')
_4(true,'i56')}
else{_4(g106,'i52')
_4(g160>0,'i53','i58')
_4(g78>0&&g160<g78,'i54','i59')
_4(true,'i55')
_4(false,'i57','i56')
_4(g160>0,'i60')
var u=0,j=g4[g102].r
if(!g145&&j!=null){u=j.length}
_4((!g145&&u>1)||g154>0,'i63')
_4((!g145&&u>1)||g154<g49[g102],'i64')
_4(g154>=0&&!g8,'i61')
_4(g154>=0&&g8,'i62')
_4(g103&&!g106&&!g14,'i65')
_4(g103&&!g106&&g14,'i66')
_4(g145&&g75[g102]>0&&g42.innerHTML=='','i67')
_4(g145&&g42.innerHTML!='','i68')
_4(g111<=200,'i69')
_4(g111>=10,'i70')}}}
function
_57(){if(g75[g102]>0){
var n=window.location.pathname.replace(/^\/+/,'')+'?'+
g75[g102],j=g49[g102]+1,p=g4[g102].a+' level '+j
g42.innerHTML='<SPAN STYLE="margin:10px"><B>To return to level '+j+' later, please bookmark the following link!</B>'+' &nbsp; &nbsp; &nbsp; '+'<SPAN CLASS="cZap" onclick="javascript:_74()"'+' TITLE="Close">'+'&nbsp;&#215;&nbsp;</SPAN>&nbsp;'+'<BR>&nbsp;<A HREF="'+n+'" TITLE="'+p+'" CLASS="cGo cExt">'+p+'</A>'+'<BR><TT>&nbsp;<A HREF="'+n+'" TITLE="'+p+'" CLASS="cGo cExt">'+'http://'+window.location.host+'/'+n+'</A></TT></SPAN>'
_24("i11","#FFD1DC")
g42.style.backgroundColor='#FFD1DC'
_4(true,'i10')
window.scrollTo(0,0)}}
function
_103(){if(navigator.appName.substring(0,9)!='Microsoft'){g144=false
_117('<BLINK><B>Click on background to continue playing</B></BLINK>')}}
function
_27(){if(navigator.appName.substring(0,9)!='Microsoft'){g144=true
_117('&nbsp;')}
_45(true)}
g137=255
g112=150
g50=15
g2=50
g61=32768
g142=256
g105=(g142*4)+1
g5=1
g93=2
g161=4
g73=8
g156=null
g58=null
g151=new
Array
g66=new
Array
g108=new
Array(4)
g119=new
Array(g137)
g77=0
g99=0
g7=0
g133=0
g171=null
g35=0
g141=0
g120=new
Array(g142)
g122=new
Array(g142)
g139=0
g96=0
g140=null
g43=null
g128=0
g53=0
g20=0
g44=0
g81=0
g48=0
g98=null
g80=null
g71=0
g109=null
g87=null
g174=0
g176=false
g163=0
function
_71(){var t,e
_79()
if(!g14){return}
g167=5
g96=parseInt((g115*1048576)/(120*g167),10)
if(g96<=0){alert('No memory to allocate.')
return true}
g140=new
Array(g96*g167)
g163=0
g99=(g21+2)*(g56+2)
g7=g56+3
g133=(g21*(g56+2))+g56
g43=new
Array(g99*2)
g171=new
Array(g99)
g98=new
Array(g99)
g80=new
Array(g99)
g108[0]=-
(g56+2)
g108[1]=-1
g108[2]=g56+2
g108[3]=1
g151[' ']=0
g151['#']=g5
g151['?']=g5
g151['$']=0
g151['.']=g161|g93
g151['*']=g161|g93
g151['@']=0
g151['+']=g161|g93
g151[0]=' '
g151[g5]='#'
g151[g161]='$'
g151[g93]='.'
g151[g161|g93]='*'
g151[g73]='@'
g151[g73|g93]='+'
g66[' ']=0
g66['#']=g5
g66['?']=g5
g66['$']=g161
g66['.']=g93
g66['*']=g161|g93
g66['@']=g73
g66['+']=g73|g93
for(var z=0;z<g99*2;z++){do{e=0
for(t=0;t<4;t++){e=(e<<8)^parseInt(Math.random()*256,10)}
g43[z]=e
for(t=0;t<z;t++){if(g43[t]==g43[z]){g43[z]=0}}}
while(g43[z]==0)}
g71=2147483647
return _31()}
function
_31(){var o,i,h,x
g141=0
var v=_101()
g77=0
for(h=0;h<g99;h++){g171[h]=g151[v.charAt(h)]
if(g171[h]==undefined){alert('Illegal character in initial template - '+h+': '+v.charCodeAt(h))
return true}
if(g171[h]&(g161|g93)){if(g77>=g142){alert('Too many boxes/goals.')
return true}
g120[g77++]=h}}
if(g77<=0){alert('Template is missing boxes/goals.')
return true}
_58()
g176=false
g100=g112
g118=new
Date().getTime()
g44=100
g81=g44
g139=0
setTimeout(_61,g2)
_119('Processing started')
return false}
function
_61(){var k,a,t,z,x,o=new
Date().getTime()
while(g109!=null){k=g109
g109=g140[g109+4]
if(g109==null){g87=null}
g174--
g140[k+4]=null
if(_81(k)){g156=null
if(g94==null){_40()}
_119('Out of memory, committed '+g163+' box'+'(es)')
return}
if(--g81<=0){z=parseInt((new
Date().getTime()-g118)/1000,10)
if(z>30&&z<=60){g100=parseInt(g112-((g112-g50)*(z-30)/30),10)}
z=new
Date().getTime()-o
if(z>0){g44=parseInt((g44*g100)/z,10)}
g81=g44
g156=setTimeout(_61,g2)
return}}
var h=-1
if(g139>0){for(h=g139-1;h>=0;h--){a=h+(g77-g139)
if(++g119[h]<=a){while(++h<g139){g119[h]=g119[h-1]+1}
break}}}
if(h<0){if(g176){g156=null
if(g94==null){_40()}
_119('Limit reached, committed '+g163+' box'+'(es)')
return}
g163=g139++
if(g94==null){_40()}
if(g139>g137||g139>g77){g156=null
_119('Committed '+g163+' box'+'(es)')
return}
for(h=0;h<g139;h++){g119[h]=h}}
for(h=0;h<g99;h++){if(g171[h]&g161){g171[h]^=g161}}
g128=0
g53=0
for(h=0;h<g139;h++){x=g120[g119[h]]
g171[x]^=g161
g122[h]=x
g128^=g43[x*2]
g53^=g43[(x*2)+1]}
g71=0
for(h=0;h<g99;h++){g80[h]=0}
g141=0
t=g71
while(!g176&&_83(t)){_7(g128,g53,g141,0,0,null)}
g35=null
g81=g44
g156=setTimeout(_61,g2)}
function
_40(){var r,j,k,f,s,x
g94=null
if(g163<1){return}
g58=new
Array(g99)
var a=g171
g171=new
Array(g99)
var p=_101(),u=new
Array(g142)
var z=new
Array(g99)
var l=0,i=0
for(f=0;f<g99;f++){g171[f]=g66[p.charAt(f)]
if(g171[f]==undefined){alert('Illegal character in current template - '+f+': '+p.charCodeAt(f))
g171=a
return null}
if(g171[f]&g73){l=f
g171[f]^=g73}
if(g171[f]&g161){if(i>=g142){alert('Too many boxes/goals.')
g171=a
return null}
u[i++]=f}}
var o=g128,y=g53,t=g80,g=g71,d=g122
g80=new
Array(g99)
g71=0
for(f=0;f<g99;f++){g80[f]=0}
g141=l
g122=new
Array(g142)
var h=new
Array(g142)
var b=true
for(var n=1;n<=g163&&b;n++){for(f=0;f<n;f++){h[f]=f}
do{for(f=0;f<g99;f++){if(g171[f]&g161){g171[f]^=g161}}
g128=0
g53=0
for(f=0;f<n;f++){s=u[h[f]]
g171[s]^=g161
g122[f]=s
g128^=g43[s*2]
g53^=g43[(s*2)+1]}
x=_89()
if(!_59(g128,g53,x)){for(f=0;f<n;f++){s=u[h[f]]
r=parseInt(s/(g56+2),10)-1
j=parseInt(s%(g56+2),10)-1
g86[r][j].z=true
_55(r,j,true,false)
z[(r*g56)+j]=true}
b=false}
for(f=n-1;f>=0;f--){k=f+(i-n)
if(++h[f]<=k){while(++f<n){h[f]=h[f-1]+1}
break}}}
while(f>=n)}
g171=a
g128=o
g53=y
g80=t
g71=g
g122=d
if(b){return null}
_75(z)
return p}
function
_101(){var x,v,i,o,h='',x='##'
for(var m=0;m<g21;m++){h+='#'
for(v=0;v<g56;v++){if(m==0){x+='#'}
i=g135[m][v]
if(m==g1[0].y&&v==g1[0].x){i='@'}
o=g86[m][v].s
if(o=='.'){if(i=='$'){i='*'}
else
if(i=='@'){i='+'}
else{i='.'}}
h+=i}
h+='#'}
return x+h+x}
function
_75(c){var m,i=0
for(var v=0;v<g21;v++){for(m=0;m<g56;m++){if(g135[v][m]=='$'&&(c==null||!c[i])){g86[v][m].z=false
_55(v,m,true,false)}
i++}}}
function
_79(){var r
if(g156!=null){clearTimeout(g156)
_119('Processing stopped')}
g156=null
if(g94!=null){clearTimeout(g94)
g94=null}
g163=0
g140=null
g43=null
g171=null
g98=null
g80=null}
function
_58(){for(var u=(g96*g167)-1;u>=0;u--){g140[u]=null}
g20=0
g109=null
g87=null
g174=0
g35=null}
function
_83(s){for(g141=g7;g141<=g133&&(g171[g141]&(g161|g5)||g80[g141]>s);g141++);if(g141>g133){return false}
_89()
return true}
function
_89(){var n,w,c
if(g71>=2147483647){g71=0
for(var p=0;p<g99;p++){g80[p]=0}}
g71++
var m=0
g98[m]=g141
g80[g141]=g71
var q=g141
while(m>=0){n=g98[m--]
for(c=0;c<4;c++){w=n+g108[c]
if((!(g171[w]&(g161|g5)))&&(g80[w]!=g71)){g80[w]=g71
g98[++m]=w
if(w<q){q=w}}}}
return q}
function
_81(o){var w,p,m,i,b,q
if(g20%1000==0){_119('Boxes: '+g139+', open: '+g174+', states: '+g20+' ('+parseInt((g20*100)/g96,10)+'%)')}
_43(o)
g141=g140[o+2]>>16
_89()
var j=(g140[o+2]>>8)&255,n=j,v=new
Array(g105)
var c=new
Array(g105)
var u=0
do{b=g122[n]
for(i=0;i<4;i++){q=b+g108[i]
if(g80[q]==g71&&!(g171[q+g108[i]]&(g161|g5))){v[u]=n
c[u]=i
u++}}
n=(n+1)%g139}
while(n!=j)
while(u--
>
0){n=v[u]
i=c[u]
_14(n,i)
m=_89()
w=g128
p=g53
_65(n,i)
if(_7(w,p,m,n,i,o)){return true}}
return false}
function
_14(g,s){var f=g122[g],y=f+g108[s]
g171[f]
&=
~
g161
g171[y]
|=
g161
g122[g]=y
g141=y+g108[s]
g128^=g43[f*2]^g43[y*2]
g53^=g43[(f*2)+1]^g43[(y*2)+1]}
function
_65(t,h){var k=g122[t],a=k-g108[h]
g171[k]
&=
~
g161
g171[a]
|=
g161
g122[t]=a
g141=k
g128^=g43[k*2]^g43[a*2]
g53^=g43[(k*2)+1]^g43[(a*2)+1]}
function
_7(w,c,n,m,v,q){if(_59(w,c,n)){return false}
if(g48==null){g176=true
g109=null
return true}
g140[g48]=w
g140[g48+1]=c
g140[g48+2]=(n<<16)|(m<<8)|v
g140[g48+3]=q
g140[g48+4]=null
g20++
if(g109==null){g109=g48}
else{g140[g87+4]=g48}
g87=g48
g140[g87+4]=null
g174++
return false}
function
_59(f,y,b){var g
g48=((f&0x7FFFFFFF)%g96)*g167
var s=0
do{g=g140[g48]
if(g==null){return false}
if(g==f&&g140[g48+1]==y&&(g140[g48+2]>>16)==b){return true}
g48+=g167
if(g48>=g96*g167){g48=0}
s++}
while(s<g61)
g48=null
return false}
function
_43(f){var s,h=f,d=null
if(h!=null){while(g140[h+3]!=null&&g140[h+4]==null&&h!=g35){g140[h+4]=d
d=h
h=g140[h+3]}}
while(g35!=null&&g35!=h){if(g140[g35+3]!=null){s=g140[g35+2]
_65((s>>8)&255,s&255)}
g140[g35+4]=null
g35=g140[g35+3]}
if(d!=null){if(h!=null){g140[h+4]=d}
do{s=g140[d+2]
_14((s>>8)&255,s&255)
d=g140[d+4]}
while(d!=null)}
else
if(f!=null){g141=g140[f+2]>>16}
g35=f}
function
_4(i){var x
for(var o=1;o<arguments.length;o++){x=arguments[o]
try{if(i){_111(x).style.display=''}
else{_111(x).style.display="none"}}
catch(dummy){alert('Failed to refresh '+x)}}}
function
_76(w){g172=false
if(g117.rows.length>0){for(var q=0;q<g1.length;q++){_55(g1[q].y,g1[q].x,true,false)}}
g1=new
Array
_117(w)
alert(w)}
function
_117(q){g143.innerHTML=q}
function
_119(j){if(g59){document.title=j}}
function
_24(v,i){var m=_111(v)
_106(m,i)
_54(m,i)}
function
_106(g,s){var b,f=document.createElement("b")
f.className="rtop"
f.style.backgroundColor="#FFFFFF"
for(var y=1;y<=4;y++){b=document.createElement("b")
b.className='r'+y
b.style.backgroundColor=s
f.appendChild(b)}
g.insertBefore(f,g.firstChild)}
function
_54(s,b){var u,j=document.createElement("b")
j.className="rbottom"
j.style.backgroundColor="#FFFFFF"
for(var f=4;f>0;f--){u=document.createElement("b")
u.className='r'+f
u.style.backgroundColor=b
j.appendChild(u)}
s.appendChild(j,s.firstChild)}
function
_78(){var l=_111('xAutoAdvance')
g127=(_111('i17').checked?0:1)|(l&&l.checked?0:2)|(g150?0:4)|(g127&(8+16+32))
g157=(g14?0:1)|('BGRY'
.indexOf(g168)<<1)
_5('lv')}
function
_5(l){var u,j,y,g,q,c,n,w,t,z
if(!g26){return}
var r=_28('data')
g11=new
Array
var p=r.split('_')
for(y=p.length-1;y>=1;y--){if(p[y].substring(0,2).match(/[URT]:/)){p.splice(y,1)}}
var s=g4[g16?g173:g102].y
if(g162&&l!='lv'){var b=g4[g102].r.length,e=s.length,a=false
for(var d=p.length-1;d>=1;d--){if(p[d].substring(0,e)==s&&p[d].charAt(e)==':'){a=true
t=0
w=-1
j=p[d].substring(e+1).split(',')
for(y=0;y<j.length;y++){if(j[y]=='x'){q=0
c=b-1}
else{g=j[y].split('-')
q=Number(g[0])
if(g.length>1){c=Number(g[1])}
else{c=q
t=q}}
if(y==0){if(l=='if'){g12=t}}
else{for(n=q;n<=c;n++){g11[n]=1}
if(c>w){w=c}}}
if(l.substring(0,4)=='i'||l.charAt(0)=='i'){return}
t=g154
if(l=='ly'){g11[g154]=1
if(g154>w){w=g154}
if(g154+1<b){t=g154+1}}
u=t
q=-1
c=-1
for(y=0;y<=w;y++){if(g11[y]){if(q<0){q=y
c=y}
else
if(y==c+1){c=y}
else{u+=','+q
if(c>q){u+='-'+c}
q=y
c=y}}}
if(q==0&&c==b-1&&s!='X'){u+=',x'}
else
if(q>=0){u+=','+q
if(c>q){u+='-'+c}}
p[d]=s+':'+u
break}}}
if(l.substr(0,4)=='l'||l.charAt(0)=='l'){z=g111
var f='0',m='0',v='0'
if(p.length>0){g=p[0].split(',')
if(g162&&l!='lw'&&l!='ly'){s=g[0]}
if(g.length>1){z=g[1]}
if(g.length>2){f=g[2]}
if(g.length>3){m=g[3]}
if(g.length>4){v=g[4]}
n=g75[g9[0]]
if(n>0){f=n}
n=g75[g9[1]]
if(n>0){m=n}
n=g75[g9[2]]
if(n>0){v=n}}
if(g101){z=g111}
p[0]=s+','+z+','+f+','+m+','+v+','+g107.charAt(g127)+g107.charAt(g157)
u=p.join('_')
if(g162&&!a&&(l=='ly'||l=='lw')){u+='_'+s+':'+g154
if(l=='ly'){u+=','+g154}}
_73('data',u)}}
function
_73(o,h){var x
x=new
Date()
x.setTime(x.getTime()+(1461*86400000))
document.cookie=o+"="+h+"; expires="+x.toGMTString()+"; path=/"}
function
_28(i){var c,v,m
c=document.cookie.split(';')
for(m=0;m<c.length;m++){v=c[m]
while(v.charAt(0)==' '){v=v.substring(1,v.length)}
if(v.indexOf(i+"=")==0){return v.substring(i.length+1,v.length)}}
return ''}
function
_111(x){return document.getElementById(x)}
function
_60(l,d,r,e){this.y=l
this.a=d
this.x=r
this.r=e}
function
_64(d,z,e){var r,l=0
for(r=0;r<z.length;r++){if(z[r].length>l){l=z[r].length}}
while(l%e!=0){l++}
for(r=0;r<z.length;r++){while(z[r].length<l){z[r]+=' '}}
this.a=d
this.w=z
this.m=e
this.q=0
this.g=0
this.h=null}
function
_21(e,d,r,t){var a,l,k
this.s=t
var z=''
for(var y=-1;y<=1;y++){for(a=-1;a<=1;a++){if(y!=0||a!=0){l=e+y
k=d+a
if(l<0||l>=g21||k<0||k>=g56){if(r=='#'){z+='0'}
else{z+='1'}}
else
if(g135[l][k]=='#'){z+='1'}
else{z+='0'}}}}
this.k=z
this.t=t!='.'&&t!='v'&&t!='<'&&t!='>'&&t!='^'&&((this.k.charAt(1)=='1'&&(this.k.charAt(3)=='1'||this.k.charAt(4)=='1'))||(this.k.charAt(6)=='1'&&(this.k.charAt(3)=='1'||this.k.charAt(4)=='1')))
if(this.t){this.e='into corner'}
else{this.e=null}
this.z=false}
function
_12(h,o,k,x,t,a){this.l=h
this.v=o
this.c=k
this.o=x
this.i=t
this.d=a}
g6="@ R2   G4 B9 Y0 G  B5 YR9 R Y6 Y6 R1 G5 G B2 YG  B4 R G3 GB3 GG5 G4 @R3 Y9 G G0 R3 B8 YG2  @2 9 RGYBGY4 B4 R4 Y RY B4 G GB R4 R4 G4 BRYGBY2 0 !!  R3 3!@7 !2  R G Y4 B R G3 G  Y!B R Y  G Y B2  !8 3!  B3 !!2 R3 Y4 Y ! ! G4 R!R!B6 Y@G6 !!B!!5 !G Y!5 !3 !6 YBG2   R4 B5 #  YRRG#3 G  R8 ##BR  Y3 #G7 G##8 R  R3 B  R5 R#6 #G9 @1 RB  B#4 GY  Y#9 #7 @GYY3 GY4 RR  ##  GYY6 GR BB5 R2 3 !@ 4!  !  G !!  G  R  ##R3 !8 !!#  Y3 #!!# YGY  #!!R  Y4 !2  R##  R ! #4!  !#R6 R#B@  G4 Y4 R G5 YGB B Y5 !!GYR3 RR!!7 Y YRG  B  Y G9 R3 Y#G6 G#4#Y##3 R@5 RG 3# Y##3 G0 !4 !  B R !  RY5 G  B4 !R  R!G!9 R  B8 RY3 rB4 GGggr GR  B3 rr rr2 Y @  bY8 3g5 B ggH Y6 R  RG3 B2   G7 Y5 R4 R3 g8 RGB5 ryY@YyS3 GBBGR Y4 b H9 bB3 G1 B6 R r#R6 g r#  G  g# Br#3 g#  R r  g#3 R  Sg  G  R RCZ GG @ #b  y4 #b3 #yY #b  B  #y bB3 B Y#y@6 b3 #Y B  G# yRy B  bB5 Y7 G4R7 Y9 Y6 Rr G  gBg #Y4 G#3 r7 3r!3 !bbrSr4 !Cb!!R5 bb  R4 BB!4 BY8 GR4 !YY @5 yy4 G !!yZ!3 GgHgyy!3 !3gRb6 gGr8 y  R  G R3 GR @Y G4 G!rb!YY  B !yg!6 BRYG B3 Y R G3 b8 bYy6 gBRr6 !G!r6 gg1 Y R R G4 G#B#B#Y  Y R@R G4 G#R# #Y  R G B Y  bb6 y!B!6 yY4 !!Y4 RG !!  G  Y  !!  Y4 B!!4 ##  R3 4#  BG3 #3 3!3 R B  !!G4 BR 3!3 @3 3!3 !!@R#3 3!R6 G!4 Y8 BB4 G4 YY3 ## GG RRB  B3 R9 G5 !B6 Y3!3 #Y !!G3 GY3 Y !6 !4 R Y G5 R Y G  G  R Y G YR  R Y G #3 R Y G @3 R Y G3 !6 ! R3 R#3 #"
g138='2+++1#++#R  B3 R #++#9 #++#9 #++#9 #++#4 *R3 #++#9 #++#R RB3 R #++#9 #++#9 #++1#2+++3+7#5+#G6 #3+#G  GY4 #+#1 ##9 G ##  Y6 GY##9 G ## Y9 ##4 G6 ##6 Y4 #+# *7 #3+#7 #5+7#3+++#+#+#+#+#3+# #Y# #Y# #+#8 YB #+#7 R #+#4 Y6 #+#  B6 #+#5 B5 #+#R3 Y4 #+#  Y8 #+# Y5 B #+#3 R4 R  #+# # # # #*#3+#+#+#+#+#++2###Y #8 3# #B  Y4 ##G G*4 B  3# G4 G3 ##1 ##5 B5 ##5 Y5 ##  B8 ##1 ##7 G B ##1 2###1 R RY7 RY3 GG  R8 RY2 6 G6 Y8 G7 *2 2 3 G2 9 G  Y5 R0 Y2   *Y0 YGB6 G0 G9 Y2 G3 Y B G  G2 3 Y  G2 8 Y5 B7 B  G2 4 B Y G9 B5 G5 G B2 2 4 B7 B6 RBRBR7 R5 R6 B RBR B6 R B*B R6 B RBR B6 R5 R7 RBRBR6 B7 B2 2 4 *2 2 3 BG5 RY4 G  Y4 R6 Y G9 Y B B9 G GRR9 BRRY0 RY7 Y7 B4 RY5 BG2 2 4 2 9 YY8 4RY9 R0 RY GB8 RYRGB8 RY GB  *7 B9 G4B8 GG2 0 5GB5Y2   2 4 Y3 Y7 GR  B  G6 +2 6 +5 R2 3 G*7 Y B3+B R7 Y G3+9 Y B2 9 +6 +  G6 R3 R*0 R  5+G5+  +9 +  + Y3 RBY +  + G7 +  + R R+Y3 +  R3 + +3 +  +3 B+G G +  +7 B +  + RBY3 R +  +9 +  5+B5+2   R +8 +  *B B3 R  B  +4 + +4 +  +G  +  +2 8 +  G3 + B+1 +B +B  +  +3 B3 R8 G5 +  G  +  +  G  +4 R G4 R5 +4 +5 2+++*9 3+0 3+  YRBGRB  3+  B4 Y  3+  G YG B  3+  Y BR G  3+  B4 R  3+  RGYRGY  3+0 3+0 2+2+4+2   R5 B9 3#R3#5 B3 R  B6 3# B##5 R  # #B4 G3 B# #5 G4 # #B3 # #0 # #3 B G R  Y 3#5 Y  # Y*B3 RYG  #G3#8 ## Y 3#3 3#  B  #5 #2 G3 +  +R +9 R6 #5 + G3 3# + 3+ + 3#R Y  +5 #*5 G B4 R  +  +  +5 B0 #5 # G  B3#3 3#B  ##*4 8# #G#3 R  R # # 3#G##R# #B# G4 3# # 6# R3 #3 Y  # # # # 4#3 # #5 B  3# ##  4# #4 #7 # 4#  ## #4 Y5 B # 6#  4#8 2###yb  Br5 ##by3 rYrH  ##5 3r3 ##6 B  + ##3 Y4 gg ##1 ##B6 B# 3#3 B Y  # 3#7 g# G##5 R HRG3#8 #*2#R##2 4 Y R7 3gG5 g3 rRg  G3 g3 r4#y##gHg  r#R4 4#3 B3 B *Rr4 #Yy3 4#Y  7#bCb4 B6 b8 R3 b4 Y2 2 +R  *8+ # 3#3+ r3 # R0 #Y3#+3# #  # #  +  # B +# # 3+ # #3+  6#r##+b Yb3+4 +by  bb+6 b3ybb+G  Y  byCbb  B  SB b5y+G3 G +4b3+4 +++4 +4y3+4 Y  R7 BB b9 B  b3 br4 BBYb3 b  grgG  +## # ++rH# 3+  # ++rg#  +  R3 +Rg3 5#Y#++g#7 b#+gg# YG  *# #gHg#5 B#B3+gB6 B++9 4# 3# # #4 #3 # # ##Y# # # # # C *  #  Y Y4#G# # # #6 # 3# 3# ## # ##4 S #G3 ## 4#r4#B## #9 ## # ##R3#B #R8 3b4# 9#  +1 +rR  GGR  G6 G+ G Y3 # #  G  Y +  # ##3 Y4 r# G#G Y +R3 BGb5 R4 # #7 + B# # #Y #4 #G 4# ##3 ##*6 Y BR##G#GY4#RR 4#g##R5 9 4# GY 4#5 # # #  # 3# #6 #C#3 #R# ## # #  ##g# #  # ## #*R4 ##  # ## ##B5 # ##  B  3# # ## 3#B#6 # #3 y 3#Y3 #B5#3 r  ybH6 rr H2 3 B Br S g4 #B# # #+4 Y YGB# #+3 +  ##3 Y8 # #B# G6 # # #4 R4# # ##Y3 R  GyY* g7 # # ##3 +RR ##R #4 + Y3 3# G2   +bCbb3+#3 +3b3y ##G#  yy*yb6 R yy4b+ # #  +yy R3+#R  4+ 5+ 4+##Y#  ## ##+G # 4#3 Y #3 B3 G G# #g# #R#8 # G ##B3#3 # G B  ##  +1 +2+++  5+  4+ B*Y5 4+ +R 4+ 4+0 3+ + 6+G4+9 4+ 7+ 4+0 ++  6+ + ++1 9+5 9+BRYG'
g67="660#7 ## RY4 ##7 ##  Y@ R ##7 ## Y R Y ##7 0#660#7 ##4 RR ##3 G RG##BB  G  ##3 BG  ## @5 ##7 0#660#@Y Y3 ##7 ##7 ##3 Y3 ##BB5 ## G3 GY##B  G3 0#443 5#4 3# R@3#  # R3 G #  #7 ## #G6 R3#7 3#GY Y3 R# ##  Y4 #  # 3R G #  3#3 3#4 5#3 443 5#5 #  R  #3 #B  Y Y # #3Y B  G ##  B5 G##9 ##6 R  ##Y4 R@R # # G3 G #3 # G3 #5 5#3 442#9 ##  !! RR!R## B !  R! ##  B  RB  ##5 @3 ##9 ## !G3 Y R## !GY5 ##5 Y G 2#442#7 G ## RBG##3 ## Y@Y # ! ## GB#5 ##9 ##!!Y!5 ##  R6 ##7 ! ##9 2#484 3#  Y # # GR #G# B G# # R  # #@Y R> #4 # #3 Y# # &  #R#3 B# #4 3#22!4 3!4 ! #4 !  ##3 G!#  Y  Y!R4 #  !Y @YR4 R  !6 !4 3!4 3! 7! 3!4 3!4 !6 !  Y B7 !3 GG  B!7 !8 ! R4 !4 3!4 !444!3 6! R5 3!  # ! R  !!  R 3!  !  !!4 R4 @!R!! !3 R!!  ! !R !3 R3 ! !! R3!4 3!7 6! R 4!227!6 7! RG G 7!6 3!v3<  B Y 3!v3!6 3!v3!  Y3 3!v5!^3!  B3 3!^3!R  !  3!^3! @ G B3>^3! Y4 7!3 & R7!6 7!444#3!5#3 3!3 ## Y  Y4 ##  ##G##  #!! #! !#  !!  B3 Y  !!  #! !# !!#  ##R##  ##R G4 B ##@R 3!3 5#3!4#663 3!4 GHR R@G  gH  B3 !7 !!BR Y Y !!7 ! Zy3 bb  Yy R CB4 3!3 88 R3 RB G #G#  G@  # rbbrrb  YRgY#  Y3 #B3 Y3 444 Rg Y8 #6 R!G !B !6 R#  @  R R  #3 B y#r3#g#C#Z  R  #  B3 R3 #  B4 !  ! G!7 #0 b5 26 @ 3!  !Y  yybY4 R! !4 R ! !3 Y  ! !  B#Y #R#  ##  g S  B#  #G#  #G  ! !  #3 ! ! B4 ! yB5 r yB  !  3!  !66  Y9 S b5 #^#^#3 y<@ B>Z3 # Y #3 g<R  >C3 #v#v#5 r g2 43  6!G R  @3!5> !  3!^!!  R > 3!^6! R  G^5 !1 !  Y Gv R Y !gr3!v3!Y !3 !!v3!  !  4<3!Y ! Y 6!  !229 # R##  3#3 #  ##  #  G3#G #3 #8 #  3bB## #  ## # 3<Y@# Y # # G 4#3 # ##br G3 ^ #  #B  #  3#3 ##  #4 # #  #RR3#  # #  #7 #6 ##  3#560 R B@G Y v>7v>v^vv>v>3v^vv^<5v<>^4v<3>vv<<v>>3v<3>8v R B G Y 44!5 >g  ! B  G >g4 R  !'! R  yy  !'! Y  ^^3!'3!4 3'"+'"'+"3'3 G3!'3!vv4 !'! Bbb B  !'!  R  Y r<3 Y  !3 #5 !364!3#4!#4'#!!#'a3'#!!4'x''!!#'qf'a#!!#''"+'"'+"''#3!#a3'#4!'a3'4!3'#'3!#3'#5!#!'8!#3!602!4!6 !4 & !! R4 !4 Y !!5 &!6 !!4 R ! Y4 !!6 !6 !!3 R  !4 Y !!6 !6 2!4!227#6 #5'#  Y3 #5'#  G3 #'a3'3 G@  #x4'#  G3 #5'#  G3 3#y3#  Y3 #5 <6 # B3 <3 R  7#^6# R R B5 ##9 @ 2###22!3 5! s ! GB  !:!  ::  G B5 Y: R3 R ! !5 !3 !! !!3 3! 3!G3! 3!:3 R@B3 :3! 3!Y3! 3!3 !! !!3 !  Y  ! ! G6 GY9 Y G:!:!5 !3 5!3 !222!!!6#5 !!# @  # #Y#B!!#BRGY# # # !!#8>: !!#RBGY# #:#:!!#&  &#5 !!6# R3 !! G  G6 !!  G5 B  !! GYGY6 !!1 2!!!66@3 G5 :: R  :3 4: :  B Y : :3 :G : : 3:  R y : 4: : :  B :Y:0 22 w2  ! !!  B  !W R!wG  3!w!3 4!Y!3 !5 !  !3 !5 !  ! 3!  !B&  G  ! R  !  !4 !4 !! ! !  !!4 !3 !! Y  G  w ! !w3 !  @3! ! 4!6 w7 22I2  !2 2  ! G R W W9 R7 !7 B2 5 !2 5 B7 w2 2  W5 # R #7 Y7 W3 @3 Y2 5 W5 # G #7 B7 w2 2  !7 w3 !5 G7 !3 w WwYwR !2  ! w R5 G W2  ! G W w6 44I!3 w Gww w w w w3 !2 7 w5 Y5 # w # w5 w9 #3 #3 Y5 #3 # # # R # # #9 w3 Y @ R3 w5 # B # # # B # # #7 w W W #3 #3 R7 W BwW # w #3 G7 W W w2 3 !2 7 ! 442 !!B !! RR4 B  !  !  R##  !  !3 #QR: :3 !  R ' B  !3 : :BA#3 !  !  ##B  !  !  R4 BB !! R!!2 445 !6 Q  Gb RYX  RB  !  R6 Br6 G G # Y B !r!g3#b!y!5 #6 Y YRyG G7 !  BY  F  RgB  A6 !5 00I2!2!7!6 <9 w1 !!  W'R<Y3 ! !3 # # # B5 !!0 ! : ' ' ' ' ' ' ' !!4 <5 ! !3 # # #7 !!2 4 #3 #3 Y3 !!2 8 # w # # !!4 ! ! ! @ @ Q @ @9 !!4 ! ! ! R7 v v > v v !!4 ! ! !9 v > G v v !!4 ! ! ! R7 < v < v v !!4 ! ! !9 v < < < v !!5 WB9 B ' < < < v !!0 R5 !7 R3 2!2!7!01I2!2!5!  #-1& # !2 5 !! -2& ! !3 #3 # Y #3 #3 !!  # !0 -2& R7 !!  !3 #3 #3 #3 #3 #3 !!  !7 Y  -1&1 !!  !3 #3 #3 #3 #3 #3 !!  !2 1 !!  !3 #3 #3 #3 #3 #3 !!  !3 G3 R3 B3 B3 G3 !!  !3 #3 #3 #3 #3 # ! !!  !2 7 ! # !!  !3 #3 #3 #3 # ! !3 !!  !2 3 ! #3 # 2!2!5!220# 3#7 G3 ##v##v##W##'3# < RB3 # v # #  #>3 R  # W B## 3#@## #3 & #3 ##G#w3#r# GB4#3 # 3# # w  Y # B # # ##'##  Y5 Y R wr3 # #  w  6# #"
g164=["000001131","004011131","0021031","0201130","0221030","101112041","105112141","1031041","1211140","1231040","210315061","214315161","2123160","2303061","2323060","311416170","315416171","3134160","3314061","3334060"]
if(g51||crunchID=='20100104201438'){g113=_111('Definition')
if(g113){baseURL='Data/'
g65=g113.innerHTML
g18=g113
g45=g65
g16=true
g102=-1
g154=-1
g4[g102]=new
_60(null,null,null,null)
g11=new
Array
_18()
g12=0}
_17()
if(_114()>768){g111=50}
else{g111=25}
if(g40){_44()}
g132=g111
_1()
g72=100
_69()
_87(false,true)
g150=(g127&4)
_116(false)
if(g113){_66(0,false,true)}
else
if(g65!=''){i=_36(g65)
if(i){alert('Sorry, unable to decode the puzzle data (error '+i+').')}}}
else{alert("Sorry, but the version of this page has changed and your browser's cache is out of date.\nTry re-loading, or clear your browser's cache and start again.")}
