and here a little example of application of my prog....
music made with the above code....
just test it:
Gosub Video
Gosub Initialisation_Variable
Gosub Creer_Music
Gosub Creer_Texture
Gosub Creer_Environnement
Gosub Creer_Objet
`######################################################################################
do
Gosub Inputs
Gosub Update_Cam
Gosub Position_Gun
Gosub Update_Ciel
if mouseclick()=1 then click=1
if (mouseclick()=0) and (click=1)
position object 500+bullet,x#,y#,z#
rotate object 500+bullet,Ax#,Ay#,0
move object 500+bullet,50
show object 500+bullet
BulletCoord#(bullet,1)=object position x(500+bullet)
BulletCoord#(bullet,2)=object position y(500+bullet)
BulletCoord#(bullet,3)=object position z(500+bullet)
BulletSpeed#(bullet,2)=1000*sin(wrapvalue(Ax#+180))
BulletSpeed#(bullet,1)=(1000*cos(Ax#))*sin(ay#)
BulletSpeed#(bullet,3)=(1000*cos(Ax#))*cos(ay#)
lance=1
click=0
endif
gosub Gerer_Bullet
if explosion<>0 then gosub Gerer_Explosion
set cursor 0,0
print Screen Fps()
sync
loop
end
`############################################################################################
Video:
autocam off
sync on
sync rate 0
set camera range 1,3010
backdrop off
set display mode 640,480,16
hide mouse
randomize timer()
print "relaxez..."
return
`********************************************************************************************
Initialisation_Variable:
x#=5000
z#=5000
lance=0
dim BulletCoord#(100,3)
dim BulletSpeed#(100,3)
Bullet=1
Grav#=0-500
dim Ptime#(900)
dim object#(900,10)
Return
`********************************************************************************************
Creer_Texture:
Rem Ciel
create bitmap 1,257,257
ink rgb(0,62,242),0
box 0,0,256,256
ink rgb(0,0,50),0
for i=1 to 20000
dot rnd(255),rnd(255)
next i
get image 1,0,0,256,256
delete bitmap 1
Rem Arbres
create bitmap 1,257,257
for i=1 to 50
ang=rnd(359)
dist1=rnd(37)
x=60+dist1*cos(ang)
y=60+dist1*sin(ang)
ink rgb(0,255,0),0
for j=1 to 20
circle x,y,j
next j
ink rgb(30,150,20),0
for l=1 to 200
ang=rnd(359)
dist1=rnd(40)
x=60+dist1*cos(ang)
y=60+dist1*sin(ang)
dot x,y
next l
ink rgb(125,77,15),0
x2=rnd(15)+53
y2=rnd(100)+95
for k=1 to 12
circle x2,y2,k
next k
next i
blur bitmap 1,4
get image 2,0,0,118,200
delete bitmap 1
rem Bonhomme tout nue
create bitmap 1,256,256
ink rgb(255,25,117),0
box 50,5,90,50
box 65,50,75,60
box 40,60,100,150
box 40,100,60,200
box 80,100,100,200
box 5,70,135,90
get image 3,0,0,210,200
blur bitmap 1,4
get image 4,0,0,210,200
delete bitmap 1
Rem Herbe
create bitmap 1,1025,1025
ink rgb(0,90,20),0
box 0,0,512,512
ink rgb(0,60,5),0
for i=1 to 20000
dot rnd(512),rnd(512)
next i
rem terre
ink rgb(110,57,0),0
box 512,0,1024,512
ink rgb(125,77,15),0
for i=1 to 20000
dot rnd(512)+512,rnd(512)
next i
get image 99,0,0,1024,1024
delete bitmap 1
rem mire
create bitmap 1,51,51
ink rgb(0,250,0),0
box 10,24,22,26
box 28,24,40,26
box 24,10,26,22
box 24,28,26,40
ink rgb(255,0,0),0
box 24,24,26,26
get image 5,0,0,50,50
delete bitmap 1
create bitmap 1,128,128
for n=1 to 5000
x=rnd(32)+rnd(32)+rnd(32)+rnd(32):y=rnd(32)+rnd(32)+rnd(32)+rnd(32)
i1=abs(64-x):i1=i1*i1:i2=abs(64-y):i2=i2*i2
i=256-6*sqrt(i1+i2):ink rgb(255,i,0),0:dot x,y
next n
get image 6,0,0,128,128
delete bitmap 1
create bitmap 1,1025,1025
for i=-150 to 640 step 50
for j=-150 to 640 step 50
paste image 6,i,j,1
next j
next i
get image 7,0,0,640,640
delete bitmap 1
Return
`********************************************************************************************
Creer_Environnement:
make object sphere 1,6000
set object 1,1,1,0
texture object 1,1
make matrix 1,10000,10000,20,20
prepare matrix texture 1,99,2,2
fill matrix 1,0.0,1
randomize matrix 1,100
update matrix 1
fog on
fog color rgb(0,61,236)
fog distance 3010
y#=get ground height(1,x#,z#)+150
return
`*********************************************************************************************
Creer_Objet:
rem Fusil
make object box 2,5,5,40
set object rotation ZYX 2
make object box 3,3,3,20
make mesh from object 1,3
delete object 3
make object box 4,4,4,20
make mesh from object 2,4
delete object 4
color limb 2,0,rgb(184,104,32)
add limb 2,1,1
delete mesh 1
color limb 2,1,rgb(75,75,75)
add limb 2,2,2
delete mesh 2
color limb 2,2,rgb(75,75,75)
offset limb 2,1,0,0,20
offset limb 2,2,0,4.5,0
rem Arbre
grosx#=300
make object plain 3,grosx#,grosx#*1.6
make mesh from object 1,3
delete object 3
for i=3 to 100
make object i,1,0
add limb i,1,1
set object rotation ZYX i
texture object i,2
position object i,rnd(10000),0,rnd(10000)
position object i,object position x(i),(grosx#*1.6/2)+get ground height(1,object position x(i),object position z(i)),object position z(i)
yrotate object i,rnd(360)
rotate limb i,1,0,90,0
set object i,1,0,0
next i
delete mesh 1
rem box pour bouger fusil
make object cube 401,1
set object rotation ZYX 401
rem set object 401,1,0,0
scale object 2,70,70,70
glue object to limb 2,401,0
position object 2,7,-5,20
rotate object 2,350,350,0
Make object Plain 402,10,10
set object 402,1,0,1
texture object 402,5
lock object on 402
position object 402,0,0,70
ghost object on 402
for i=1 to 100
make object cylinder 500+i,10
scale object 500+i,50,50,200
set object rotation ZYX 500+i
xrotate object 500+i,90
fix object pivot 500+i
position object 500+i,0,0,0
next i
make object sphere 899,200
set object 899,1,0,0
texture object 899,7
ghost object on 899
for i=701 to 846
make object plain i,200+rnd(200),rnd(200)+200
set object i,1,0,0
texture object i,6
ghost object on i
next i
return
`***********************************************************************************************
Position_Gun:
position object 401,x#,y#,z#
rotate object 401,ax#,ay#,0
return
`***********************************************************************************************
Update_Ciel:
Position Object 1,x#,y#,z#
Return
`***********************************************************************************************
Inputs:
NbTouche=LeftKey()+RightKey()+Upkey()+Downkey()
if (upkey()) and (NbTouche=1) then Direction=1
if (downkey()) and (NbTouche=1) then Direction=5
if (leftkey()) and (NbTouche=1) then Direction=7
if (rightkey()) and (NbTouche=1) then Direction=3
if (upkey()) and (leftkey()) (NbTouche=2) then Direction=8
if (upkey()) and (rightkey()) (NbTouche=2) then Direction=2
if (downkey()) and (rightkey()) (NbTouche=2) then Direction=4
if (downkey()) and (leftkey()) (NbTouche=2) then Direction=6
if direction<>0
OldX#=X#
OldY#=Y#
OldZ#=Z#
MoveAy#=wrapvalue(((Direction-1)*45)+Ay#)
x#=oldx#+XValue(oldx#,oldz#,MoveAy#,5.0)
rem y#=oldy#+YValue(oldx#,oldz#,MoveAy#,5.0)
z#=oldz#+ZValue(oldx#,oldz#,MoveAy#,5.0)
y#=get ground height(1,x#,z#)+150
direction=0
endif
Ax#=wrapvalue(Ax#-(MouseMoveY()/2.0))
Ay#=wrapvalue(Ay#+(MouseMoveX()/2.0))
Return
`***********************************************************************************************
Update_Cam:
position camera x#,y#,z#
rotate camera ax#,ay#,0
Return
`***********************************************************************************************
Gerer_Bullet:
DifTime#=Timer()-BulletTime#
BulletTime#=Timer()
for i=1 to 100
if BulletCoord#(i,1)<>0
BulletSpeed#(i,2)=BulletSpeed#(i,2)+Grav#*(DifTime#/1000)
BulletCoord#(i,1)=BulletCoord#(i,1)+BulletSpeed#(i,1)*(DifTime#/1000)
BulletCoord#(i,2)=BulletCoord#(i,2)+BulletSpeed#(i,2)*(DifTime#/1000)
BulletCoord#(i,3)=BulletCoord#(i,3)+BulletSpeed#(i,3)*(DifTime#/1000)
position object 500+i,BulletCoord#(i,1),BulletCoord#(i,2),BulletCoord#(i,3)
if BulletCoord#(i,2)<get ground height(1,BulletCoord#(i,1),BulletCoord#(i,3))
hide object 500+i
explosion=i
explosionX#=BulletCoord#(i,1)
explosionY#=BulletCoord#(i,2)
explosionZ#=BulletCoord#(i,3)
Pacc#=-200
for j=701 to 846
object#(j,1)=BulletCoord#(i,1)
object#(j,2)=BulletCoord#(i,2)
object#(j,3)=BulletCoord#(i,3)
VPXZ#=rnd(400)+200
APY#=rnd(360)
object#(j,7)=vpxz#*sin(apy#)
object#(j,9)=vpxz#*cos(apy#)
object#(j,8)=rnd(600)+300
Ptime#(j)=timer()
object#(j,5)=apy#
object#(j,10)=90+rnd(90)
next j
position object 899,explosionx#,explosiony#,explosionz#
for j=701 to 846
position object j,object#(i,1),object#(i,2),object#(i,3)
next j
Gosub Deformer_Ground
lowerY=BulletCoord#(i,2)
BulletCoord#(i,1)=0
BulletCoord#(i,2)=0
BulletCoord#(i,3)=0
gama=500
scale#=98
CTime#=Timer()
hide object 899
endif
endif
next i
return
`***********************************************************************************************
Gerer_Explosion:
if scale#>100
if gama>255:gama=gama-10:set gamma gama,gama,gama:endif
MaxYBullet#=Object#(701,2)
for i=701 to 846
position object i,object#(i,1),object#(i,2),object#(i,3)
rotate object i,object#(i,4),object#(i,5),object#(i,6)
object#(i,8)=object#(i,8)+Pacc#*((timer()-ptime#(i))/500.0)
object#(i,1)=object#(i,1)+(object#(i,7)*((timer()-ptime#(i))/500.0))
object#(i,3)=object#(i,3)+(object#(i,9)*((timer()-ptime#(i))/500.0))
object#(i,2)=object#(i,2)+(object#(i,8)*((timer()-ptime#(i))/500.0))
object#(i,4)=wrapvalue(object#(i,4)+(object#(i,10)*((timer()-ptime#(i))/500.0)))
ptime#(i)=timer()
if Object#(i,2)>MaxYBullet# then MaxYBullet#=Object#(i,2)
next i
endif
if (MaxYBullet#<LowerY) and (scale#>100) then Explosion=0
if scale#<300
Scale#=(Scale#^(1+(1*((timer()-Ctime#)/1000.0))))+(15*((timer()-Ctime#)/1000.0))
Scale object 899,Scale#,scale#,scale#
else
hide object 899
endif
CTime#=Timer()
Return
`***********************************************************************************************
Creer_Music:
if file exist("Banjo1.mid") then delete file "Banjo1.mid"
open to write 1,"Banjo1.mid"
Restore Music1
Read Byte1
while Byte1<>999
write byte 1,Byte1
read Byte1
endwhile
close file 1
Load Music "Banjo1.mid",1
Loop Music 1
Return
`***********************************************************************************************
Deformer_Ground:
CarreauX=round(BulletCoord#(i,1)/(10000.0/20.0))
CarreauZ=round(BulletCoord#(i,3)/(10000.0/20.0))
set matrix height 1, CarreauX, CarreauZ,get matrix height(1, CarreauX, CarreauZ)-200
set matrix height 1, CarreauX+1, CarreauZ,get matrix height(1, CarreauX+1, CarreauZ)-200
set matrix height 1, CarreauX, CarreauZ+1,get matrix height(1, CarreauX, CarreauZ+1)-200
set matrix height 1, CarreauX+1, CarreauZ+1,get matrix height(1, CarreauX+1, CarreauZ+1)-200
if get matrix height(1, CarreauX, CarreauZ)<0-100 then set matrix height 1, CarreauX, CarreauZ,0-600
if get matrix height(1, CarreauX+1, CarreauZ)<0-100 then set matrix height 1, CarreauX+1, CarreauZ,0-600
if get matrix height(1, CarreauX, CarreauZ+1)<0-100 then set matrix height 1, CarreauX, CarreauZ+1,0-600
if get matrix height(1, CarreauX+1, CarreauZ+1)<0-100 then set matrix height 1, CarreauX+1, CarreauZ+1,0-600
rem CarreauX2=int(BulletCoord#(i,1)/(10000.0/20.0))
rem CarreauZ2=int(BulletCoord#(i,3)/(10000.0/20.0))
rem set matrix tile 1, CarreauX2, CarreauZ2, 2
update matrix 1
return
`***********************************************************************************************
`################################################################################################
function Xvalue(x#,z#,ay#,L#)
zf#=(L#)*cos(ay#)
xf#=(L#)*sin(ay#)
lxzf#=sqrt(xf#^2.0+zf#^2.0)
yf#=get ground height(1,x#+xf#,z#+zf#)-get ground height(1,x#,z#)
ax#=(atan(yf#/lxzf#))
y2#=l#*sin(ax#)
lxz#=l#*cos(ax#)
x2#=lxz#*sin(ay#)
z2#=lxz#*cos(ay#)
endfunction x2#
function Yvalue(x#,z#,ay#,L#)
zf#=l#*cos(ay#)
xf#=l#*sin(ay#)
yf#=get ground height(1,x#+xf#,z#+zf#)-get ground height(1,x#,z#)
lxzf#=sqrt(xf#^2+zf#^2)
ax#=(atan(yf#/lxzf#))
y2#=l#*sin(ax#)
lxz#=l#*cos(ax#)
x2#=lxz#*sin(ay#)
z2#=lxz#*cos(ay#)
endfunction y2#
function Zvalue(x#,z#,ay#,L#)
zf#=l#*cos(ay#)
xf#=l#*sin(ay#)
yf#=get ground height(1,x#+xf#,z#+zf#)-get ground height(1,x#,z#)
lxzf#=sqrt(xf#^2+zf#^2)
ax#=(atan(yf#/lxzf#))
y2#=l#*sin(ax#)
lxz#=l#*cos(ax#)
x2#=lxz#*sin(ay#)
z2#=lxz#*cos(ay#)
endfunction z2#
`***********************************************************************************************
function round(No#)
if (No#+0.5)>int((No#)+1) then No2#=int(No#)+1:else:No2#=int(No#)
endfunction No2#
`##################################################################################################
Music1:
Data 77,84,104,100,0,0,0,6,0,1,0,9,0,192,77,84,114,107,0,0,0,78,0,255,127,3,0,0,65,0
Data 255,2,42,67,111,112,121,114,105,103,104,116,32,40,67,41,32,49,57,57,49,32,98,121,32,86,111,121,101,116
Data 114,97,32,84,101,99,104,110,111,108,111,103,105,101,115,0,255,88,4,4,2,24,8,0,255,81,3,8,7,235
Data 0,255,89,2,0,0,0,255,47,0,77,84,114,107,0,0,0,33,0,255,33,1,0,0,255,3,20,68,105,120
Data 105,101,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,255,47,0,77,84,114,107,0,0,0,33,0
Data 255,33,1,0,0,255,3,20,67,111,112,121,114,105,103,104,116,32,40,67,41,32,49,57,57,48,32,32,0,255
Data 47,0,77,84,114,107,0,0,0,33,0,255,33,1,0,0,255,3,20,86,111,121,101,116,114,97,32,84,101,99
Data 104,110,111,108,111,103,105,101,115,0,255,47,0,77,84,114,107,0,0,3,176,0,255,33,1,1,0,255,3,20
Data 77,101,108,111,100,121,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,193,105,133,32,145,67,114,48,129
Data 67,64,0,145,64,114,48,129,64,64,0,145,60,114,33,129,60,64,63,145,60,114,32,129,60,64,64,145,60,114
Data 48,62,114,11,129,60,64,37,145,64,114,5,129,62,64,43,64,64,0,145,65,114,47,129,65,64,1,145,67,114
Data 48,129,67,64,48,145,67,114,32,129,67,64,64,145,67,114,90,129,67,64,6,145,64,114,58,129,64,64,38,145
Data 69,114,56,129,69,64,40,145,69,114,32,129,69,64,64,145,69,114,129,16,67,114,4,129,69,64,27,67,64,17
Data 145,69,114,129,11,129,69,64,5,145,67,114,42,129,67,64,6,145,69,114,39,129,69,64,9,145,71,114,48,129
Data 71,64,0,145,72,114,45,129,72,64,3,145,74,114,29,129,74,64,19,145,76,114,130,32,129,76,64,0,145,72
Data 114,41,129,72,64,7,145,67,114,43,129,67,64,5,145,72,114,130,32,67,114,6,129,72,64,42,67,64,0,145
Data 64,114,44,129,64,64,4,145,67,114,130,32,177,50,7,0,145,62,114,16,129,67,64,32,145,64,114,6,129,62
Data 64,42,145,60,114,3,129,64,64,129,98,60,64,59,145,67,114,48,64,114,22,129,67,64,10,64,64,16,145,60
Data 114,33,129,60,64,63,145,60,114,32,129,60,64,64,145,60,114,48,62,114,11,129,60,64,37,145,64,114,5,129
Data 62,64,43,64,64,0,145,65,114,47,129,65,64,1,145,67,114,48,129,67,64,48,145,67,114,32,129,67,64,64
Data 145,67,114,90,129,67,64,6,145,64,114,58,129,64,64,38,145,69,114,56,129,69,64,40,145,69,114,32,129,69
Data 64,64,145,69,114,129,16,67,114,4,129,69,64,27,67,64,17,145,69,114,129,11,129,69,64,5,145,67,114,42
Data 129,67,64,6,145,69,114,39,129,69,64,9,145,71,114,48,129,71,64,0,145,72,114,45,129,72,64,3,145,74
Data 114,29,129,74,64,19,145,76,114,130,32,129,76,64,0,145,72,114,41,129,72,64,7,145,67,114,43,129,67,64
Data 5,145,72,114,130,32,67,114,6,129,72,64,42,67,64,0,145,64,114,44,129,64,64,4,145,67,114,130,32,62
Data 114,16,129,67,64,32,145,64,114,6,129,62,64,42,145,60,114,3,129,64,64,129,98,60,64,59,145,67,114,70
Data 129,67,64,26,145,72,114,64,129,72,64,32,145,76,114,66,129,76,64,30,145,74,114,65,129,74,64,31,145,72
Data 114,66,129,72,64,30,145,69,114,34,129,69,64,62,145,72,114,129,64,129,72,64,0,145,69,114,40,129,69,64
Data 56,145,74,114,130,32,69,114,3,129,74,64,30,69,64,63,145,74,114,129,125,129,74,64,35,145,67,114,62,129
Data 67,64,34,145,72,114,56,129,72,64,40,145,76,114,60,129,76,64,36,145,74,114,129,4,129,74,64,12,145,72
Data 114,48,129,72,64,0,145,69,114,73,129,69,64,23,145,71,114,76,129,71,64,20,145,72,114,129,16,129,72,64
Data 0,145,69,114,48,129,69,64,0,145,67,114,96,129,67,64,0,145,64,114,80,129,64,64,16,145,72,114,129,9
Data 129,72,64,7,145,64,114,23,129,64,64,25,145,64,114,51,129,64,64,45,145,62,114,129,52,129,62,64,12,145
Data 64,114,90,129,64,64,6,145,60,114,130,32,129,60,64,0,145,64,114,95,129,64,64,1,145,62,114,130,18,129
Data 62,64,14,145,65,114,67,129,65,64,29,145,64,114,96,129,64,64,0,145,67,114,96,129,67,64,0,145,72,114
Data 129,16,129,72,64,0,145,64,114,25,129,64,64,23,145,64,114,48,129,64,64,48,145,62,114,129,64,129,62,64
Data 0,145,64,114,84,129,64,64,12,145,60,97,129,45,129,60,64,115,145,64,114,76,129,64,64,20,145,62,114,130
Data 8,129,62,64,24,145,65,114,71,129,65,64,25,145,64,114,96,129,64,64,0,145,67,114,88,129,67,64,8,145
Data 76,114,130,80,129,76,64,48,145,72,114,26,129,72,64,22,145,74,114,48,129,74,64,48,145,72,114,48,129,72
Data 64,0,255,47,0,77,84,114,107,0,0,2,118,0,255,33,1,1,0,255,3,20,66,97,115,115,32,32,32,32
Data 32,32,32,32,32,32,32,32,32,32,32,32,0,194,32,134,0,146,36,85,92,130,36,64,100,146,31,85,92,130
Data 31,64,100,146,36,85,92,130,36,64,4,146,31,85,92,130,31,64,4,146,38,85,92,130,38,64,4,146,40,85
Data 92,130,40,64,4,146,41,85,92,130,41,64,100,146,36,85,92,130,36,64,100,146,41,85,92,130,41,64,100,146
Data 36,85,92,130,36,64,100,146,43,85,92,130,43,64,100,146,36,85,92,130,36,64,100,146,40,85,92,130,40,64
Data 100,146,33,85,92,130,33,64,100,146,38,85,92,130,38,64,100,146,31,85,92,130,31,64,100,146,36,85,92,130
Data 36,64,4,146,31,85,96,130,31,64,0,146,33,85,96,130,33,64,0,146,35,85,96,130,35,64,0,146,36,85
Data 92,130,36,64,100,146,31,85,92,130,31,64,100,146,36,85,92,130,36,64,100,146,38,85,92,130,38,64,4,146
Data 40,85,96,130,40,64,0,146,41,85,92,130,41,64,100,146,36,85,92,130,36,64,100,146,41,85,92,130,41,64
Data 100,146,42,85,92,130,42,64,100,146,43,85,92,130,43,64,100,146,36,85,92,130,36,64,100,146,40,85,92,130
Data 40,64,100,146,33,85,92,130,33,64,100,146,38,85,92,130,38,64,100,146,31,85,92,130,31,64,4,146,35,85
Data 92,130,35,64,4,146,36,85,92,130,36,64,100,146,31,85,92,130,31,64,100,146,36,85,129,64,130,36,64,0
Data 146,40,78,129,54,130,40,64,10,146,41,103,129,26,130,41,64,38,146,41,93,129,30,130,41,64,34,146,38,96
Data 129,13,130,38,64,51,146,38,91,118,130,38,64,74,146,43,89,129,14,130,43,64,50,146,43,93,129,64,130,43
Data 64,0,146,36,84,129,61,130,36,64,3,146,40,91,129,58,130,40,64,6,146,41,89,129,56,130,41,64,8,146
Data 42,103,129,58,130,42,64,6,146,43,99,129,64,130,43,64,0,146,45,85,129,62,130,45,64,2,146,38,96,129
Data 62,130,38,64,2,146,31,96,129,64,130,31,64,0,146,36,85,92,130,36,64,100,146,31,85,92,130,31,64,100
Data 146,38,85,92,130,38,64,100,146,31,85,92,130,31,64,100,146,36,85,92,130,36,64,100,146,45,85,92,130,45
Data 64,100,146,38,85,92,130,38,64,100,146,31,96,129,64,130,31,64,0,146,36,85,92,130,36,64,100,146,31,85
Data 92,130,31,64,100,146,38,85,92,130,38,64,100,146,31,85,92,130,31,64,100,146,36,85,96,130,36,64,0,146
Data 38,85,96,130,38,64,0,146,40,85,131,0,130,40,64,0,146,31,85,48,130,31,64,0,146,35,85,48,130,35
Data 64,48,146,36,85,48,130,36,64,0,255,47,0,77,84,114,107,0,0,5,147,0,255,33,1,1,0,255,3,20
Data 67,104,111,114,100,115,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,195,24,134,96,147,72,96,0,67
Data 80,0,64,87,20,131,64,64,4,67,64,2,72,64,129,38,147,67,99,0,64,96,0,72,84,20,131,72,64,2
Data 64,64,2,67,64,129,40,147,67,96,0,64,90,0,72,91,20,131,72,64,2,64,64,2,67,64,129,40,147,70
Data 110,0,72,110,0,64,97,18,131,64,64,2,72,64,6,70,64,129,38,147,69,103,0,72,97,0,65,96,20,131
Data 65,64,4,69,64,0,72,64,129,40,147,69,115,0,72,91,0,65,91,22,131,65,64,1,69,64,0,72,64,129
Data 41,147,69,110,0,72,106,0,65,100,22,131,65,64,6,69,64,2,72,64,129,34,147,72,99,0,69,93,0,65
Data 90,26,131,69,64,2,65,64,8,72,64,129,28,147,72,103,0,76,99,0,67,96,22,131,67,64,6,72,64,0
Data 76,64,129,36,147,72,110,0,76,99,0,67,99,19,131,76,64,6,67,64,2,72,64,129,37,147,72,106,0,69
Data 103,0,64,97,22,131,64,64,4,69,64,6,72,64,129,32,147,72,100,0,69,103,0,64,99,18,131,64,64,10
Data 69,64,2,72,64,129,34,147,74,115,0,69,99,0,65,119,24,131,65,64,2,69,64,4,74,64,129,34,147,71
Data 106,0,67,96,0,62,90,26,131,62,64,4,67,64,12,71,64,129,22,147,72,99,0,67,106,0,64,96,22,131
Data 64,64,2,67,64,4,72,64,129,36,147,72,99,0,67,96,0,64,96,22,131,64,64,4,67,64,8,72,64,129
Data 30,147,72,103,0,76,99,0,67,87,20,131,67,64,6,72,64,0,76,64,129,38,147,76,119,0,72,100,0,67
Data 100,20,131,67,64,4,72,64,2,76,64,129,38,147,72,119,0,76,97,0,67,96,16,131,76,64,4,67,64,2
Data 72,64,129,42,147,70,93,0,74,103,0,64,99,18,131,64,64,14,74,64,2,70,64,129,30,147,72,100,0,65
Data 103,0,69,100,24,131,65,64,4,69,64,6,72,64,129,30,147,69,100,0,72,103,0,65,103,20,131,65,64,8
Data 69,64,4,72,64,129,32,147,69,99,0,72,110,0,65,91,18,131,65,64,12,69,64,6,72,64,129,28,147,66
Data 91,0,69,115,0,72,91,28,131,69,64,2,66,64,6,72,64,129,28,147,72,103,0,76,99,0,67,90,24,131
Data 67,64,6,72,64,2,76,64,129,32,147,76,100,0,67,99,0,72,97,26,131,67,64,2,72,64,4,76,64,129
Data 32,147,69,96,0,72,89,0,64,99,24,131,64,64,4,69,64,6,72,64,129,30,147,64,110,0,69,106,0,72
Data 106,26,131,69,64,2,64,64,10,72,64,129,26,147,69,110,0,74,106,0,65,100,24,131,65,64,4,69,64,4
Data 74,64,129,32,147,71,91,0,62,100,0,67,89,24,131,62,64,8,67,64,8,71,64,129,24,147,72,100,0,67
Data 99,0,64,99,24,131,64,64,4,67,64,4,72,64,129,32,147,67,110,0,72,100,0,64,103,22,131,64,64,4
Data 67,64,10,72,64,129,28,147,76,115,0,72,115,0,67,106,22,131,67,64,8,72,64,4,76,64,129,30,147,70
Data 106,0,72,119,0,67,106,0,76,110,22,131,67,64,4,70,64,2,72,64,2,76,64,129,34,147,72,106,0,69
Data 103,0,65,110,24,131,69,64,0,65,64,18,72,64,129,22,147,72,115,0,69,106,0,65,127,24,131,65,64,8
Data 69,64,2,72,64,129,30,147,69,119,0,74,106,0,66,99,24,131,66,64,6,69,64,6,74,64,129,28,147,74
Data 110,0,69,122,0,66,119,24,131,66,64,2,69,64,8,74,64,129,30,147,67,96,0,71,100,0,62,103,26,131
Data 62,64,2,67,64,12,71,64,129,24,147,67,93,0,62,100,0,71,91,26,131,62,64,4,67,64,6,71,64,129
Data 28,147,76,110,0,72,110,0,67,106,26,131,67,64,6,72,64,10,76,64,129,22,147,70,103,0,74,110,0,64
Data 97,26,131,64,64,10,70,64,4,74,64,129,24,147,69,106,0,65,119,0,60,97,24,131,65,64,2,69,64,22
Data 60,64,129,16,147,69,103,0,72,99,0,66,97,26,131,69,64,4,72,64,18,66,64,129,16,147,67,97,0,72
Data 77,0,64,70,33,131,64,64,4,72,64,2,67,64,129,25,147,72,103,0,67,115,0,64,103,22,131,64,64,2
Data 67,64,2,72,64,129,38,147,69,103,0,66,97,0,60,93,0,62,93,40,131,69,64,8,66,64,0,60,64,0
Data 62,64,129,16,147,59,93,0,67,97,0,62,93,0,65,93,48,131,59,64,0,67,64,0,62,64,0,65,64,129
Data 16,147,67,100,0,64,110,0,60,100,29,131,64,64,6,67,64,6,60,64,129,23,147,67,110,0,64,103,0,60
Data 100,24,131,64,64,2,67,64,10,60,64,129,28,147,67,115,0,62,100,0,59,122,22,131,62,64,4,67,64,6
Data 59,64,129,32,147,59,106,0,62,127,0,67,115,22,131,62,64,6,67,64,10,59,64,129,26,147,67,97,0,72
Data 77,0,64,70,33,131,64,64,4,72,64,2,67,64,129,25,147,72,103,0,67,115,0,64,103,22,131,64,64,2
Data 67,64,2,72,64,129,38,147,69,103,0,66,97,0,60,93,0,62,93,40,131,69,64,8,66,64,0,60,64,0
Data 62,64,129,16,147,59,93,0,67,97,0,62,93,0,65,93,48,131,59,64,0,67,64,0,62,64,0,65,64,129
Data 16,147,67,115,0,72,103,0,64,100,26,131,64,64,4,67,64,2,72,64,129,32,147,72,100,0,64,103,0,67
Data 122,24,131,64,64,4,67,64,6,72,64,129,30,147,71,115,0,67,119,0,65,115,24,131,65,64,8,67,64,4
Data 71,64,129,28,147,65,119,0,67,110,0,71,115,26,131,65,64,0,67,64,2,71,64,68,147,67,93,0,64,93
Data 0,72,93,48,131,67,64,0,64,64,0,72,64,48,147,71,93,0,67,93,0,62,93,48,131,71,64,0,67,64
Data 0,62,64,48,147,72,122,0,67,119,0,64,110,131,0,131,72,64,0,67,64,0,64,64,48,147,62,93,0,67
Data 93,0,71,93,48,131,62,64,0,67,64,0,71,64,48,147,72,97,0,67,97,0,64,97,48,131,72,64,0,67
Data 64,0,64,64,0,255,47,0,77,84,114,107,0,0,7,230,0,255,33,1,1,0,255,3,20,83,110,97,114,101
Data 32,68,114,117,109,32,32,32,32,32,32,32,32,32,32,0,201,126,134,0,153,38,1,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38
Data 64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38
Data 64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48
Data 137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38
Data 127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38
Data 127,42,137,38,64,2,153,38,117,48,137,38,64,4,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38
Data 64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38
Data 64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48
Data 137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38
Data 127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,127,42,137,38,64,2,153,38,117,48,137,38,64,4,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38
Data 64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38
Data 64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48
Data 137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38
Data 127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,127,42,137,38,64,2,153,38,117,48,137,38,64,4,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38
Data 64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42
Data 137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38
Data 1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38,64,0
Data 153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,48,137,38
Data 64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,127,42,137,38,64,2,153,38,117,48
Data 137,38,64,4,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38
Data 127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6
Data 153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42,137,38
Data 64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,1,42,137,38,64,6,153,38,1,42
Data 137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,127,42,137,38,64,6,153,38
Data 1,42,137,38,64,6,153,38,127,48,137,38,64,0,153,38,1,42,137,38,64,6,153,38,127,1,137,38,64,130
Data 127,153,38,127,48,137,38,64,0,153,38,127,48,137,38,64,48,153,38,127,48,137,38,64,0,255,47,0,77,84
Data 114,107,0,0,2,103,0,255,33,1,1,0,255,3,20,66,97,115,115,32,68,114,117,109,32,32,32,32,32,32
Data 32,32,32,32,32,134,0,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137
Data 36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129
Data 16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36
Data 127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137
Data 36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129
Data 16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36
Data 127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137
Data 36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129
Data 16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36
Data 127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137
Data 36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129
Data 16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36
Data 127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137
Data 36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129
Data 16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36
Data 127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137
Data 36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129
Data 16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36,127,48,137,36,64,129,16,153,36
Data 127,48,137,36,64,129,16,153,36,127,48,137,36,64,48,153,36,127,48,137,36,64,48,153,36,127,48,137,36,64
Data 131,0,153,36,127,48,137,36,64,48,153,36,127,48,137,36,64,0,255,47,0,999