diff --git a/data/levels/cemetery/graveyard_terrain.mtl b/data/levels/cemetery/graveyard_terrain.mtl
index ca9478d..6b058a6 100644
--- a/data/levels/cemetery/graveyard_terrain.mtl
+++ b/data/levels/cemetery/graveyard_terrain.mtl
@@ -10,4 +10,4 @@ Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
-map_Kd data\\textures\\scenes\\cemetery\\grass_01.png
+map_Kd data/textures/scenes/cemetery/grass_01.png
diff --git a/data/levels/zavod/graveyard_terrain.mtl b/data/levels/zavod/graveyard_terrain.mtl
new file mode 100644
index 0000000..6b058a6
--- /dev/null
+++ b/data/levels/zavod/graveyard_terrain.mtl
@@ -0,0 +1,13 @@
+# Blender MTL File: 'None'
+# Material Count: 1
+
+newmtl graveyard_terrain
+Ns 225.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+map_Kd data/textures/scenes/cemetery/grass_01.png
diff --git a/data/levels/zavod/graveyard_terrain.wmb b/data/levels/zavod/graveyard_terrain.wmb
new file mode 100644
index 0000000..0b0b25e
Binary files /dev/null and b/data/levels/zavod/graveyard_terrain.wmb differ
diff --git a/data/levels/zavod/zavod.blend b/data/levels/zavod/zavod.blend
new file mode 100644
index 0000000..1d25168
Binary files /dev/null and b/data/levels/zavod/zavod.blend differ
diff --git a/data/levels/zavod/zavod.scene b/data/levels/zavod/zavod.scene
new file mode 100644
index 0000000..2a8a79c
--- /dev/null
+++ b/data/levels/zavod/zavod.scene
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/data/levels/zavod/zavod.xml b/data/levels/zavod/zavod.xml
new file mode 100644
index 0000000..ab13be4
--- /dev/null
+++ b/data/levels/zavod/zavod.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data/levels/zavod/zavod_floor.mtl b/data/levels/zavod/zavod_floor.mtl
new file mode 100644
index 0000000..841026f
--- /dev/null
+++ b/data/levels/zavod/zavod_floor.mtl
@@ -0,0 +1,13 @@
+# Blender MTL File: 'zavod.blend'
+# Material Count: 1
+
+newmtl concrete_floor
+Ns 225.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+map_Kd data/textures/concrete/concrete_floor_1.tga
diff --git a/data/levels/zavod/zavod_floor.obj b/data/levels/zavod/zavod_floor.obj
new file mode 100644
index 0000000..bf607af
--- /dev/null
+++ b/data/levels/zavod/zavod_floor.obj
@@ -0,0 +1,839 @@
+# Blender v2.93.9 OBJ File: 'zavod.blend'
+# www.blender.org
+o Cube
+v -1.000000 0.000000 2.000000
+v -1.000000 0.000000 -2.000000
+v 9.000000 0.000000 2.000000
+v 9.000000 0.000000 -2.000000
+v 14.000000 0.000000 -2.000000
+v 14.000000 0.000000 2.000000
+v 9.000000 0.000000 -8.000000
+v 14.000000 0.000000 -8.000000
+v -1.000000 0.000000 0.000000
+v 4.000000 0.000000 -2.000000
+v 9.000000 0.000000 0.000000
+v 4.000000 0.000000 2.000000
+v 14.000000 0.000000 0.000000
+v 11.500000 0.000000 -2.000000
+v 11.500000 0.000000 2.000000
+v 11.500000 0.000000 -8.000000
+v 9.000000 0.000000 -5.000000
+v 14.000000 0.000000 -5.000000
+v 11.500000 0.000000 -5.000000
+v 11.500000 0.000000 0.000000
+v 4.000000 0.000000 0.000000
+v -1.000000 0.000000 1.000000
+v 1.500000 0.000000 -2.000000
+v 9.000000 0.000000 -1.000000
+v 6.500000 0.000000 2.000000
+v 14.000000 0.000000 -1.000000
+v 12.750000 0.000000 -2.000000
+v 10.250000 0.000000 2.000000
+v 12.750000 0.000000 -8.000000
+v 9.000000 0.000000 -6.500000
+v 14.000000 0.000000 -6.500000
+v -1.000000 0.000000 -1.000000
+v 6.500000 0.000000 -2.000000
+v 9.000000 0.000000 1.000000
+v 1.500000 0.000000 2.000000
+v 14.000000 0.000000 1.000000
+v 10.250000 0.000000 -2.000000
+v 12.750000 0.000000 2.000000
+v 10.250000 0.000000 -8.000000
+v 9.000000 0.000000 -3.500000
+v 14.000000 0.000000 -3.500000
+v 11.500000 0.000000 -6.500000
+v 11.500000 0.000000 -3.500000
+v 10.250000 0.000000 -5.000000
+v 12.750000 0.000000 -5.000000
+v 12.750000 0.000000 0.000000
+v 10.250000 0.000000 0.000000
+v 11.500000 0.000000 -1.000000
+v 11.500000 0.000000 1.000000
+v 6.500000 0.000000 0.000000
+v 1.500000 0.000000 0.000000
+v 4.000000 0.000000 -1.000000
+v 4.000000 0.000000 1.000000
+v 1.500000 0.000000 1.000000
+v 1.500000 0.000000 -1.000000
+v 6.500000 0.000000 -1.000000
+v 10.250000 0.000000 1.000000
+v 10.250000 0.000000 -1.000000
+v 12.750000 0.000000 -1.000000
+v 12.750000 0.000000 -3.500000
+v 10.250000 0.000000 -3.500000
+v 10.250000 0.000000 -6.500000
+v 12.750000 0.000000 -6.500000
+v 12.750000 0.000000 1.000000
+v 6.500000 0.000000 1.000000
+v -1.000000 0.000000 1.500000
+v 0.250000 0.000000 -2.000000
+v 9.000000 0.000000 -1.500000
+v 7.750000 0.000000 2.000000
+v 14.000000 0.000000 -1.500000
+v 13.375000 0.000000 -2.000000
+v 9.625000 0.000000 2.000000
+v 13.375000 0.000000 -8.000000
+v 9.000000 0.000000 -7.250000
+v 14.000000 0.000000 -7.250000
+v -1.000000 0.000000 -0.500000
+v 5.250000 0.000000 -2.000000
+v 9.000000 0.000000 0.500000
+v 2.750000 0.000000 2.000000
+v 14.000000 0.000000 0.500000
+v 10.875000 0.000000 -2.000000
+v 12.125000 0.000000 2.000000
+v 10.875000 0.000000 -8.000000
+v 9.000000 0.000000 -4.250000
+v 14.000000 0.000000 -4.250000
+v 11.500000 0.000000 -7.250000
+v 11.500000 0.000000 -4.250000
+v 9.625000 0.000000 -5.000000
+v 12.125000 0.000000 -5.000000
+v 13.375000 0.000000 0.000000
+v 10.875000 0.000000 0.000000
+v 11.500000 0.000000 -1.500000
+v 11.500000 0.000000 0.500000
+v 7.750000 0.000000 0.000000
+v 2.750000 0.000000 0.000000
+v 4.000000 0.000000 -1.500000
+v 4.000000 0.000000 0.500000
+v -1.000000 0.000000 0.500000
+v 2.750000 0.000000 -2.000000
+v 9.000000 0.000000 -0.500000
+v 5.250000 0.000000 2.000000
+v 14.000000 0.000000 -0.500000
+v 12.125000 0.000000 -2.000000
+v 10.875000 0.000000 2.000000
+v 12.125000 0.000000 -8.000000
+v 9.000000 0.000000 -5.750000
+v 14.000000 0.000000 -5.750000
+v -1.000000 0.000000 -1.500000
+v 7.750000 0.000000 -2.000000
+v 9.000000 0.000000 1.500000
+v 0.250000 0.000000 2.000000
+v 14.000000 0.000000 1.500000
+v 9.625000 0.000000 -2.000000
+v 13.375000 0.000000 2.000000
+v 9.625000 0.000000 -8.000000
+v 9.000000 0.000000 -2.750000
+v 14.000000 0.000000 -2.750000
+v 11.500000 0.000000 -5.750000
+v 11.500000 0.000000 -2.750000
+v 10.875000 0.000000 -5.000000
+v 13.375000 0.000000 -5.000000
+v 12.125000 0.000000 0.000000
+v 9.625000 0.000000 0.000000
+v 11.500000 0.000000 -0.500000
+v 11.500000 0.000000 1.500000
+v 5.250000 0.000000 0.000000
+v 0.250000 0.000000 0.000000
+v 4.000000 0.000000 -0.500000
+v 4.000000 0.000000 1.500000
+v 2.750000 0.000000 1.000000
+v 0.250000 0.000000 1.000000
+v 1.500000 0.000000 0.500000
+v 1.500000 0.000000 1.500000
+v 2.750000 0.000000 -1.000000
+v 0.250000 0.000000 -1.000000
+v 1.500000 0.000000 -1.500000
+v 1.500000 0.000000 -0.500000
+v 7.750000 0.000000 -1.000000
+v 5.250000 0.000000 -1.000000
+v 6.500000 0.000000 -1.500000
+v 6.500000 0.000000 -0.500000
+v 10.875000 0.000000 1.000000
+v 9.625000 0.000000 1.000000
+v 10.250000 0.000000 0.500000
+v 10.250000 0.000000 1.500000
+v 10.875000 0.000000 -1.000000
+v 9.625000 0.000000 -1.000000
+v 10.250000 0.000000 -1.500000
+v 10.250000 0.000000 -0.500000
+v 13.375000 0.000000 -1.000000
+v 12.125000 0.000000 -1.000000
+v 12.750000 0.000000 -1.500000
+v 12.750000 0.000000 -0.500000
+v 12.750000 0.000000 -4.250000
+v 12.750000 0.000000 -2.750000
+v 12.125000 0.000000 -3.500000
+v 13.375000 0.000000 -3.500000
+v 10.250000 0.000000 -4.250000
+v 10.250000 0.000000 -2.750000
+v 9.625000 0.000000 -3.500000
+v 10.875000 0.000000 -3.500000
+v 10.250000 0.000000 -7.250000
+v 10.250000 0.000000 -5.750000
+v 9.625000 0.000000 -6.500000
+v 10.875000 0.000000 -6.500000
+v 12.750000 0.000000 -7.250000
+v 12.750000 0.000000 -5.750000
+v 12.125000 0.000000 -6.500000
+v 13.375000 0.000000 -6.500000
+v 13.375000 0.000000 1.000000
+v 12.125000 0.000000 1.000000
+v 12.750000 0.000000 0.500000
+v 12.750000 0.000000 1.500000
+v 7.750000 0.000000 1.000000
+v 5.250000 0.000000 1.000000
+v 6.500000 0.000000 0.500000
+v 6.500000 0.000000 1.500000
+v 5.250000 0.000000 1.500000
+v 5.250000 0.000000 0.500000
+v 7.750000 0.000000 0.500000
+v 12.125000 0.000000 1.500000
+v 12.125000 0.000000 0.500000
+v 13.375000 0.000000 0.500000
+v 13.375000 0.000000 -5.750000
+v 12.125000 0.000000 -5.750000
+v 12.125000 0.000000 -7.250000
+v 10.875000 0.000000 -5.750000
+v 9.625000 0.000000 -5.750000
+v 9.625000 0.000000 -7.250000
+v 10.875000 0.000000 -2.750000
+v 9.625000 0.000000 -2.750000
+v 9.625000 0.000000 -4.250000
+v 13.375000 0.000000 -2.750000
+v 12.125000 0.000000 -2.750000
+v 12.125000 0.000000 -4.250000
+v 12.125000 0.000000 -0.500000
+v 12.125000 0.000000 -1.500000
+v 13.375000 0.000000 -1.500000
+v 9.625000 0.000000 -0.500000
+v 9.625000 0.000000 -1.500000
+v 10.875000 0.000000 -1.500000
+v 9.625000 0.000000 1.500000
+v 9.625000 0.000000 0.500000
+v 10.875000 0.000000 0.500000
+v 5.250000 0.000000 -0.500000
+v 5.250000 0.000000 -1.500000
+v 7.750000 0.000000 -1.500000
+v 0.250000 0.000000 -0.500000
+v 0.250000 0.000000 -1.500000
+v 2.750000 0.000000 -1.500000
+v 0.250000 0.000000 1.500000
+v 0.250000 0.000000 0.500000
+v 2.750000 0.000000 0.500000
+v 2.750000 0.000000 1.500000
+v 2.750000 0.000000 -0.500000
+v 7.750000 0.000000 -0.500000
+v 10.875000 0.000000 1.500000
+v 10.875000 0.000000 -0.500000
+v 13.375000 0.000000 -0.500000
+v 13.375000 0.000000 -4.250000
+v 10.875000 0.000000 -4.250000
+v 10.875000 0.000000 -7.250000
+v 13.375000 0.000000 -7.250000
+v 13.375000 0.000000 1.500000
+v 7.750000 0.000000 1.500000
+vt -0.002083 -0.972778
+vt 0.500000 -0.771944
+vt -0.002083 -0.771944
+vt 2.257292 -0.972778
+vt 2.508333 -0.771944
+vt 2.257292 -0.771944
+vt 2.508333 2.742639
+vt 2.257292 3.043889
+vt 2.257292 2.742639
+vt 1.504167 2.742639
+vt 1.253125 3.043889
+vt 1.253125 2.742639
+vt 1.504167 1.537639
+vt 1.253125 1.838889
+vt 1.253125 1.537639
+vt 2.508333 1.537639
+vt 2.257292 1.838889
+vt 2.257292 1.537639
+vt 2.257292 -0.169444
+vt 2.508333 0.031389
+vt 2.257292 0.031389
+vt 1.253125 -0.169444
+vt 1.504167 0.031389
+vt 1.253125 0.031389
+vt 1.253125 -0.972778
+vt 1.504167 -0.771944
+vt 1.253125 -0.771944
+vt -0.002083 -0.169444
+vt 0.500000 0.031389
+vt -0.002083 0.031389
+vt -2.010417 -0.169444
+vt -1.508333 0.031389
+vt -2.010417 0.031389
+vt -2.010417 -0.972778
+vt -1.508333 -0.771944
+vt -2.010417 -0.771944
+vt -2.010417 -0.571111
+vt -1.508333 -0.370278
+vt -2.010417 -0.370278
+vt -3.014583 -0.571111
+vt -2.512500 -0.370278
+vt -3.014583 -0.370278
+vt -3.014583 -0.972778
+vt -2.512500 -0.771944
+vt -3.014583 -0.771944
+vt -2.010417 0.232222
+vt -1.508333 0.433056
+vt -2.010417 0.433056
+vt -3.014583 0.232222
+vt -2.512500 0.433056
+vt -3.014583 0.433056
+vt -3.014583 -0.169444
+vt -2.512500 0.031389
+vt -3.014583 0.031389
+vt -0.002083 0.232222
+vt 0.500000 0.433056
+vt -0.002083 0.433056
+vt -1.006250 0.232222
+vt -0.504167 0.433056
+vt -1.006250 0.433056
+vt -1.006250 -0.169444
+vt -0.504167 0.031389
+vt -1.006250 0.031389
+vt 1.253125 -0.571111
+vt 1.504167 -0.370278
+vt 1.253125 -0.370278
+vt 0.751042 -0.571111
+vt 1.002083 -0.370278
+vt 0.751042 -0.370278
+vt 0.751042 -0.972778
+vt 1.002083 -0.771944
+vt 0.751042 -0.771944
+vt 1.253125 0.232222
+vt 1.504167 0.433056
+vt 1.253125 0.433056
+vt 0.751042 0.232222
+vt 1.002083 0.433056
+vt 0.751042 0.433056
+vt 0.751042 -0.169444
+vt 1.002083 0.031389
+vt 0.751042 0.031389
+vt 2.257292 0.232222
+vt 2.508333 0.433056
+vt 2.257292 0.433056
+vt 1.755208 0.232222
+vt 2.006250 0.433056
+vt 1.755208 0.433056
+vt 1.755208 -0.169444
+vt 2.006250 0.031389
+vt 1.755208 0.031389
+vt 2.006250 1.537639
+vt 1.755208 1.838889
+vt 1.755208 1.537639
+vt 2.006250 0.935139
+vt 1.755208 1.236389
+vt 1.755208 0.935139
+vt 2.508333 0.935139
+vt 2.257292 1.236389
+vt 2.257292 0.935139
+vt 1.002083 1.537639
+vt 0.751042 1.838889
+vt 0.751042 1.537639
+vt 1.002083 0.935139
+vt 0.751042 1.236389
+vt 0.751042 0.935139
+vt 1.504167 0.935139
+vt 1.253125 1.236389
+vt 1.253125 0.935139
+vt 1.002083 2.742639
+vt 0.751042 3.043889
+vt 0.751042 2.742639
+vt 1.002083 2.140139
+vt 0.751042 2.441389
+vt 0.751042 2.140139
+vt 1.504167 2.140139
+vt 1.253125 2.441389
+vt 1.253125 2.140139
+vt 2.006250 2.742639
+vt 1.755208 3.043889
+vt 1.755208 2.742639
+vt 2.006250 2.140139
+vt 1.755208 2.441389
+vt 1.755208 2.140139
+vt 2.508333 2.140139
+vt 2.257292 2.441389
+vt 2.257292 2.140139
+vt 2.257292 -0.571111
+vt 2.508333 -0.370278
+vt 2.257292 -0.370278
+vt 1.755208 -0.571111
+vt 2.006250 -0.370278
+vt 1.755208 -0.370278
+vt 1.755208 -0.972778
+vt 2.006250 -0.771944
+vt 1.755208 -0.771944
+vt -0.002083 -0.571111
+vt 0.500000 -0.370278
+vt -0.002083 -0.370278
+vt -1.006250 -0.571111
+vt -0.504167 -0.370278
+vt -1.006250 -0.370278
+vt -1.006250 -0.972778
+vt -0.504167 -0.771944
+vt -1.006250 -0.771944
+vt -0.504167 -0.571111
+vt -1.508333 -0.571111
+vt -1.508333 -0.972778
+vt -0.504167 -0.169444
+vt -1.508333 -0.169444
+vt 0.500000 -0.169444
+vt 2.006250 -0.571111
+vt 1.504167 -0.571111
+vt 1.504167 -0.972778
+vt 2.006250 -0.169444
+vt 1.504167 -0.169444
+vt 2.508333 -0.169444
+vt 2.006250 2.441389
+vt 2.006250 1.838889
+vt 2.508333 1.838889
+vt 1.504167 2.441389
+vt 1.504167 1.838889
+vt 1.504167 3.043889
+vt 1.002083 2.441389
+vt 1.002083 1.838889
+vt 0.500000 2.441389
+vt 0.500000 2.140139
+vt 0.500000 1.838889
+vt 0.500000 3.043889
+vt 0.500000 2.742639
+vt 1.002083 1.236389
+vt 1.253125 0.633889
+vt 1.002083 0.633889
+vt 1.504167 0.633889
+vt 0.500000 1.236389
+vt 0.500000 0.935139
+vt 0.751042 0.633889
+vt 0.500000 0.633889
+vt 0.500000 1.537639
+vt 2.006250 1.236389
+vt 2.257292 0.633889
+vt 2.006250 0.633889
+vt 2.508333 0.633889
+vt 1.504167 1.236389
+vt 1.755208 0.633889
+vt 2.006250 0.232222
+vt 1.504167 0.232222
+vt 1.002083 0.232222
+vt 0.500000 0.232222
+vt 1.002083 -0.571111
+vt 0.500000 -0.571111
+vt 0.500000 -0.972778
+vt 1.002083 -0.169444
+vt -0.504167 0.232222
+vt -1.508333 0.232222
+vt -0.504167 0.633889
+vt -1.006250 0.633889
+vt -1.508333 0.633889
+vt -0.002083 0.633889
+vt -2.512500 0.232222
+vt -3.516666 0.031389
+vt -3.516666 0.232222
+vt -3.516666 -0.169444
+vt -2.512500 0.633889
+vt -3.014583 0.633889
+vt -3.516666 0.433056
+vt -3.516666 0.633889
+vt -2.010417 0.633889
+vt -2.512500 -0.571111
+vt -3.516666 -0.771944
+vt -3.516666 -0.571111
+vt -3.516666 -0.972778
+vt -2.512500 -0.169444
+vt -3.516666 -0.370278
+vt -2.512500 -0.972778
+vt 1.002083 -0.972778
+vt 2.508333 0.232222
+vt 2.508333 1.236389
+vt 1.002083 3.043889
+vt 2.006250 3.043889
+vt 2.508333 2.441389
+vt 2.508333 -0.571111
+vt 2.006250 -0.972778
+vt -0.504167 -0.972778
+vt 2.508333 -0.972778
+vt 2.508333 3.043889
+vn 0.0000 1.0000 0.0000
+s off
+f 69/1/1 110/2/1 225/3/1
+f 114/4/1 112/5/1 224/6/1
+f 75/7/1 73/8/1 223/9/1
+f 86/10/1 83/11/1 222/12/1
+f 87/13/1 120/14/1 221/15/1
+f 85/16/1 121/17/1 220/18/1
+f 90/19/1 102/20/1 219/21/1
+f 91/22/1 124/23/1 218/24/1
+f 104/25/1 125/26/1 217/27/1
+f 94/28/1 100/29/1 216/30/1
+f 95/31/1 128/32/1 215/33/1
+f 79/34/1 129/35/1 214/36/1
+f 130/37/1 97/38/1 213/39/1
+f 131/40/1 132/41/1 212/42/1
+f 111/43/1 133/44/1 211/45/1
+f 134/46/1 96/47/1 210/48/1
+f 135/49/1 136/50/1 209/51/1
+f 127/52/1 137/53/1 208/54/1
+f 138/55/1 68/56/1 207/57/1
+f 139/58/1 140/59/1 206/60/1
+f 126/61/1 141/62/1 205/63/1
+f 142/64/1 93/65/1 204/66/1
+f 143/67/1 144/68/1 203/69/1
+f 72/70/1 145/71/1 202/72/1
+f 146/73/1 92/74/1 201/75/1
+f 147/76/1 148/77/1 200/78/1
+f 123/79/1 149/80/1 199/81/1
+f 150/82/1 70/83/1 198/84/1
+f 151/85/1 152/86/1 197/87/1
+f 122/88/1 153/89/1 196/90/1
+f 154/91/1 89/92/1 195/93/1
+f 155/94/1 156/95/1 194/96/1
+f 117/97/1 157/98/1 193/99/1
+f 158/100/1 88/101/1 192/102/1
+f 159/103/1 160/104/1 191/105/1
+f 119/106/1 161/107/1 190/108/1
+f 162/109/1 115/110/1 189/111/1
+f 163/112/1 164/113/1 188/114/1
+f 118/115/1 165/116/1 187/117/1
+f 166/118/1 105/119/1 186/120/1
+f 167/121/1 168/122/1 185/123/1
+f 107/124/1 169/125/1 184/126/1
+f 170/127/1 80/128/1 183/129/1
+f 171/130/1 172/131/1 182/132/1
+f 82/133/1 173/134/1 181/135/1
+f 174/136/1 78/137/1 180/138/1
+f 175/139/1 176/140/1 179/141/1
+f 101/142/1 177/143/1 178/144/1
+f 178/144/1 65/145/1 175/139/1
+f 129/35/1 175/139/1 53/146/1
+f 12/147/1 178/144/1 129/35/1
+f 179/141/1 50/148/1 126/61/1
+f 97/38/1 126/61/1 21/149/1
+f 53/146/1 179/141/1 97/38/1
+f 180/138/1 11/150/1 94/28/1
+f 176/140/1 94/28/1 50/148/1
+f 65/145/1 180/138/1 176/140/1
+f 181/135/1 64/151/1 171/130/1
+f 125/26/1 171/130/1 49/152/1
+f 15/153/1 181/135/1 125/26/1
+f 182/132/1 46/154/1 122/88/1
+f 93/65/1 122/88/1 20/155/1
+f 49/152/1 182/132/1 93/65/1
+f 183/129/1 13/156/1 90/19/1
+f 172/131/1 90/19/1 46/154/1
+f 64/151/1 183/129/1 172/131/1
+f 184/126/1 63/157/1 167/121/1
+f 121/17/1 167/121/1 45/158/1
+f 18/159/1 184/126/1 121/17/1
+f 185/123/1 42/160/1 118/115/1
+f 89/92/1 118/115/1 19/161/1
+f 45/158/1 185/123/1 89/92/1
+f 186/120/1 16/162/1 86/10/1
+f 168/122/1 86/10/1 42/160/1
+f 63/157/1 186/120/1 168/122/1
+f 187/117/1 62/163/1 163/112/1
+f 120/14/1 163/112/1 44/164/1
+f 19/161/1 187/117/1 120/14/1
+f 188/114/1 30/165/1 106/166/1
+f 88/101/1 106/166/1 17/167/1
+f 44/164/1 188/114/1 88/101/1
+f 189/111/1 7/168/1 74/169/1
+f 164/113/1 74/169/1 30/165/1
+f 62/163/1 189/111/1 164/113/1
+f 190/108/1 61/170/1 159/103/1
+f 81/171/1 159/103/1 37/172/1
+f 14/173/1 190/108/1 81/171/1
+f 191/105/1 40/174/1 116/175/1
+f 113/176/1 116/175/1 4/177/1
+f 37/172/1 191/105/1 113/176/1
+f 192/102/1 17/167/1 84/178/1
+f 160/104/1 84/178/1 40/174/1
+f 61/170/1 192/102/1 160/104/1
+f 193/99/1 60/179/1 155/94/1
+f 71/180/1 155/94/1 27/181/1
+f 5/182/1 193/99/1 71/180/1
+f 194/96/1 43/183/1 119/106/1
+f 103/184/1 119/106/1 14/173/1
+f 27/181/1 194/96/1 103/184/1
+f 195/93/1 19/161/1 87/13/1
+f 156/95/1 87/13/1 43/183/1
+f 60/179/1 195/93/1 156/95/1
+f 196/90/1 59/185/1 151/85/1
+f 124/23/1 151/85/1 48/186/1
+f 20/155/1 196/90/1 124/23/1
+f 197/87/1 27/181/1 103/184/1
+f 92/74/1 103/184/1 14/173/1
+f 48/186/1 197/87/1 92/74/1
+f 198/84/1 5/182/1 71/180/1
+f 152/86/1 71/180/1 27/181/1
+f 59/185/1 198/84/1 152/86/1
+f 199/81/1 58/187/1 147/76/1
+f 100/29/1 147/76/1 24/188/1
+f 11/150/1 199/81/1 100/29/1
+f 200/78/1 37/172/1 113/176/1
+f 68/56/1 113/176/1 4/177/1
+f 24/188/1 200/78/1 68/56/1
+f 201/75/1 14/173/1 81/171/1
+f 148/77/1 81/171/1 37/172/1
+f 58/187/1 201/75/1 148/77/1
+f 202/72/1 57/189/1 143/67/1
+f 110/2/1 143/67/1 34/190/1
+f 3/191/1 202/72/1 110/2/1
+f 203/69/1 47/192/1 123/79/1
+f 78/137/1 123/79/1 11/150/1
+f 34/190/1 203/69/1 78/137/1
+f 204/66/1 20/155/1 91/22/1
+f 144/68/1 91/22/1 47/192/1
+f 57/189/1 204/66/1 144/68/1
+f 205/63/1 56/193/1 139/58/1
+f 128/32/1 139/58/1 52/194/1
+f 21/149/1 205/63/1 128/32/1
+f 206/60/1 33/195/1 77/196/1
+f 96/47/1 77/196/1 10/197/1
+f 52/194/1 206/60/1 96/47/1
+f 207/57/1 4/177/1 109/198/1
+f 140/59/1 109/198/1 33/195/1
+f 56/193/1 207/57/1 140/59/1
+f 208/54/1 55/199/1 135/49/1
+f 76/200/1 135/49/1 32/201/1
+f 9/202/1 208/54/1 76/200/1
+f 209/51/1 23/203/1 67/204/1
+f 108/205/1 67/204/1 2/206/1
+f 32/201/1 209/51/1 108/205/1
+f 210/48/1 10/197/1 99/207/1
+f 136/50/1 99/207/1 23/203/1
+f 55/199/1 210/48/1 136/50/1
+f 211/45/1 54/208/1 131/40/1
+f 66/209/1 131/40/1 22/210/1
+f 1/211/1 211/45/1 66/209/1
+f 212/42/1 51/212/1 127/52/1
+f 98/213/1 127/52/1 9/202/1
+f 22/210/1 212/42/1 98/213/1
+f 213/39/1 21/149/1 95/31/1
+f 132/41/1 95/31/1 51/212/1
+f 54/208/1 213/39/1 132/41/1
+f 214/36/1 53/146/1 130/37/1
+f 133/44/1 130/37/1 54/208/1
+f 35/214/1 214/36/1 133/44/1
+f 215/33/1 52/194/1 134/46/1
+f 137/53/1 134/46/1 55/199/1
+f 51/212/1 215/33/1 137/53/1
+f 216/30/1 24/188/1 138/55/1
+f 141/62/1 138/55/1 56/193/1
+f 50/148/1 216/30/1 141/62/1
+f 217/27/1 49/152/1 142/64/1
+f 145/71/1 142/64/1 57/189/1
+f 28/215/1 217/27/1 145/71/1
+f 218/24/1 48/186/1 146/73/1
+f 149/80/1 146/73/1 58/187/1
+f 47/192/1 218/24/1 149/80/1
+f 219/21/1 26/216/1 150/82/1
+f 153/89/1 150/82/1 59/185/1
+f 46/154/1 219/21/1 153/89/1
+f 220/18/1 45/158/1 154/91/1
+f 157/98/1 154/91/1 60/179/1
+f 41/217/1 220/18/1 157/98/1
+f 221/15/1 44/164/1 158/100/1
+f 161/107/1 158/100/1 61/170/1
+f 43/183/1 221/15/1 161/107/1
+f 222/12/1 39/218/1 162/109/1
+f 165/116/1 162/109/1 62/163/1
+f 42/160/1 222/12/1 165/116/1
+f 223/9/1 29/219/1 166/118/1
+f 169/125/1 166/118/1 63/157/1
+f 31/220/1 223/9/1 169/125/1
+f 224/6/1 36/221/1 170/127/1
+f 173/134/1 170/127/1 64/151/1
+f 38/222/1 224/6/1 173/134/1
+f 225/3/1 34/190/1 174/136/1
+f 177/143/1 174/136/1 65/145/1
+f 25/223/1 225/3/1 177/143/1
+f 69/1/1 3/191/1 110/2/1
+f 114/4/1 6/224/1 112/5/1
+f 75/7/1 8/225/1 73/8/1
+f 86/10/1 16/162/1 83/11/1
+f 87/13/1 19/161/1 120/14/1
+f 85/16/1 18/159/1 121/17/1
+f 90/19/1 13/156/1 102/20/1
+f 91/22/1 20/155/1 124/23/1
+f 104/25/1 15/153/1 125/26/1
+f 94/28/1 11/150/1 100/29/1
+f 95/31/1 21/149/1 128/32/1
+f 79/34/1 12/147/1 129/35/1
+f 130/37/1 53/146/1 97/38/1
+f 131/40/1 54/208/1 132/41/1
+f 111/43/1 35/214/1 133/44/1
+f 134/46/1 52/194/1 96/47/1
+f 135/49/1 55/199/1 136/50/1
+f 127/52/1 51/212/1 137/53/1
+f 138/55/1 24/188/1 68/56/1
+f 139/58/1 56/193/1 140/59/1
+f 126/61/1 50/148/1 141/62/1
+f 142/64/1 49/152/1 93/65/1
+f 143/67/1 57/189/1 144/68/1
+f 72/70/1 28/215/1 145/71/1
+f 146/73/1 48/186/1 92/74/1
+f 147/76/1 58/187/1 148/77/1
+f 123/79/1 47/192/1 149/80/1
+f 150/82/1 26/216/1 70/83/1
+f 151/85/1 59/185/1 152/86/1
+f 122/88/1 46/154/1 153/89/1
+f 154/91/1 45/158/1 89/92/1
+f 155/94/1 60/179/1 156/95/1
+f 117/97/1 41/217/1 157/98/1
+f 158/100/1 44/164/1 88/101/1
+f 159/103/1 61/170/1 160/104/1
+f 119/106/1 43/183/1 161/107/1
+f 162/109/1 39/218/1 115/110/1
+f 163/112/1 62/163/1 164/113/1
+f 118/115/1 42/160/1 165/116/1
+f 166/118/1 29/219/1 105/119/1
+f 167/121/1 63/157/1 168/122/1
+f 107/124/1 31/220/1 169/125/1
+f 170/127/1 36/221/1 80/128/1
+f 171/130/1 64/151/1 172/131/1
+f 82/133/1 38/222/1 173/134/1
+f 174/136/1 34/190/1 78/137/1
+f 175/139/1 65/145/1 176/140/1
+f 101/142/1 25/223/1 177/143/1
+f 178/144/1 177/143/1 65/145/1
+f 129/35/1 178/144/1 175/139/1
+f 12/147/1 101/142/1 178/144/1
+f 179/141/1 176/140/1 50/148/1
+f 97/38/1 179/141/1 126/61/1
+f 53/146/1 175/139/1 179/141/1
+f 180/138/1 78/137/1 11/150/1
+f 176/140/1 180/138/1 94/28/1
+f 65/145/1 174/136/1 180/138/1
+f 181/135/1 173/134/1 64/151/1
+f 125/26/1 181/135/1 171/130/1
+f 15/153/1 82/133/1 181/135/1
+f 182/132/1 172/131/1 46/154/1
+f 93/65/1 182/132/1 122/88/1
+f 49/152/1 171/130/1 182/132/1
+f 183/129/1 80/128/1 13/156/1
+f 172/131/1 183/129/1 90/19/1
+f 64/151/1 170/127/1 183/129/1
+f 184/126/1 169/125/1 63/157/1
+f 121/17/1 184/126/1 167/121/1
+f 18/159/1 107/124/1 184/126/1
+f 185/123/1 168/122/1 42/160/1
+f 89/92/1 185/123/1 118/115/1
+f 45/158/1 167/121/1 185/123/1
+f 186/120/1 105/119/1 16/162/1
+f 168/122/1 186/120/1 86/10/1
+f 63/157/1 166/118/1 186/120/1
+f 187/117/1 165/116/1 62/163/1
+f 120/14/1 187/117/1 163/112/1
+f 19/161/1 118/115/1 187/117/1
+f 188/114/1 164/113/1 30/165/1
+f 88/101/1 188/114/1 106/166/1
+f 44/164/1 163/112/1 188/114/1
+f 189/111/1 115/110/1 7/168/1
+f 164/113/1 189/111/1 74/169/1
+f 62/163/1 162/109/1 189/111/1
+f 190/108/1 161/107/1 61/170/1
+f 81/171/1 190/108/1 159/103/1
+f 14/173/1 119/106/1 190/108/1
+f 191/105/1 160/104/1 40/174/1
+f 113/176/1 191/105/1 116/175/1
+f 37/172/1 159/103/1 191/105/1
+f 192/102/1 88/101/1 17/167/1
+f 160/104/1 192/102/1 84/178/1
+f 61/170/1 158/100/1 192/102/1
+f 193/99/1 157/98/1 60/179/1
+f 71/180/1 193/99/1 155/94/1
+f 5/182/1 117/97/1 193/99/1
+f 194/96/1 156/95/1 43/183/1
+f 103/184/1 194/96/1 119/106/1
+f 27/181/1 155/94/1 194/96/1
+f 195/93/1 89/92/1 19/161/1
+f 156/95/1 195/93/1 87/13/1
+f 60/179/1 154/91/1 195/93/1
+f 196/90/1 153/89/1 59/185/1
+f 124/23/1 196/90/1 151/85/1
+f 20/155/1 122/88/1 196/90/1
+f 197/87/1 152/86/1 27/181/1
+f 92/74/1 197/87/1 103/184/1
+f 48/186/1 151/85/1 197/87/1
+f 198/84/1 70/83/1 5/182/1
+f 152/86/1 198/84/1 71/180/1
+f 59/185/1 150/82/1 198/84/1
+f 199/81/1 149/80/1 58/187/1
+f 100/29/1 199/81/1 147/76/1
+f 11/150/1 123/79/1 199/81/1
+f 200/78/1 148/77/1 37/172/1
+f 68/56/1 200/78/1 113/176/1
+f 24/188/1 147/76/1 200/78/1
+f 201/75/1 92/74/1 14/173/1
+f 148/77/1 201/75/1 81/171/1
+f 58/187/1 146/73/1 201/75/1
+f 202/72/1 145/71/1 57/189/1
+f 110/2/1 202/72/1 143/67/1
+f 3/191/1 72/70/1 202/72/1
+f 203/69/1 144/68/1 47/192/1
+f 78/137/1 203/69/1 123/79/1
+f 34/190/1 143/67/1 203/69/1
+f 204/66/1 93/65/1 20/155/1
+f 144/68/1 204/66/1 91/22/1
+f 57/189/1 142/64/1 204/66/1
+f 205/63/1 141/62/1 56/193/1
+f 128/32/1 205/63/1 139/58/1
+f 21/149/1 126/61/1 205/63/1
+f 206/60/1 140/59/1 33/195/1
+f 96/47/1 206/60/1 77/196/1
+f 52/194/1 139/58/1 206/60/1
+f 207/57/1 68/56/1 4/177/1
+f 140/59/1 207/57/1 109/198/1
+f 56/193/1 138/55/1 207/57/1
+f 208/54/1 137/53/1 55/199/1
+f 76/200/1 208/54/1 135/49/1
+f 9/202/1 127/52/1 208/54/1
+f 209/51/1 136/50/1 23/203/1
+f 108/205/1 209/51/1 67/204/1
+f 32/201/1 135/49/1 209/51/1
+f 210/48/1 96/47/1 10/197/1
+f 136/50/1 210/48/1 99/207/1
+f 55/199/1 134/46/1 210/48/1
+f 211/45/1 133/44/1 54/208/1
+f 66/209/1 211/45/1 131/40/1
+f 1/211/1 111/43/1 211/45/1
+f 212/42/1 132/41/1 51/212/1
+f 98/213/1 212/42/1 127/52/1
+f 22/210/1 131/40/1 212/42/1
+f 213/39/1 97/38/1 21/149/1
+f 132/41/1 213/39/1 95/31/1
+f 54/208/1 130/37/1 213/39/1
+f 214/36/1 129/35/1 53/146/1
+f 133/44/1 214/36/1 130/37/1
+f 35/214/1 79/34/1 214/36/1
+f 215/33/1 128/32/1 52/194/1
+f 137/53/1 215/33/1 134/46/1
+f 51/212/1 95/31/1 215/33/1
+f 216/30/1 100/29/1 24/188/1
+f 141/62/1 216/30/1 138/55/1
+f 50/148/1 94/28/1 216/30/1
+f 217/27/1 125/26/1 49/152/1
+f 145/71/1 217/27/1 142/64/1
+f 28/215/1 104/25/1 217/27/1
+f 218/24/1 124/23/1 48/186/1
+f 149/80/1 218/24/1 146/73/1
+f 47/192/1 91/22/1 218/24/1
+f 219/21/1 102/20/1 26/216/1
+f 153/89/1 219/21/1 150/82/1
+f 46/154/1 90/19/1 219/21/1
+f 220/18/1 121/17/1 45/158/1
+f 157/98/1 220/18/1 154/91/1
+f 41/217/1 85/16/1 220/18/1
+f 221/15/1 120/14/1 44/164/1
+f 161/107/1 221/15/1 158/100/1
+f 43/183/1 87/13/1 221/15/1
+f 222/12/1 83/11/1 39/218/1
+f 165/116/1 222/12/1 162/109/1
+f 42/160/1 86/10/1 222/12/1
+f 223/9/1 73/8/1 29/219/1
+f 169/125/1 223/9/1 166/118/1
+f 31/220/1 75/7/1 223/9/1
+f 224/6/1 112/5/1 36/221/1
+f 173/134/1 224/6/1 170/127/1
+f 38/222/1 114/4/1 224/6/1
+f 225/3/1 110/2/1 34/190/1
+f 177/143/1 225/3/1 174/136/1
+f 25/223/1 69/1/1 225/3/1
diff --git a/data/levels/zavod/zavod_floor.wmb b/data/levels/zavod/zavod_floor.wmb
new file mode 100644
index 0000000..38d99ff
Binary files /dev/null and b/data/levels/zavod/zavod_floor.wmb differ
diff --git a/data/levels/zavod/zavod_walls.mtl b/data/levels/zavod/zavod_walls.mtl
new file mode 100644
index 0000000..b67a284
--- /dev/null
+++ b/data/levels/zavod/zavod_walls.mtl
@@ -0,0 +1,13 @@
+# Blender MTL File: 'zavod.blend'
+# Material Count: 1
+
+newmtl concrete_walls
+Ns 225.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+map_Kd data/textures/concrete/concrete_wall_bunker_1.tga
diff --git a/data/levels/zavod/zavod_walls.obj b/data/levels/zavod/zavod_walls.obj
new file mode 100644
index 0000000..ffac646
--- /dev/null
+++ b/data/levels/zavod/zavod_walls.obj
@@ -0,0 +1,3009 @@
+# Blender v2.93.9 OBJ File: 'zavod.blend'
+# www.blender.org
+o Cube.001
+v -1.000000 0.000000 2.000000
+v -1.000000 4.000000 2.000000
+v -1.000000 0.000000 -2.000000
+v -1.000000 4.000000 -2.000000
+v 9.000000 0.000000 2.000000
+v 9.000000 4.000000 2.000000
+v 9.000000 0.000000 -2.000000
+v 9.000000 4.000000 -2.000000
+v 14.000000 4.000000 -2.000000
+v 14.000000 0.000000 -2.000000
+v 14.000000 0.000000 2.000000
+v 14.000000 4.000000 2.000000
+v 9.000000 4.000000 -8.000000
+v 9.000000 0.000000 -8.000000
+v 14.000000 4.000000 -8.000000
+v 14.000000 0.000000 -8.000000
+v -1.000000 0.000000 0.000000
+v -1.000000 2.000000 2.000000
+v -1.000000 4.000000 0.000000
+v -1.000000 2.000000 -2.000000
+v 4.000000 0.000000 -2.000000
+v 4.000000 4.000000 -2.000000
+v 9.000000 2.000000 -2.000000
+v 9.000000 4.000000 0.000000
+v 9.000000 2.000000 2.000000
+v 4.000000 0.000000 2.000000
+v 4.000000 4.000000 2.000000
+v 14.000000 2.000000 -2.000000
+v 14.000000 0.000000 0.000000
+v 14.000000 4.000000 0.000000
+v 14.000000 2.000000 2.000000
+v 11.500000 4.000000 -2.000000
+v 11.500000 4.000000 2.000000
+v 11.500000 0.000000 2.000000
+v 9.000000 2.000000 -8.000000
+v 14.000000 2.000000 -8.000000
+v 11.500000 4.000000 -8.000000
+v 11.500000 0.000000 -8.000000
+v 9.000000 0.000000 -5.000000
+v 9.000000 4.000000 -5.000000
+v 14.000000 0.000000 -5.000000
+v 14.000000 4.000000 -5.000000
+v 14.000000 2.000000 -5.000000
+v 11.500000 4.000000 -5.000000
+v 11.500000 2.000000 -8.000000
+v 11.500000 2.000000 2.000000
+v 9.000000 2.000000 -5.000000
+v 14.000000 2.000000 0.000000
+v 4.000000 4.000000 0.000000
+v 4.000000 2.000000 2.000000
+v 11.500000 4.000000 0.000000
+v 4.000000 2.000000 -2.000000
+v -1.000000 2.000000 0.000000
+v -1.000000 0.000000 1.000000
+v -1.000000 3.000000 2.000000
+v -1.000000 4.000000 -1.000000
+v -1.000000 1.000000 -2.000000
+v 1.500000 0.000000 -2.000000
+v 6.500000 4.000000 -2.000000
+v 9.000000 1.000000 -2.000000
+v 9.000000 4.000000 1.000000
+v 9.000000 1.000000 2.000000
+v 6.500000 0.000000 2.000000
+v 1.500000 4.000000 2.000000
+v 14.000000 1.000000 -2.000000
+v 14.000000 0.000000 -1.000000
+v 14.000000 4.000000 1.000000
+v 14.000000 1.000000 2.000000
+v 12.750000 4.000000 -2.000000
+v 10.250000 4.000000 2.000000
+v 10.250000 0.000000 2.000000
+v 9.000000 1.000000 -8.000000
+v 14.000000 1.000000 -8.000000
+v 12.750000 4.000000 -8.000000
+v 12.750000 0.000000 -8.000000
+v 9.000000 0.000000 -6.500000
+v 9.000000 4.000000 -3.500000
+v 14.000000 0.000000 -6.500000
+v 14.000000 4.000000 -3.500000
+v -1.000000 0.000000 -1.000000
+v -1.000000 1.000000 2.000000
+v -1.000000 4.000000 1.000000
+v -1.000000 3.000000 -2.000000
+v 6.500000 0.000000 -2.000000
+v 1.500000 4.000000 -2.000000
+v 9.000000 3.000000 -2.000000
+v 9.000000 4.000000 -1.000000
+v 9.000000 3.000000 2.000000
+v 1.500000 0.000000 2.000000
+v 6.500000 4.000000 2.000000
+v 14.000000 3.000000 -2.000000
+v 14.000000 0.000000 1.000000
+v 14.000000 4.000000 -1.000000
+v 14.000000 3.000000 2.000000
+v 10.250000 4.000000 -2.000000
+v 12.750000 4.000000 2.000000
+v 12.750000 0.000000 2.000000
+v 9.000000 3.000000 -8.000000
+v 14.000000 3.000000 -8.000000
+v 10.250000 4.000000 -8.000000
+v 10.250000 0.000000 -8.000000
+v 9.000000 0.000000 -3.500000
+v 9.000000 4.000000 -6.500000
+v 14.000000 0.000000 -3.500000
+v 14.000000 4.000000 -6.500000
+v 14.000000 2.000000 -6.500000
+v 14.000000 2.000000 -3.500000
+v 14.000000 1.000000 -5.000000
+v 14.000000 3.000000 -5.000000
+v 11.500000 4.000000 -6.500000
+v 11.500000 4.000000 -3.500000
+v 12.750000 4.000000 -5.000000
+v 10.250000 4.000000 -5.000000
+v 12.750000 2.000000 -8.000000
+v 10.250000 2.000000 -8.000000
+v 11.500000 3.000000 -8.000000
+v 11.500000 1.000000 -8.000000
+v 12.750000 2.000000 2.000000
+v 10.250000 2.000000 2.000000
+v 11.500000 1.000000 2.000000
+v 11.500000 3.000000 2.000000
+v 9.000000 2.000000 -6.500000
+v 9.000000 2.000000 -3.500000
+v 9.000000 3.000000 -5.000000
+v 9.000000 1.000000 -5.000000
+v 14.000000 3.000000 0.000000
+v 14.000000 1.000000 0.000000
+v 14.000000 2.000000 -1.000000
+v 14.000000 2.000000 1.000000
+v 1.500000 4.000000 0.000000
+v 6.500000 4.000000 0.000000
+v 4.000000 4.000000 -1.000000
+v 4.000000 4.000000 1.000000
+v 4.000000 3.000000 2.000000
+v 4.000000 1.000000 2.000000
+v 6.500000 2.000000 2.000000
+v 1.500000 2.000000 2.000000
+v 12.750000 4.000000 0.000000
+v 10.250000 4.000000 0.000000
+v 11.500000 4.000000 1.000000
+v 11.500000 4.000000 -1.000000
+v 4.000000 3.000000 -2.000000
+v 4.000000 1.000000 -2.000000
+v 1.500000 2.000000 -2.000000
+v 6.500000 2.000000 -2.000000
+v -1.000000 3.000000 0.000000
+v -1.000000 1.000000 0.000000
+v -1.000000 2.000000 1.000000
+v -1.000000 2.000000 -1.000000
+v -1.000000 1.000000 -1.000000
+v -1.000000 1.000000 1.000000
+v -1.000000 3.000000 1.000000
+v 6.500000 1.000000 -2.000000
+v 1.500000 1.000000 -2.000000
+v 1.500000 3.000000 -2.000000
+v 10.250000 4.000000 -1.000000
+v 10.250000 4.000000 1.000000
+v 12.750000 4.000000 1.000000
+v 1.500000 1.000000 2.000000
+v 6.500000 1.000000 2.000000
+v 6.500000 3.000000 2.000000
+v 6.500000 4.000000 1.000000
+v 6.500000 4.000000 -1.000000
+v 1.500000 4.000000 -1.000000
+v 14.000000 1.000000 1.000000
+v 14.000000 1.000000 -1.000000
+v 14.000000 3.000000 -1.000000
+v 9.000000 1.000000 -3.500000
+v 9.000000 3.000000 -3.500000
+v 9.000000 3.000000 -6.500000
+v 10.250000 3.000000 2.000000
+v 10.250000 1.000000 2.000000
+v 12.750000 1.000000 2.000000
+v 10.250000 1.000000 -8.000000
+v 10.250000 3.000000 -8.000000
+v 12.750000 3.000000 -8.000000
+v 10.250000 4.000000 -3.500000
+v 12.750000 4.000000 -3.500000
+v 12.750000 4.000000 -6.500000
+v 14.000000 3.000000 -3.500000
+v 14.000000 1.000000 -3.500000
+v 14.000000 1.000000 -6.500000
+v 14.000000 3.000000 -6.500000
+v 10.250000 4.000000 -6.500000
+v 12.750000 1.000000 -8.000000
+v 12.750000 3.000000 2.000000
+v 9.000000 1.000000 -6.500000
+v 14.000000 3.000000 1.000000
+v 1.500000 4.000000 1.000000
+v 1.500000 3.000000 2.000000
+v 12.750000 4.000000 -1.000000
+v 6.500000 3.000000 -2.000000
+v -1.000000 3.000000 -1.000000
+v -1.000000 0.000000 1.500000
+v -1.000000 3.500000 2.000000
+v -1.000000 4.000000 -1.500000
+v -1.000000 0.500000 -2.000000
+v 0.250000 0.000000 -2.000000
+v 7.750000 4.000000 -2.000000
+v 9.000000 0.500000 -2.000000
+v 9.000000 4.000000 1.500000
+v 9.000000 0.500000 2.000000
+v 7.750000 0.000000 2.000000
+v 0.250000 4.000000 2.000000
+v 14.000000 0.500000 -2.000000
+v 14.000000 0.000000 -1.500000
+v 14.000000 4.000000 1.500000
+v 14.000000 0.500000 2.000000
+v 13.375000 4.000000 -2.000000
+v 9.625000 4.000000 2.000000
+v 9.625000 0.000000 2.000000
+v 9.000000 0.500000 -8.000000
+v 14.000000 0.500000 -8.000000
+v 13.375000 4.000000 -8.000000
+v 13.375000 0.000000 -8.000000
+v 9.000000 0.000000 -7.250000
+v 9.000000 4.000000 -2.750000
+v 14.000000 0.000000 -7.250000
+v 14.000000 4.000000 -2.750000
+v -1.000000 0.000000 -0.500000
+v -1.000000 1.500000 2.000000
+v -1.000000 4.000000 0.500000
+v -1.000000 2.500000 -2.000000
+v 5.250000 0.000000 -2.000000
+v 2.750000 4.000000 -2.000000
+v 9.000000 2.500000 -2.000000
+v 9.000000 4.000000 -0.500000
+v 9.000000 2.500000 2.000000
+v 2.750000 0.000000 2.000000
+v 5.250000 4.000000 2.000000
+v 14.000000 2.500000 -2.000000
+v 14.000000 0.000000 0.500000
+v 14.000000 4.000000 -0.500000
+v 14.000000 2.500000 2.000000
+v 10.875000 4.000000 -2.000000
+v 12.125000 4.000000 2.000000
+v 12.125000 0.000000 2.000000
+v 9.000000 2.500000 -8.000000
+v 14.000000 2.500000 -8.000000
+v 10.875000 4.000000 -8.000000
+v 10.875000 0.000000 -8.000000
+v 9.000000 0.000000 -4.250000
+v 9.000000 4.000000 -5.750000
+v 14.000000 0.000000 -4.250000
+v 14.000000 4.000000 -5.750000
+v 14.000000 2.000000 -7.250000
+v 14.000000 2.000000 -4.250000
+v 14.000000 0.500000 -5.000000
+v 14.000000 2.500000 -5.000000
+v 11.500000 4.000000 -7.250000
+v 11.500000 4.000000 -4.250000
+v 13.375000 4.000000 -5.000000
+v 10.875000 4.000000 -5.000000
+v 13.375000 2.000000 -8.000000
+v 10.875000 2.000000 -8.000000
+v 11.500000 3.500000 -8.000000
+v 11.500000 1.500000 -8.000000
+v 13.375000 2.000000 2.000000
+v 10.875000 2.000000 2.000000
+v 11.500000 0.500000 2.000000
+v 11.500000 2.500000 2.000000
+v 9.000000 2.000000 -7.250000
+v 9.000000 2.000000 -4.250000
+v 9.000000 3.500000 -5.000000
+v 9.000000 1.500000 -5.000000
+v 14.000000 3.500000 0.000000
+v 14.000000 1.500000 0.000000
+v 14.000000 2.000000 -1.500000
+v 14.000000 2.000000 0.500000
+v 0.250000 4.000000 0.000000
+v 5.250000 4.000000 0.000000
+v 4.000000 4.000000 -1.500000
+v 4.000000 4.000000 0.500000
+v 4.000000 3.500000 2.000000
+v 4.000000 1.500000 2.000000
+v 7.750000 2.000000 2.000000
+v 2.750000 2.000000 2.000000
+v 13.375000 4.000000 0.000000
+v 10.875000 4.000000 0.000000
+v 11.500000 4.000000 1.500000
+v 11.500000 4.000000 -0.500000
+v 4.000000 3.500000 -2.000000
+v 4.000000 1.500000 -2.000000
+v 0.250000 2.000000 -2.000000
+v 5.250000 2.000000 -2.000000
+v -1.000000 3.500000 0.000000
+v -1.000000 1.500000 0.000000
+v -1.000000 2.000000 1.500000
+v -1.000000 2.000000 -0.500000
+v -1.000000 0.000000 0.500000
+v -1.000000 2.500000 2.000000
+v -1.000000 4.000000 -0.500000
+v -1.000000 1.500000 -2.000000
+v 2.750000 0.000000 -2.000000
+v 5.250000 4.000000 -2.000000
+v 9.000000 1.500000 -2.000000
+v 9.000000 4.000000 0.500000
+v 9.000000 1.500000 2.000000
+v 5.250000 0.000000 2.000000
+v 2.750000 4.000000 2.000000
+v 14.000000 1.500000 -2.000000
+v 14.000000 0.000000 -0.500000
+v 14.000000 4.000000 0.500000
+v 14.000000 1.500000 2.000000
+v 12.125000 4.000000 -2.000000
+v 10.875000 4.000000 2.000000
+v 10.875000 0.000000 2.000000
+v 9.000000 1.500000 -8.000000
+v 14.000000 1.500000 -8.000000
+v 12.125000 4.000000 -8.000000
+v 12.125000 0.000000 -8.000000
+v 9.000000 0.000000 -5.750000
+v 9.000000 4.000000 -4.250000
+v 14.000000 0.000000 -5.750000
+v 14.000000 4.000000 -4.250000
+v -1.000000 0.000000 -1.500000
+v -1.000000 0.500000 2.000000
+v -1.000000 4.000000 1.500000
+v -1.000000 3.500000 -2.000000
+v 7.750000 0.000000 -2.000000
+v 0.250000 4.000000 -2.000000
+v 9.000000 3.500000 -2.000000
+v 9.000000 4.000000 -1.500000
+v 9.000000 3.500000 2.000000
+v 0.250000 0.000000 2.000000
+v 7.750000 4.000000 2.000000
+v 14.000000 3.500000 -2.000000
+v 14.000000 0.000000 1.500000
+v 14.000000 4.000000 -1.500000
+v 14.000000 3.500000 2.000000
+v 9.625000 4.000000 -2.000000
+v 13.375000 4.000000 2.000000
+v 13.375000 0.000000 2.000000
+v 9.000000 3.500000 -8.000000
+v 14.000000 3.500000 -8.000000
+v 9.625000 4.000000 -8.000000
+v 9.625000 0.000000 -8.000000
+v 9.000000 0.000000 -2.750000
+v 9.000000 4.000000 -7.250000
+v 14.000000 0.000000 -2.750000
+v 14.000000 4.000000 -7.250000
+v 14.000000 2.000000 -5.750000
+v 14.000000 2.000000 -2.750000
+v 14.000000 1.500000 -5.000000
+v 14.000000 3.500000 -5.000000
+v 11.500000 4.000000 -5.750000
+v 11.500000 4.000000 -2.750000
+v 12.125000 4.000000 -5.000000
+v 9.625000 4.000000 -5.000000
+v 12.125000 2.000000 -8.000000
+v 9.625000 2.000000 -8.000000
+v 11.500000 2.500000 -8.000000
+v 11.500000 0.500000 -8.000000
+v 12.125000 2.000000 2.000000
+v 9.625000 2.000000 2.000000
+v 11.500000 1.500000 2.000000
+v 11.500000 3.500000 2.000000
+v 9.000000 2.000000 -5.750000
+v 9.000000 2.000000 -2.750000
+v 9.000000 2.500000 -5.000000
+v 9.000000 0.500000 -5.000000
+v 14.000000 2.500000 0.000000
+v 14.000000 0.500000 0.000000
+v 14.000000 2.000000 -0.500000
+v 14.000000 2.000000 1.500000
+v 2.750000 4.000000 0.000000
+v 7.750000 4.000000 0.000000
+v 4.000000 4.000000 -0.500000
+v 4.000000 4.000000 1.500000
+v 4.000000 2.500000 2.000000
+v 4.000000 0.500000 2.000000
+v 5.250000 2.000000 2.000000
+v 0.250000 2.000000 2.000000
+v 12.125000 4.000000 0.000000
+v 9.625000 4.000000 0.000000
+v 11.500000 4.000000 0.500000
+v 11.500000 4.000000 -1.500000
+v 4.000000 2.500000 -2.000000
+v 4.000000 0.500000 -2.000000
+v 2.750000 2.000000 -2.000000
+v 7.750000 2.000000 -2.000000
+v -1.000000 2.500000 0.000000
+v -1.000000 0.500000 0.000000
+v -1.000000 2.000000 0.500000
+v -1.000000 2.000000 -1.500000
+v -1.000000 1.500000 -1.000000
+v -1.000000 0.500000 -1.000000
+v -1.000000 1.000000 -0.500000
+v -1.000000 1.000000 -1.500000
+v -1.000000 1.500000 1.000000
+v -1.000000 0.500000 1.000000
+v -1.000000 1.000000 1.500000
+v -1.000000 1.000000 0.500000
+v -1.000000 3.500000 1.000000
+v -1.000000 2.500000 1.000000
+v -1.000000 3.000000 1.500000
+v -1.000000 3.000000 0.500000
+v 6.500000 1.500000 -2.000000
+v 6.500000 0.500000 -2.000000
+v 5.250000 1.000000 -2.000000
+v 7.750000 1.000000 -2.000000
+v 1.500000 1.500000 -2.000000
+v 1.500000 0.500000 -2.000000
+v 0.250000 1.000000 -2.000000
+v 2.750000 1.000000 -2.000000
+v 1.500000 3.500000 -2.000000
+v 1.500000 2.500000 -2.000000
+v 0.250000 3.000000 -2.000000
+v 2.750000 3.000000 -2.000000
+v 10.875000 4.000000 -1.000000
+v 9.625000 4.000000 -1.000000
+v 10.250000 4.000000 -0.500000
+v 10.250000 4.000000 -1.500000
+v 10.875000 4.000000 1.000000
+v 9.625000 4.000000 1.000000
+v 10.250000 4.000000 1.500000
+v 10.250000 4.000000 0.500000
+v 13.375000 4.000000 1.000000
+v 12.125000 4.000000 1.000000
+v 12.750000 4.000000 1.500000
+v 12.750000 4.000000 0.500000
+v 1.500000 1.500000 2.000000
+v 1.500000 0.500000 2.000000
+v 2.750000 1.000000 2.000000
+v 0.250000 1.000000 2.000000
+v 6.500000 1.500000 2.000000
+v 6.500000 0.500000 2.000000
+v 7.750000 1.000000 2.000000
+v 5.250000 1.000000 2.000000
+v 6.500000 3.500000 2.000000
+v 6.500000 2.500000 2.000000
+v 7.750000 3.000000 2.000000
+v 5.250000 3.000000 2.000000
+v 5.250000 4.000000 1.000000
+v 7.750000 4.000000 1.000000
+v 6.500000 4.000000 0.500000
+v 6.500000 4.000000 1.500000
+v 5.250000 4.000000 -1.000000
+v 7.750000 4.000000 -1.000000
+v 6.500000 4.000000 -1.500000
+v 6.500000 4.000000 -0.500000
+v 0.250000 4.000000 -1.000000
+v 2.750000 4.000000 -1.000000
+v 1.500000 4.000000 -1.500000
+v 1.500000 4.000000 -0.500000
+v 14.000000 1.500000 1.000000
+v 14.000000 0.500000 1.000000
+v 14.000000 1.000000 0.500000
+v 14.000000 1.000000 1.500000
+v 14.000000 1.500000 -1.000000
+v 14.000000 0.500000 -1.000000
+v 14.000000 1.000000 -1.500000
+v 14.000000 1.000000 -0.500000
+v 14.000000 3.500000 -1.000000
+v 14.000000 2.500000 -1.000000
+v 14.000000 3.000000 -1.500000
+v 14.000000 3.000000 -0.500000
+v 9.000000 1.000000 -4.250000
+v 9.000000 1.000000 -2.750000
+v 9.000000 1.500000 -3.500000
+v 9.000000 0.500000 -3.500000
+v 9.000000 3.000000 -4.250000
+v 9.000000 3.000000 -2.750000
+v 9.000000 3.500000 -3.500000
+v 9.000000 2.500000 -3.500000
+v 9.000000 3.000000 -7.250000
+v 9.000000 3.000000 -5.750000
+v 9.000000 3.500000 -6.500000
+v 9.000000 2.500000 -6.500000
+v 10.875000 3.000000 2.000000
+v 9.625000 3.000000 2.000000
+v 10.250000 2.500000 2.000000
+v 10.250000 3.500000 2.000000
+v 10.875000 1.000000 2.000000
+v 9.625000 1.000000 2.000000
+v 10.250000 0.500000 2.000000
+v 10.250000 1.500000 2.000000
+v 13.375000 1.000000 2.000000
+v 12.125000 1.000000 2.000000
+v 12.750000 0.500000 2.000000
+v 12.750000 1.500000 2.000000
+v 10.875000 1.000000 -8.000000
+v 9.625000 1.000000 -8.000000
+v 10.250000 1.500000 -8.000000
+v 10.250000 0.500000 -8.000000
+v 10.875000 3.000000 -8.000000
+v 9.625000 3.000000 -8.000000
+v 10.250000 3.500000 -8.000000
+v 10.250000 2.500000 -8.000000
+v 13.375000 3.000000 -8.000000
+v 12.125000 3.000000 -8.000000
+v 12.750000 3.500000 -8.000000
+v 12.750000 2.500000 -8.000000
+v 10.250000 4.000000 -4.250000
+v 10.250000 4.000000 -2.750000
+v 10.875000 4.000000 -3.500000
+v 9.625000 4.000000 -3.500000
+v 12.750000 4.000000 -4.250000
+v 12.750000 4.000000 -2.750000
+v 13.375000 4.000000 -3.500000
+v 12.125000 4.000000 -3.500000
+v 12.750000 4.000000 -7.250000
+v 12.750000 4.000000 -5.750000
+v 13.375000 4.000000 -6.500000
+v 12.125000 4.000000 -6.500000
+v 14.000000 3.000000 -4.250000
+v 14.000000 3.000000 -2.750000
+v 14.000000 2.500000 -3.500000
+v 14.000000 3.500000 -3.500000
+v 14.000000 1.000000 -4.250000
+v 14.000000 1.000000 -2.750000
+v 14.000000 0.500000 -3.500000
+v 14.000000 1.500000 -3.500000
+v 14.000000 1.000000 -7.250000
+v 14.000000 1.000000 -5.750000
+v 14.000000 0.500000 -6.500000
+v 14.000000 1.500000 -6.500000
+v 14.000000 3.000000 -7.250000
+v 14.000000 3.000000 -5.750000
+v 14.000000 2.500000 -6.500000
+v 14.000000 3.500000 -6.500000
+v 10.250000 4.000000 -7.250000
+v 10.250000 4.000000 -5.750000
+v 10.875000 4.000000 -6.500000
+v 9.625000 4.000000 -6.500000
+v 13.375000 1.000000 -8.000000
+v 12.125000 1.000000 -8.000000
+v 12.750000 1.500000 -8.000000
+v 12.750000 0.500000 -8.000000
+v 13.375000 3.000000 2.000000
+v 12.125000 3.000000 2.000000
+v 12.750000 2.500000 2.000000
+v 12.750000 3.500000 2.000000
+v 9.000000 1.000000 -7.250000
+v 9.000000 1.000000 -5.750000
+v 9.000000 1.500000 -6.500000
+v 9.000000 0.500000 -6.500000
+v 14.000000 3.500000 1.000000
+v 14.000000 2.500000 1.000000
+v 14.000000 3.000000 0.500000
+v 14.000000 3.000000 1.500000
+v 0.250000 4.000000 1.000000
+v 2.750000 4.000000 1.000000
+v 1.500000 4.000000 0.500000
+v 1.500000 4.000000 1.500000
+v 1.500000 3.500000 2.000000
+v 1.500000 2.500000 2.000000
+v 2.750000 3.000000 2.000000
+v 0.250000 3.000000 2.000000
+v 13.375000 4.000000 -1.000000
+v 12.125000 4.000000 -1.000000
+v 12.750000 4.000000 -0.500000
+v 12.750000 4.000000 -1.500000
+v 6.500000 3.500000 -2.000000
+v 6.500000 2.500000 -2.000000
+v 5.250000 3.000000 -2.000000
+v 7.750000 3.000000 -2.000000
+v -1.000000 3.500000 -1.000000
+v -1.000000 2.500000 -1.000000
+v -1.000000 3.000000 -0.500000
+v -1.000000 3.000000 -1.500000
+v -1.000000 2.500000 -1.500000
+v -1.000000 2.500000 -0.500000
+v -1.000000 3.500000 -0.500000
+v 7.750000 2.500000 -2.000000
+v 5.250000 2.500000 -2.000000
+v 5.250000 3.500000 -2.000000
+v 12.125000 4.000000 -1.500000
+v 12.125000 4.000000 -0.500000
+v 13.375000 4.000000 -0.500000
+v 0.250000 2.500000 2.000000
+v 2.750000 2.500000 2.000000
+v 2.750000 3.500000 2.000000
+v 2.750000 4.000000 1.500000
+v 2.750000 4.000000 0.500000
+v 0.250000 4.000000 0.500000
+v 14.000000 2.500000 1.500000
+v 14.000000 2.500000 0.500000
+v 14.000000 3.500000 0.500000
+v 9.000000 0.500000 -5.750000
+v 9.000000 1.500000 -5.750000
+v 9.000000 1.500000 -7.250000
+v 12.125000 3.500000 2.000000
+v 12.125000 2.500000 2.000000
+v 13.375000 2.500000 2.000000
+v 12.125000 0.500000 -8.000000
+v 12.125000 1.500000 -8.000000
+v 13.375000 1.500000 -8.000000
+v 9.625000 4.000000 -5.750000
+v 10.875000 4.000000 -5.750000
+v 10.875000 4.000000 -7.250000
+v 14.000000 3.500000 -5.750000
+v 14.000000 2.500000 -5.750000
+v 14.000000 2.500000 -7.250000
+v 14.000000 1.500000 -5.750000
+v 14.000000 0.500000 -5.750000
+v 14.000000 0.500000 -7.250000
+v 14.000000 1.500000 -2.750000
+v 14.000000 0.500000 -2.750000
+v 14.000000 0.500000 -4.250000
+v 14.000000 3.500000 -2.750000
+v 14.000000 2.500000 -2.750000
+v 14.000000 2.500000 -4.250000
+v 12.125000 4.000000 -5.750000
+v 13.375000 4.000000 -5.750000
+v 13.375000 4.000000 -7.250000
+v 12.125000 4.000000 -2.750000
+v 13.375000 4.000000 -2.750000
+v 13.375000 4.000000 -4.250000
+v 9.625000 4.000000 -2.750000
+v 10.875000 4.000000 -2.750000
+v 10.875000 4.000000 -4.250000
+v 12.125000 2.500000 -8.000000
+v 12.125000 3.500000 -8.000000
+v 13.375000 3.500000 -8.000000
+v 9.625000 2.500000 -8.000000
+v 9.625000 3.500000 -8.000000
+v 10.875000 3.500000 -8.000000
+v 9.625000 0.500000 -8.000000
+v 9.625000 1.500000 -8.000000
+v 10.875000 1.500000 -8.000000
+v 12.125000 1.500000 2.000000
+v 12.125000 0.500000 2.000000
+v 13.375000 0.500000 2.000000
+v 9.625000 1.500000 2.000000
+v 9.625000 0.500000 2.000000
+v 10.875000 0.500000 2.000000
+v 9.625000 3.500000 2.000000
+v 9.625000 2.500000 2.000000
+v 10.875000 2.500000 2.000000
+v 9.000000 2.500000 -5.750000
+v 9.000000 3.500000 -5.750000
+v 9.000000 3.500000 -7.250000
+v 9.000000 2.500000 -2.750000
+v 9.000000 3.500000 -2.750000
+v 9.000000 3.500000 -4.250000
+v 9.000000 0.500000 -2.750000
+v 9.000000 1.500000 -2.750000
+v 9.000000 1.500000 -4.250000
+v 14.000000 2.500000 -0.500000
+v 14.000000 2.500000 -1.500000
+v 14.000000 3.500000 -1.500000
+v 14.000000 0.500000 -0.500000
+v 14.000000 0.500000 -1.500000
+v 14.000000 1.500000 -1.500000
+v 14.000000 0.500000 1.500000
+v 14.000000 0.500000 0.500000
+v 14.000000 1.500000 0.500000
+v 2.750000 4.000000 -0.500000
+v 2.750000 4.000000 -1.500000
+v 0.250000 4.000000 -1.500000
+v 7.750000 4.000000 -0.500000
+v 7.750000 4.000000 -1.500000
+v 5.250000 4.000000 -1.500000
+v 7.750000 4.000000 1.500000
+v 7.750000 4.000000 0.500000
+v 5.250000 4.000000 0.500000
+v 5.250000 2.500000 2.000000
+v 7.750000 2.500000 2.000000
+v 7.750000 3.500000 2.000000
+v 5.250000 0.500000 2.000000
+v 7.750000 0.500000 2.000000
+v 7.750000 1.500000 2.000000
+v 0.250000 0.500000 2.000000
+v 2.750000 0.500000 2.000000
+v 2.750000 1.500000 2.000000
+v 12.125000 4.000000 0.500000
+v 12.125000 4.000000 1.500000
+v 13.375000 4.000000 1.500000
+v 9.625000 4.000000 0.500000
+v 9.625000 4.000000 1.500000
+v 10.875000 4.000000 1.500000
+v 9.625000 4.000000 -1.500000
+v 9.625000 4.000000 -0.500000
+v 10.875000 4.000000 -0.500000
+v 2.750000 2.500000 -2.000000
+v 0.250000 2.500000 -2.000000
+v 0.250000 3.500000 -2.000000
+v 2.750000 0.500000 -2.000000
+v 0.250000 0.500000 -2.000000
+v 0.250000 1.500000 -2.000000
+v 7.750000 0.500000 -2.000000
+v 5.250000 0.500000 -2.000000
+v 5.250000 1.500000 -2.000000
+v -1.000000 2.500000 0.500000
+v -1.000000 2.500000 1.500000
+v -1.000000 3.500000 1.500000
+v -1.000000 0.500000 0.500000
+v -1.000000 0.500000 1.500000
+v -1.000000 1.500000 1.500000
+v -1.000000 0.500000 -1.500000
+v -1.000000 0.500000 -0.500000
+v -1.000000 1.500000 -0.500000
+v -1.000000 1.500000 -1.500000
+v -1.000000 1.500000 0.500000
+v -1.000000 3.500000 0.500000
+v 7.750000 1.500000 -2.000000
+v 2.750000 1.500000 -2.000000
+v 2.750000 3.500000 -2.000000
+v 10.875000 4.000000 -1.500000
+v 10.875000 4.000000 0.500000
+v 13.375000 4.000000 0.500000
+v 0.250000 1.500000 2.000000
+v 5.250000 1.500000 2.000000
+v 5.250000 3.500000 2.000000
+v 5.250000 4.000000 1.500000
+v 5.250000 4.000000 -0.500000
+v 0.250000 4.000000 -0.500000
+v 14.000000 1.500000 1.500000
+v 14.000000 1.500000 -0.500000
+v 14.000000 3.500000 -0.500000
+v 9.000000 0.500000 -4.250000
+v 9.000000 2.500000 -4.250000
+v 9.000000 2.500000 -7.250000
+v 10.875000 3.500000 2.000000
+v 10.875000 1.500000 2.000000
+v 13.375000 1.500000 2.000000
+v 10.875000 0.500000 -8.000000
+v 10.875000 2.500000 -8.000000
+v 13.375000 2.500000 -8.000000
+v 9.625000 4.000000 -4.250000
+v 12.125000 4.000000 -4.250000
+v 12.125000 4.000000 -7.250000
+v 14.000000 3.500000 -4.250000
+v 14.000000 1.500000 -4.250000
+v 14.000000 1.500000 -7.250000
+v 14.000000 3.500000 -7.250000
+v 9.625000 4.000000 -7.250000
+v 13.375000 0.500000 -8.000000
+v 13.375000 3.500000 2.000000
+v 9.000000 0.500000 -7.250000
+v 14.000000 3.500000 1.500000
+v 0.250000 4.000000 1.500000
+v 0.250000 3.500000 2.000000
+v 13.375000 4.000000 -1.500000
+v 7.750000 3.500000 -2.000000
+v -1.000000 3.500000 -1.500000
+vt 0.535952 0.877500
+vt 0.410119 1.003333
+vt 0.410119 0.877500
+vt 0.589881 0.877500
+vt 0.275298 1.003333
+vt 0.275298 0.877500
+vt 1.690922 0.535952
+vt 1.848214 0.410119
+vt 1.690922 0.410119
+vt -1.926786 0.877500
+vt -1.612202 1.003333
+vt -1.612202 0.877500
+vt -1.612202 -0.470714
+vt -1.926786 -0.344881
+vt -1.612202 -0.344881
+vt -0.470714 0.877500
+vt -0.344881 1.003333
+vt -0.344881 0.877500
+vt 1.857202 -0.003333
+vt 2.045952 0.122500
+vt 1.857202 0.122500
+vt 1.690922 1.003333
+vt 1.848214 0.877500
+vt 1.690922 0.877500
+vt 1.690922 -0.003333
+vt 1.848214 0.122500
+vt 1.690922 0.122500
+vt 0.589881 1.857202
+vt 0.747172 2.045952
+vt 0.747172 1.857202
+vt 1.857202 1.003333
+vt 2.045952 0.877500
+vt 1.857202 0.877500
+vt 1.857202 0.500000
+vt 2.045952 0.374167
+vt 1.857202 0.374167
+vt 1.102202 0.500000
+vt 1.290952 0.374167
+vt 1.102202 0.374167
+vt 1.102202 1.003333
+vt 1.290952 0.877500
+vt 1.102202 0.877500
+vt 1.219048 1.857202
+vt 1.376339 2.045952
+vt 1.376339 1.857202
+vt 1.219048 1.102202
+vt 1.376339 1.290952
+vt 1.376339 1.102202
+vt 0.589881 1.102202
+vt 0.747172 1.290952
+vt 0.747172 1.102202
+vt 1.690922 0.500000
+vt 1.848214 0.625833
+vt 1.690922 0.625833
+vt 1.061756 0.500000
+vt 1.219048 0.625833
+vt 1.061756 0.625833
+vt 1.061756 -0.003333
+vt 1.219048 0.122500
+vt 1.061756 0.122500
+vt 1.690922 0.500000
+vt 1.848214 0.374167
+vt 1.690922 0.374167
+vt 1.061756 0.500000
+vt 1.219048 0.374167
+vt 1.061756 0.374167
+vt 1.061756 1.003333
+vt 1.219048 0.877500
+vt 1.061756 0.877500
+vt 1.857202 0.500000
+vt 2.045952 0.625833
+vt 1.857202 0.625833
+vt 1.102202 0.500000
+vt 1.290952 0.625833
+vt 1.102202 0.625833
+vt 1.102202 -0.003333
+vt 1.290952 0.122500
+vt 1.102202 0.122500
+vt 0.032619 0.877500
+vt 0.158452 1.003333
+vt 0.158452 0.877500
+vt 0.032619 0.374167
+vt 0.158452 0.500000
+vt 0.158452 0.374167
+vt -0.470714 0.374167
+vt -0.344881 0.500000
+vt -0.344881 0.374167
+vt -1.612202 0.032619
+vt -1.926786 0.158452
+vt -1.612202 0.158452
+vt -0.353869 0.032619
+vt -0.668452 0.158452
+vt -0.353869 0.158452
+vt -0.353869 -0.470714
+vt -0.668452 -0.344881
+vt -0.353869 -0.344881
+vt -0.668452 0.877500
+vt -0.353869 1.003333
+vt -0.353869 0.877500
+vt -0.668452 0.374167
+vt -0.353869 0.500000
+vt -0.353869 0.374167
+vt -1.926786 0.374167
+vt -1.612202 0.500000
+vt -1.612202 0.374167
+vt 1.690922 0.032619
+vt 1.848214 -0.093214
+vt 1.690922 -0.093214
+vt 1.061756 0.032619
+vt 1.219048 -0.093214
+vt 1.061756 -0.093214
+vt 1.061756 0.535952
+vt 1.219048 0.410119
+vt 1.061756 0.410119
+vt -0.668452 0.877500
+vt -0.983036 1.003333
+vt -0.983036 0.877500
+vt -0.668452 0.374167
+vt -0.983036 0.500000
+vt -0.983036 0.374167
+vt 0.589881 0.374167
+vt 0.275298 0.500000
+vt 0.275298 0.374167
+vt 0.032619 0.877500
+vt -0.093214 1.003333
+vt -0.093214 0.877500
+vt 0.032619 0.374167
+vt -0.093214 0.500000
+vt -0.093214 0.374167
+vt 0.535952 0.374167
+vt 0.410119 0.500000
+vt 0.410119 0.374167
+vt 0.284286 0.374167
+vt 0.158452 0.500000
+vt 0.158452 0.374167
+vt 0.284286 0.122500
+vt 0.158452 0.248333
+vt 0.158452 0.122500
+vt 0.535952 0.122500
+vt 0.410119 0.248333
+vt 0.410119 0.122500
+vt -0.219048 0.374167
+vt -0.344881 0.500000
+vt -0.344881 0.374167
+vt -0.219048 0.122500
+vt -0.344881 0.248333
+vt -0.344881 0.122500
+vt 0.032619 0.122500
+vt -0.093214 0.248333
+vt -0.093214 0.122500
+vt -0.219048 0.877500
+vt -0.344881 1.003333
+vt -0.344881 0.877500
+vt -0.219048 0.625833
+vt -0.344881 0.751667
+vt -0.344881 0.625833
+vt 0.032619 0.625833
+vt -0.093214 0.751667
+vt -0.093214 0.625833
+vt -0.039286 0.374167
+vt -0.353869 0.500000
+vt -0.353869 0.374167
+vt -0.039286 0.122500
+vt -0.353869 0.248333
+vt -0.353869 0.122500
+vt 0.589881 0.122500
+vt 0.275298 0.248333
+vt 0.275298 0.122500
+vt -1.297619 0.374167
+vt -1.612202 0.500000
+vt -1.612202 0.374167
+vt -1.297619 0.122500
+vt -1.612202 0.248333
+vt -1.612202 0.122500
+vt -0.668452 0.122500
+vt -0.983036 0.248333
+vt -0.983036 0.122500
+vt -1.297619 0.877500
+vt -1.612202 1.003333
+vt -1.612202 0.877500
+vt -1.297619 0.625833
+vt -1.612202 0.751667
+vt -1.612202 0.625833
+vt -0.668452 0.625833
+vt -0.983036 0.751667
+vt -0.983036 0.625833
+vt 1.061756 0.284286
+vt 1.219048 0.158452
+vt 1.061756 0.158452
+vt 0.747172 0.284286
+vt 0.904464 0.158452
+vt 0.747172 0.158452
+vt 0.747172 0.535952
+vt 0.904464 0.410119
+vt 0.747172 0.410119
+vt 1.061756 -0.219048
+vt 1.219048 -0.344881
+vt 1.061756 -0.344881
+vt 0.747172 -0.219048
+vt 0.904464 -0.344881
+vt 0.747172 -0.344881
+vt 0.747172 0.032619
+vt 0.904464 -0.093214
+vt 0.747172 -0.093214
+vt 1.690922 -0.219048
+vt 1.848214 -0.344881
+vt 1.690922 -0.344881
+vt 1.376339 -0.219048
+vt 1.533631 -0.344881
+vt 1.376339 -0.344881
+vt 1.376339 0.032619
+vt 1.533631 -0.093214
+vt 1.376339 -0.093214
+vt -1.297619 0.374167
+vt -0.983036 0.500000
+vt -0.983036 0.374167
+vt -1.297619 0.122500
+vt -0.983036 0.248333
+vt -0.983036 0.122500
+vt -1.926786 0.122500
+vt -1.612202 0.248333
+vt -1.612202 0.122500
+vt -0.039286 0.374167
+vt 0.275298 0.500000
+vt 0.275298 0.374167
+vt -0.039286 0.122500
+vt 0.275298 0.248333
+vt 0.275298 0.122500
+vt -0.668452 0.122500
+vt -0.353869 0.248333
+vt -0.353869 0.122500
+vt -0.039286 0.877500
+vt 0.275298 1.003333
+vt 0.275298 0.877500
+vt -0.039286 0.625833
+vt 0.275298 0.751667
+vt 0.275298 0.625833
+vt -0.668452 0.625833
+vt -0.353869 0.751667
+vt -0.353869 0.625833
+vt -0.353869 -0.219048
+vt -0.668452 -0.093214
+vt -0.353869 -0.093214
+vt 0.275298 -0.219048
+vt -0.039286 -0.093214
+vt 0.275298 -0.093214
+vt 0.275298 -0.470714
+vt -0.039286 -0.344881
+vt 0.275298 -0.344881
+vt -0.353869 0.284286
+vt -0.668452 0.410119
+vt -0.353869 0.410119
+vt 0.275298 0.284286
+vt -0.039286 0.410119
+vt 0.275298 0.410119
+vt 0.275298 0.032619
+vt -0.039286 0.158452
+vt 0.275298 0.158452
+vt -1.612202 0.284286
+vt -1.926786 0.410119
+vt -1.612202 0.410119
+vt -0.983036 0.284286
+vt -1.297619 0.410119
+vt -0.983036 0.410119
+vt -0.983036 0.032619
+vt -1.297619 0.158452
+vt -0.983036 0.158452
+vt -0.219048 0.374167
+vt -0.093214 0.500000
+vt -0.093214 0.374167
+vt -0.219048 0.122500
+vt -0.093214 0.248333
+vt -0.093214 0.122500
+vt -0.470714 0.122500
+vt -0.344881 0.248333
+vt -0.344881 0.122500
+vt 0.284286 0.374167
+vt 0.410119 0.500000
+vt 0.410119 0.374167
+vt 0.284286 0.122500
+vt 0.410119 0.248333
+vt 0.410119 0.122500
+vt 0.032619 0.122500
+vt 0.158452 0.248333
+vt 0.158452 0.122500
+vt 0.284286 0.877500
+vt 0.410119 1.003333
+vt 0.410119 0.877500
+vt 0.284286 0.625833
+vt 0.410119 0.751667
+vt 0.410119 0.625833
+vt 0.032619 0.625833
+vt 0.158452 0.751667
+vt 0.158452 0.625833
+vt 1.102202 0.248333
+vt 1.290952 0.374167
+vt 1.102202 0.374167
+vt 0.724702 0.248333
+vt 0.913452 0.374167
+vt 0.724702 0.374167
+vt 0.724702 -0.003333
+vt 0.913452 0.122500
+vt 0.724702 0.122500
+vt 1.102202 0.751667
+vt 1.290952 0.877500
+vt 1.102202 0.877500
+vt 0.724702 0.751667
+vt 0.913452 0.877500
+vt 0.724702 0.877500
+vt 0.724702 0.500000
+vt 0.913452 0.625833
+vt 0.724702 0.625833
+vt 1.857202 0.751667
+vt 2.045952 0.877500
+vt 1.857202 0.877500
+vt 1.479702 0.751667
+vt 1.668452 0.877500
+vt 1.479702 0.877500
+vt 1.479702 0.500000
+vt 1.668452 0.625833
+vt 1.479702 0.625833
+vt 1.061756 0.751667
+vt 1.219048 0.625833
+vt 1.061756 0.625833
+vt 0.747172 0.751667
+vt 0.904464 0.625833
+vt 0.747172 0.625833
+vt 0.747172 1.003333
+vt 0.904464 0.877500
+vt 0.747172 0.877500
+vt 1.061756 0.248333
+vt 1.219048 0.122500
+vt 1.061756 0.122500
+vt 0.747172 0.248333
+vt 0.904464 0.122500
+vt 0.747172 0.122500
+vt 0.747172 0.500000
+vt 0.904464 0.374167
+vt 0.747172 0.374167
+vt 1.690922 0.248333
+vt 1.848214 0.122500
+vt 1.690922 0.122500
+vt 1.376339 0.248333
+vt 1.533631 0.122500
+vt 1.376339 0.122500
+vt 1.376339 0.500000
+vt 1.533631 0.374167
+vt 1.376339 0.374167
+vt 1.061756 0.248333
+vt 1.219048 0.374167
+vt 1.061756 0.374167
+vt 0.747172 0.248333
+vt 0.904464 0.374167
+vt 0.747172 0.374167
+vt 0.747172 -0.003333
+vt 0.904464 0.122500
+vt 0.747172 0.122500
+vt 1.061756 0.751667
+vt 1.219048 0.877500
+vt 1.061756 0.877500
+vt 0.747172 0.751667
+vt 0.904464 0.877500
+vt 0.747172 0.877500
+vt 0.747172 0.500000
+vt 0.904464 0.625833
+vt 0.747172 0.625833
+vt 1.690922 0.751667
+vt 1.848214 0.877500
+vt 1.690922 0.877500
+vt 1.376339 0.751667
+vt 1.533631 0.877500
+vt 1.376339 0.877500
+vt 1.376339 0.500000
+vt 1.533631 0.625833
+vt 1.376339 0.625833
+vt 0.904464 1.102202
+vt 1.061756 1.290952
+vt 1.061756 1.102202
+vt 0.904464 0.724702
+vt 1.061756 0.913452
+vt 1.061756 0.724702
+vt 0.589881 0.724702
+vt 0.747172 0.913452
+vt 0.747172 0.724702
+vt 1.533631 1.102202
+vt 1.690922 1.290952
+vt 1.690922 1.102202
+vt 1.533631 0.724702
+vt 1.690922 0.913452
+vt 1.690922 0.724702
+vt 1.219048 0.724702
+vt 1.376339 0.913452
+vt 1.376339 0.724702
+vt 1.533631 1.857202
+vt 1.690922 2.045952
+vt 1.690922 1.857202
+vt 1.533631 1.479702
+vt 1.690922 1.668452
+vt 1.690922 1.479702
+vt 1.219048 1.479702
+vt 1.376339 1.668452
+vt 1.376339 1.479702
+vt 1.102202 0.751667
+vt 1.290952 0.625833
+vt 1.102202 0.625833
+vt 0.724702 0.751667
+vt 0.913452 0.625833
+vt 0.724702 0.625833
+vt 0.724702 1.003333
+vt 0.913452 0.877500
+vt 0.724702 0.877500
+vt 1.102202 0.248333
+vt 1.290952 0.122500
+vt 1.102202 0.122500
+vt 0.724702 0.248333
+vt 0.913452 0.122500
+vt 0.724702 0.122500
+vt 0.724702 0.500000
+vt 0.913452 0.374167
+vt 0.724702 0.374167
+vt 1.857202 0.248333
+vt 2.045952 0.122500
+vt 1.857202 0.122500
+vt 1.479702 0.248333
+vt 1.668452 0.122500
+vt 1.479702 0.122500
+vt 1.479702 0.500000
+vt 1.668452 0.374167
+vt 1.479702 0.374167
+vt 1.857202 0.751667
+vt 2.045952 0.625833
+vt 1.857202 0.625833
+vt 1.479702 0.751667
+vt 1.668452 0.625833
+vt 1.479702 0.625833
+vt 1.479702 1.003333
+vt 1.668452 0.877500
+vt 1.479702 0.877500
+vt 0.904464 1.857202
+vt 1.061756 2.045952
+vt 1.061756 1.857202
+vt 0.904464 1.479702
+vt 1.061756 1.668452
+vt 1.061756 1.479702
+vt 0.589881 1.479702
+vt 0.747172 1.668452
+vt 0.747172 1.479702
+vt 1.690922 0.248333
+vt 1.848214 0.374167
+vt 1.690922 0.374167
+vt 1.376339 0.248333
+vt 1.533631 0.374167
+vt 1.376339 0.374167
+vt 1.376339 -0.003333
+vt 1.533631 0.122500
+vt 1.376339 0.122500
+vt 1.690922 0.751667
+vt 1.848214 0.625833
+vt 1.690922 0.625833
+vt 1.376339 0.751667
+vt 1.533631 0.625833
+vt 1.376339 0.625833
+vt 1.376339 1.003333
+vt 1.533631 0.877500
+vt 1.376339 0.877500
+vt 1.857202 0.248333
+vt 2.045952 0.374167
+vt 1.857202 0.374167
+vt 1.479702 0.248333
+vt 1.668452 0.374167
+vt 1.479702 0.374167
+vt 1.479702 -0.003333
+vt 1.668452 0.122500
+vt 1.479702 0.122500
+vt -0.219048 0.877500
+vt -0.093214 1.003333
+vt -0.093214 0.877500
+vt -0.219048 0.625833
+vt -0.093214 0.751667
+vt -0.093214 0.625833
+vt -0.470714 0.625833
+vt -0.344881 0.751667
+vt -0.344881 0.625833
+vt -1.612202 -0.219048
+vt -1.926786 -0.093214
+vt -1.612202 -0.093214
+vt -0.983036 -0.219048
+vt -1.297619 -0.093214
+vt -0.983036 -0.093214
+vt -0.983036 -0.470714
+vt -1.297619 -0.344881
+vt -0.983036 -0.344881
+vt -1.297619 0.877500
+vt -0.983036 1.003333
+vt -0.983036 0.877500
+vt -1.297619 0.625833
+vt -0.983036 0.751667
+vt -0.983036 0.625833
+vt -1.926786 0.625833
+vt -1.612202 0.751667
+vt -1.612202 0.625833
+vt 1.690922 0.284286
+vt 1.848214 0.158452
+vt 1.690922 0.158452
+vt 1.376339 0.284286
+vt 1.533631 0.158452
+vt 1.376339 0.158452
+vt 1.376339 0.535952
+vt 1.533631 0.410119
+vt 1.376339 0.410119
+vt -0.039286 0.877500
+vt -0.353869 1.003333
+vt -0.353869 0.877500
+vt -0.039286 0.625833
+vt -0.353869 0.751667
+vt -0.353869 0.625833
+vt 0.589881 0.625833
+vt 0.275298 0.751667
+vt 0.275298 0.625833
+vt 0.284286 0.877500
+vt 0.158452 1.003333
+vt 0.158452 0.877500
+vt 0.284286 0.625833
+vt 0.158452 0.751667
+vt 0.158452 0.625833
+vt 0.535952 0.625833
+vt 0.410119 0.751667
+vt 0.410119 0.625833
+vt 0.284286 0.751667
+vt 0.284286 0.500000
+vt 0.535952 0.500000
+vt 0.032619 0.751667
+vt 0.032619 0.500000
+vt 0.032619 1.003333
+vt -0.039286 0.751667
+vt -0.039286 0.500000
+vt 0.589881 0.500000
+vt -0.668452 0.751667
+vt -0.668452 0.500000
+vt -0.668452 1.003333
+vt 1.533631 0.284286
+vt 1.219048 0.284286
+vt 1.219048 0.535952
+vt 1.533631 0.032619
+vt 1.219048 0.032619
+vt 1.848214 0.032619
+vt -1.297619 0.751667
+vt -1.297619 0.500000
+vt -1.926786 0.500000
+vt -0.668452 0.751667
+vt -0.668452 0.500000
+vt -0.668452 1.003333
+vt -1.297619 -0.219048
+vt -0.668452 -0.219048
+vt -0.668452 -0.470714
+vt -1.297619 0.032619
+vt -0.668452 0.032619
+vt -1.926786 0.032619
+vt -0.219048 0.751667
+vt -0.219048 0.500000
+vt -0.470714 0.500000
+vt 0.032619 0.751667
+vt 0.032619 0.500000
+vt 0.032619 1.003333
+vt 1.668452 0.248333
+vt 1.290952 0.248333
+vt 1.290952 -0.003333
+vt 1.668452 0.500000
+vt 1.290952 0.500000
+vt 2.045952 0.500000
+vt 1.533631 0.751667
+vt 1.219048 0.751667
+vt 1.219048 1.003333
+vt 1.533631 0.500000
+vt 1.219048 0.500000
+vt 1.848214 0.500000
+vt 1.533631 0.248333
+vt 1.219048 0.248333
+vt 1.219048 -0.003333
+vt 1.533631 0.500000
+vt 1.219048 0.500000
+vt 1.848214 0.500000
+vt 0.904464 1.668452
+vt 0.904464 1.290952
+vt 0.589881 1.290952
+vt 1.219048 1.668452
+vt 1.219048 1.290952
+vt 1.219048 2.045952
+vt 1.668452 0.751667
+vt 1.290952 0.751667
+vt 1.290952 1.003333
+vt 1.668452 0.500000
+vt 1.290952 0.500000
+vt 2.045952 0.500000
+vt 1.668452 0.248333
+vt 1.290952 0.248333
+vt 1.668452 -0.003333
+vt 1.479702 -0.003333
+vt 1.290952 -0.003333
+vt 2.045952 -0.003333
+vt 1.857202 -0.003333
+vt 0.913452 0.248333
+vt 0.535952 0.374167
+vt 0.535952 0.248333
+vt 0.535952 0.500000
+vt 0.913452 -0.003333
+vt 0.724702 -0.003333
+vt 0.535952 0.122500
+vt 0.535952 -0.003333
+vt 1.102202 -0.003333
+vt 0.913452 0.751667
+vt 0.535952 0.877500
+vt 0.535952 0.751667
+vt 0.535952 1.003333
+vt 0.913452 0.500000
+vt 0.535952 0.625833
+vt 1.533631 1.668452
+vt 1.533631 1.290952
+vt 1.848214 1.668452
+vt 1.848214 1.479702
+vt 1.848214 1.290952
+vt 1.848214 2.045952
+vt 1.848214 1.857202
+vt 1.533631 0.913452
+vt 1.533631 0.535952
+vt 1.848214 0.913452
+vt 1.848214 0.724702
+vt 1.848214 0.535952
+vt 1.848214 1.102202
+vt 0.904464 0.913452
+vt 0.904464 0.535952
+vt 0.589881 0.535952
+vt 1.219048 0.913452
+vt 1.533631 0.751667
+vt 1.219048 0.751667
+vt 1.533631 1.003333
+vt 1.376339 1.003333
+vt 1.219048 1.003333
+vt 1.848214 1.003333
+vt 1.690922 1.003333
+vt 0.904464 0.751667
+vt 0.589881 0.625833
+vt 0.589881 0.751667
+vt 0.589881 0.500000
+vt 0.904464 1.003333
+vt 0.747172 1.003333
+vt 0.589881 0.877500
+vt 0.589881 1.003333
+vt 1.061756 1.003333
+vt 0.904464 0.248333
+vt 0.589881 0.122500
+vt 0.589881 0.248333
+vt 0.589881 -0.003333
+vt 0.904464 0.500000
+vt 0.589881 0.374167
+vt 1.533631 0.248333
+vt 1.219048 0.248333
+vt 1.533631 -0.003333
+vt 1.376339 -0.003333
+vt 1.219048 -0.003333
+vt 1.848214 -0.003333
+vt 1.690922 -0.003333
+vt 0.904464 0.248333
+vt 0.589881 0.374167
+vt 0.589881 0.248333
+vt 0.589881 0.500000
+vt 0.904464 -0.003333
+vt 0.747172 -0.003333
+vt 0.589881 0.122500
+vt 0.589881 -0.003333
+vt 1.061756 -0.003333
+vt 0.904464 0.751667
+vt 0.589881 0.877500
+vt 0.589881 0.751667
+vt 0.589881 1.003333
+vt 0.904464 0.500000
+vt 0.589881 0.625833
+vt 1.668452 0.751667
+vt 1.290952 0.751667
+vt 1.668452 1.003333
+vt 1.479702 1.003333
+vt 1.290952 1.003333
+vt 2.045952 1.003333
+vt 1.857202 1.003333
+vt 0.913452 0.751667
+vt 0.535952 0.625833
+vt 0.535952 0.751667
+vt 0.535952 0.500000
+vt 0.913452 1.003333
+vt 0.724702 1.003333
+vt 0.535952 0.877500
+vt 0.535952 1.003333
+vt 1.102202 1.003333
+vt 0.913452 0.248333
+vt 0.535952 0.122500
+vt 0.535952 0.248333
+vt 0.535952 -0.003333
+vt 0.913452 0.500000
+vt 0.535952 0.374167
+vt 0.284286 0.751667
+vt 0.284286 0.500000
+vt 0.284286 0.248333
+vt 0.158452 -0.003333
+vt 0.284286 -0.003333
+vt 0.032619 -0.003333
+vt 0.410119 -0.003333
+vt -0.219048 0.248333
+vt -0.344881 -0.003333
+vt -0.219048 -0.003333
+vt -0.470714 -0.003333
+vt 0.032619 0.248333
+vt -0.093214 -0.003333
+vt -1.297619 0.284286
+vt -0.668452 0.284286
+vt -1.297619 0.535952
+vt -0.983036 0.535952
+vt -0.668452 0.535952
+vt -1.926786 0.535952
+vt -1.612202 0.535952
+vt -0.039286 0.284286
+vt 0.589881 0.158452
+vt 0.589881 0.284286
+vt 0.589881 0.032619
+vt -0.039286 0.535952
+vt 0.275298 0.535952
+vt 0.589881 0.410119
+vt -0.353869 0.535952
+vt -0.039286 -0.219048
+vt 0.589881 -0.344881
+vt 0.589881 -0.219048
+vt 0.589881 -0.470714
+vt -0.039286 0.032619
+vt 0.589881 -0.093214
+vt -0.039286 0.751667
+vt -0.039286 0.500000
+vt -0.039286 0.248333
+vt -0.353869 -0.003333
+vt -0.039286 -0.003333
+vt -0.668452 -0.003333
+vt 0.275298 -0.003333
+vt -1.297619 0.248333
+vt -1.612202 -0.003333
+vt -1.297619 -0.003333
+vt -1.926786 -0.003333
+vt -0.668452 0.248333
+vt -0.983036 -0.003333
+vt 1.533631 -0.219048
+vt 1.219048 -0.219048
+vt 1.533631 -0.470714
+vt 1.376339 -0.470714
+vt 1.219048 -0.470714
+vt 1.848214 -0.470714
+vt 1.690922 -0.470714
+vt 0.904464 -0.219048
+vt 0.904464 -0.470714
+vt 0.747172 -0.470714
+vt 1.061756 -0.470714
+vt 0.904464 0.284286
+vt 0.904464 0.032619
+vt -1.297619 0.751667
+vt -1.297619 0.500000
+vt -1.926786 0.751667
+vt -1.926786 0.625833
+vt -1.926786 0.500000
+vt -1.926786 1.003333
+vt -1.926786 0.877500
+vt -1.297619 0.248333
+vt -0.983036 -0.003333
+vt -1.297619 -0.003333
+vt -0.668452 -0.003333
+vt -1.926786 0.248333
+vt -1.926786 0.122500
+vt -1.612202 -0.003333
+vt -1.926786 -0.003333
+vt -1.926786 0.374167
+vt -0.039286 0.248333
+vt 0.275298 -0.003333
+vt -0.039286 -0.003333
+vt 0.589881 -0.003333
+vt -0.668452 0.248333
+vt -0.353869 -0.003333
+vt -0.219048 0.751667
+vt -0.219048 0.500000
+vt -0.470714 0.751667
+vt -0.470714 0.625833
+vt -0.470714 0.500000
+vt -0.470714 1.003333
+vt -0.470714 0.877500
+vt -0.219048 0.248333
+vt -0.093214 -0.003333
+vt -0.219048 -0.003333
+vt 0.032619 -0.003333
+vt -0.470714 0.248333
+vt -0.470714 0.122500
+vt -0.344881 -0.003333
+vt -0.470714 -0.003333
+vt -0.470714 0.374167
+vt 0.284286 0.248333
+vt 0.410119 -0.003333
+vt 0.284286 -0.003333
+vt 0.535952 -0.003333
+vt 0.032619 0.248333
+vt 0.158452 -0.003333
+vt 0.535952 0.248333
+vt -0.219048 1.003333
+vt 0.589881 0.248333
+vt -1.297619 1.003333
+vt 1.848214 -0.219048
+vt -1.926786 0.248333
+vt -0.039286 1.003333
+vt -0.039286 -0.470714
+vt -1.926786 0.284286
+vt -0.470714 0.248333
+vt 0.284286 1.003333
+vt 0.913452 -0.003333
+vt 2.045952 0.751667
+vt 0.904464 1.003333
+vt 1.848214 0.248333
+vt 0.904464 -0.003333
+vt 1.848214 0.751667
+vt 0.589881 0.913452
+vt 1.533631 2.045952
+vt 0.913452 1.003333
+vt 2.045952 0.248333
+vt 2.045952 0.751667
+vt 1.668452 1.003333
+vt 0.904464 2.045952
+vt 0.589881 1.668452
+vt 1.848214 0.248333
+vt 1.533631 -0.003333
+vt 1.848214 0.751667
+vt 1.533631 1.003333
+vt 2.045952 0.248333
+vt 1.668452 -0.003333
+vt -0.219048 1.003333
+vt -0.470714 0.751667
+vt -1.926786 -0.219048
+vt -1.297619 -0.470714
+vt -1.297619 1.003333
+vt -1.926786 0.751667
+vt 1.848214 0.284286
+vt -0.039286 1.003333
+vt 0.589881 0.751667
+vt 0.284286 1.003333
+vt 0.535952 0.751667
+vt 0.535952 1.003333
+vt 0.589881 1.003333
+vt -1.926786 1.003333
+vt -1.926786 -0.470714
+vt -0.470714 1.003333
+vt 2.045952 -0.003333
+vt 1.848214 1.003333
+vt 1.848214 -0.003333
+vt 0.589881 2.045952
+vt 2.045952 1.003333
+vn 1.0000 0.0000 0.0000
+vn 0.0000 0.0000 1.0000
+vn 0.0000 -1.0000 0.0000
+vn 0.0000 0.0000 -1.0000
+vn -1.0000 0.0000 0.0000
+s off
+f 319/1/1 196/2/1 737/3/1
+f 322/4/2 199/5/2 736/6/2
+f 209/7/3 329/8/3 735/9/3
+f 195/10/4 204/11/4 734/12/4
+f 204/13/3 318/14/3 733/15/3
+f 330/16/5 207/17/5 732/18/5
+f 216/19/1 212/20/1 731/21/1
+f 332/22/4 330/23/4 730/24/4
+f 215/25/2 213/26/2 729/27/2
+f 339/28/3 336/29/3 728/30/3
+f 341/31/5 335/32/5 727/33/5
+f 246/34/5 309/35/5 726/36/5
+f 247/37/5 344/38/5 725/39/5
+f 315/40/5 345/41/5 724/42/5
+f 250/43/3 310/44/3 723/45/3
+f 251/46/3 348/47/3 722/48/3
+f 313/49/3 349/50/3 721/51/3
+f 254/52/2 239/53/2 720/54/2
+f 255/55/2 352/56/2 719/57/2
+f 241/58/2 353/59/2 718/60/2
+f 258/61/4 304/62/4 717/63/4
+f 259/64/4 356/65/4 716/66/4
+f 306/67/4 357/68/4 715/69/4
+f 262/70/1 238/71/1 714/72/1
+f 263/73/1 360/74/1 713/75/1
+f 242/76/1 361/77/1 712/78/1
+f 266/79/5 233/80/5 711/81/5
+f 267/82/5 364/83/5 710/84/5
+f 304/85/5 365/86/5 709/87/5
+f 270/88/3 292/89/3 708/90/3
+f 271/91/3 368/92/3 707/93/3
+f 230/94/3 369/95/3 706/96/3
+f 274/97/4 230/98/4 705/99/4
+f 275/100/4 372/101/4 704/102/4
+f 221/103/4 373/104/4 703/105/4
+f 278/106/3 303/107/3 702/108/3
+f 279/109/3 376/110/3 701/111/3
+f 235/112/3 377/113/3 700/114/3
+f 282/115/2 225/116/2 699/117/2
+f 283/118/2 380/119/2 698/120/2
+f 296/121/2 381/122/2 697/123/2
+f 286/124/1 222/125/1 696/126/1
+f 287/127/1 384/128/1 695/129/1
+f 293/130/1 385/131/1 694/132/1
+f 386/133/1 289/134/1 693/135/1
+f 387/136/1 388/137/1 692/138/1
+f 197/139/1 389/140/1 691/141/1
+f 390/142/1 288/143/1 690/144/1
+f 391/145/1 392/146/1 689/147/1
+f 383/148/1 393/149/1 688/150/1
+f 394/151/1 318/152/1 687/153/1
+f 395/154/1 396/155/1 686/156/1
+f 382/157/1 397/158/1 685/159/1
+f 398/160/2 285/161/2 684/162/2
+f 399/163/2 400/164/2 683/165/2
+f 200/166/2 401/167/2 682/168/2
+f 402/169/2 284/170/2 681/171/2
+f 403/172/2 404/173/2 680/174/2
+f 379/175/2 405/176/2 679/177/2
+f 406/178/2 321/179/2 678/180/2
+f 407/181/2 408/182/2 677/183/2
+f 378/184/2 409/185/2 676/186/2
+f 410/187/3 281/188/3 675/189/3
+f 411/190/3 412/191/3 674/192/3
+f 331/193/3 413/194/3 673/195/3
+f 414/196/3 280/197/3 672/198/3
+f 415/199/3 416/200/3 671/201/3
+f 375/202/3 417/203/3 670/204/3
+f 418/205/3 207/206/3 669/207/3
+f 419/208/3 420/209/3 668/210/3
+f 374/211/3 421/212/3 667/213/3
+f 422/214/4 277/215/4 666/216/4
+f 423/217/4 424/218/4 665/219/4
+f 317/220/4 425/221/4 664/222/4
+f 426/223/4 276/224/4 663/225/4
+f 427/226/4 428/227/4 662/228/4
+f 371/229/4 429/230/4 661/231/4
+f 430/232/4 326/233/4 660/234/4
+f 431/235/4 432/236/4 659/237/4
+f 370/238/4 433/239/4 658/240/4
+f 434/241/3 273/242/3 657/243/3
+f 435/244/3 436/245/3 656/246/3
+f 326/247/3 437/248/3 655/249/3
+f 438/250/3 272/251/3 654/252/3
+f 439/253/3 440/254/3 653/255/3
+f 367/256/3 441/257/3 652/258/3
+f 442/259/3 196/260/3 651/261/3
+f 443/262/3 444/263/3 650/264/3
+f 366/265/3 445/266/3 649/267/3
+f 446/268/5 269/269/5 648/270/5
+f 447/271/5 448/272/5 647/273/5
+f 208/274/5 449/275/5 646/276/5
+f 450/277/5 268/278/5 645/279/5
+f 451/280/5 452/281/5 644/282/5
+f 363/283/5 453/284/5 643/285/5
+f 454/286/5 329/287/5 642/288/5
+f 455/289/5 456/290/5 641/291/5
+f 362/292/5 457/293/5 640/294/5
+f 458/295/1 265/296/1 639/297/1
+f 459/298/1 460/299/1 638/300/1
+f 338/301/1 461/302/1 637/303/1
+f 462/304/1 264/305/1 636/306/1
+f 463/307/1 464/308/1 635/309/1
+f 359/310/1 465/311/1 634/312/1
+f 466/313/1 334/314/1 633/315/1
+f 467/316/1 468/317/1 632/318/1
+f 358/319/1 469/320/1 631/321/1
+f 470/322/4 261/323/4 630/324/4
+f 471/325/4 472/326/4 629/327/4
+f 210/328/4 473/329/4 628/330/4
+f 474/331/4 260/332/4 627/333/4
+f 475/334/4 476/335/4 626/336/4
+f 355/337/4 477/338/4 625/339/4
+f 478/340/4 208/341/4 624/342/4
+f 479/343/4 480/344/4 623/345/4
+f 354/346/4 481/347/4 622/348/4
+f 482/349/2 257/350/2 621/351/2
+f 483/352/2 484/353/2 620/354/2
+f 337/355/2 485/356/2 619/357/2
+f 486/358/2 256/359/2 618/360/2
+f 487/361/2 488/362/2 617/363/2
+f 351/364/2 489/365/2 616/366/2
+f 490/367/2 335/368/2 615/369/2
+f 491/370/2 492/371/2 614/372/2
+f 350/373/2 493/374/2 613/375/2
+f 494/376/3 253/377/3 612/378/3
+f 495/379/3 496/380/3 611/381/3
+f 217/382/3 497/383/3 610/384/3
+f 498/385/3 252/386/3 609/387/3
+f 499/388/3 500/389/3 608/390/3
+f 347/391/3 501/392/3 607/393/3
+f 502/394/3 214/395/3 606/396/3
+f 503/397/3 504/398/3 605/399/3
+f 346/400/3 505/401/3 604/402/3
+f 506/403/5 249/404/5 603/405/5
+f 507/406/5 508/407/5 602/408/5
+f 219/409/5 509/410/5 601/411/5
+f 510/412/5 248/413/5 600/414/5
+f 511/415/5 512/416/5 599/417/5
+f 343/418/5 513/419/5 598/420/5
+f 514/421/5 213/422/5 597/423/5
+f 515/424/5 516/425/5 596/426/5
+f 342/427/5 517/428/5 595/429/5
+f 518/430/5 239/431/5 594/432/5
+f 519/433/5 520/434/5 593/435/5
+f 245/436/5 521/437/5 592/438/5
+f 522/439/3 240/440/3 591/441/3
+f 523/442/3 524/443/3 590/444/3
+f 243/445/3 525/446/3 589/447/3
+f 526/448/2 309/449/2 588/450/2
+f 527/451/2 528/452/2 587/453/2
+f 311/454/2 529/455/2 586/456/2
+f 530/457/4 234/458/4 585/459/4
+f 531/460/4 532/461/4 584/462/4
+f 236/463/4 533/464/4 583/465/4
+f 534/466/1 308/467/1 582/468/1
+f 535/469/1 536/470/1 581/471/1
+f 312/472/1 537/473/1 580/474/1
+f 538/475/5 303/476/5 579/477/5
+f 539/478/5 540/479/5 578/480/5
+f 234/481/5 541/482/5 577/483/5
+f 542/484/3 222/485/3 576/486/3
+f 543/487/3 544/488/3 575/489/3
+f 300/490/3 545/491/3 574/492/3
+f 546/493/4 300/494/4 573/495/4
+f 547/496/4 548/497/4 572/498/4
+f 291/499/4 549/500/4 571/501/4
+f 550/502/3 233/503/3 570/504/3
+f 551/505/3 552/506/3 569/507/3
+f 305/508/3 553/509/3 568/510/3
+f 554/511/2 295/512/2 567/513/2
+f 555/514/2 556/515/2 566/516/2
+f 226/517/2 557/518/2 565/519/2
+f 558/520/1 292/521/1 564/522/1
+f 559/523/1 560/524/1 563/525/1
+f 223/526/1 561/527/1 562/528/1
+f 562/528/1 193/529/1 559/523/1
+f 385/131/1 559/523/1 149/530/1
+f 20/531/1 562/528/1 385/131/1
+f 563/525/1 146/532/1 382/157/1
+f 289/134/1 382/157/1 53/533/1
+f 149/530/1 563/525/1 289/134/1
+f 564/522/1 19/534/1 286/124/1
+f 560/524/1 286/124/1 146/532/1
+f 193/529/1 564/522/1 560/524/1
+f 565/519/2 192/535/2 555/514/2
+f 381/122/2 555/514/2 145/536/2
+f 23/537/2 565/519/2 381/122/2
+f 566/516/2 142/538/2 378/184/2
+f 285/161/2 378/184/2 52/539/2
+f 145/536/2 566/516/2 285/161/2
+f 567/513/2 22/540/2 282/115/2
+f 556/515/2 282/115/2 142/538/2
+f 192/535/2 567/513/2 556/515/2
+f 568/510/3 191/541/3 551/505/3
+f 377/113/3 551/505/3 141/542/3
+f 32/543/3 568/510/3 377/113/3
+f 569/507/3 138/544/3 374/211/3
+f 281/188/3 374/211/3 51/545/3
+f 141/542/3 569/507/3 281/188/3
+f 570/504/3 30/546/3 278/106/3
+f 552/506/3 278/106/3 138/544/3
+f 191/541/3 570/504/3 552/506/3
+f 571/501/4 190/547/4 547/496/4
+f 373/104/4 547/496/4 137/548/4
+f 18/549/4 571/501/4 373/104/4
+f 572/498/4 134/550/4 370/238/4
+f 277/215/4 370/238/4 50/551/4
+f 137/548/4 572/498/4 277/215/4
+f 573/495/4 27/552/4 274/97/4
+f 548/497/4 274/97/4 134/550/4
+f 190/547/4 573/495/4 548/497/4
+f 574/492/3 189/553/3 543/487/3
+f 369/95/3 543/487/3 133/554/3
+f 27/555/3 574/492/3 369/95/3
+f 575/489/3 130/556/3 366/265/3
+f 273/242/3 366/265/3 49/557/3
+f 133/554/3 575/489/3 273/242/3
+f 576/486/3 19/558/3 270/88/3
+f 544/488/3 270/88/3 130/556/3
+f 189/553/3 576/486/3 544/488/3
+f 577/483/5 188/559/5 539/478/5
+f 365/86/5 539/478/5 129/560/5
+f 31/561/5 577/483/5 365/86/5
+f 578/480/5 126/562/5 362/292/5
+f 269/269/5 362/292/5 48/563/5
+f 129/560/5 578/480/5 269/269/5
+f 579/477/5 30/564/5 266/79/5
+f 540/479/5 266/79/5 126/562/5
+f 188/559/5 579/477/5 540/479/5
+f 580/474/1 187/565/1 535/469/1
+f 361/77/1 535/469/1 125/566/1
+f 39/567/1 580/474/1 361/77/1
+f 581/471/1 122/568/1 358/319/1
+f 265/296/1 358/319/1 47/569/1
+f 125/566/1 581/471/1 265/296/1
+f 582/468/1 35/570/1 262/70/1
+f 536/470/1 262/70/1 122/568/1
+f 187/565/1 582/468/1 536/470/1
+f 583/465/4 186/571/4 531/460/4
+f 357/68/4 531/460/4 121/572/4
+f 33/573/4 583/465/4 357/68/4
+f 584/462/4 118/574/4 354/346/4
+f 261/323/4 354/346/4 46/575/4
+f 121/572/4 584/462/4 261/323/4
+f 585/459/4 31/576/4 258/61/4
+f 532/461/4 258/61/4 118/574/4
+f 186/571/4 585/459/4 532/461/4
+f 586/456/2 185/577/2 527/451/2
+f 353/59/2 527/451/2 117/578/2
+f 38/579/2 586/456/2 353/59/2
+f 587/453/2 114/580/2 350/373/2
+f 257/350/2 350/373/2 45/581/2
+f 117/578/2 587/453/2 257/350/2
+f 588/450/2 36/582/2 254/52/2
+f 528/452/2 254/52/2 114/580/2
+f 185/577/2 588/450/2 528/452/2
+f 589/447/3 184/583/3 523/442/3
+f 349/50/3 523/442/3 113/584/3
+f 40/585/3 589/447/3 349/50/3
+f 590/444/3 110/586/3 346/400/3
+f 253/377/3 346/400/3 44/587/3
+f 113/584/3 590/444/3 253/377/3
+f 591/441/3 37/588/3 250/43/3
+f 524/443/3 250/43/3 110/586/3
+f 184/583/3 591/441/3 524/443/3
+f 592/438/5 183/589/5 519/433/5
+f 345/41/5 519/433/5 109/590/5
+f 42/591/5 592/438/5 345/41/5
+f 593/435/5 106/592/5 342/427/5
+f 249/404/5 342/427/5 43/593/5
+f 109/590/5 593/435/5 249/404/5
+f 594/432/5 36/594/5 246/34/5
+f 520/434/5 246/34/5 106/592/5
+f 183/589/5 594/432/5 520/434/5
+f 595/429/5 182/595/5 515/424/5
+f 344/38/5 515/424/5 108/596/5
+f 43/593/5 595/429/5 344/38/5
+f 596/426/5 78/597/5 314/598/5
+f 248/413/5 314/598/5 41/599/5
+f 108/596/5 596/426/5 248/413/5
+f 597/423/5 16/600/5 218/601/5
+f 516/425/5 218/601/5 78/597/5
+f 182/595/5 597/423/5 516/425/5
+f 598/420/5 181/602/5 511/415/5
+f 301/603/5 511/415/5 65/604/5
+f 28/605/5 598/420/5 301/603/5
+f 599/417/5 104/606/5 340/607/5
+f 205/608/5 340/607/5 10/609/5
+f 65/604/5 599/417/5 205/608/5
+f 600/414/5 41/599/5 244/610/5
+f 512/416/5 244/610/5 104/606/5
+f 181/602/5 600/414/5 512/416/5
+f 601/411/5 180/611/5 507/406/5
+f 327/612/5 507/406/5 91/613/5
+f 9/614/5 601/411/5 327/612/5
+f 602/408/5 107/615/5 343/418/5
+f 231/616/5 343/418/5 28/605/5
+f 91/613/5 602/408/5 231/616/5
+f 603/405/5 43/593/5 247/37/5
+f 508/407/5 247/37/5 107/615/5
+f 180/611/5 603/405/5 508/407/5
+f 604/402/3 179/617/3 503/397/3
+f 348/47/3 503/397/3 112/618/3
+f 44/587/3 604/402/3 348/47/3
+f 605/399/3 105/619/3 245/620/3
+f 252/386/3 245/620/3 42/621/3
+f 112/618/3 605/399/3 252/386/3
+f 606/396/3 15/622/3 341/623/3
+f 504/398/3 341/623/3 105/619/3
+f 179/617/3 606/396/3 504/398/3
+f 607/393/3 178/624/3 499/388/3
+f 305/508/3 499/388/3 69/625/3
+f 32/543/3 607/393/3 305/508/3
+f 608/390/3 79/626/3 219/627/3
+f 209/7/3 219/627/3 9/628/3
+f 69/625/3 608/390/3 209/7/3
+f 609/387/3 42/621/3 315/629/3
+f 500/389/3 315/629/3 79/626/3
+f 178/624/3 609/387/3 500/389/3
+f 610/384/3 177/630/3 495/379/3
+f 331/193/3 495/379/3 95/631/3
+f 8/632/3 610/384/3 331/193/3
+f 611/381/3 111/633/3 347/391/3
+f 235/112/3 347/391/3 32/543/3
+f 95/631/3 611/381/3 235/112/3
+f 612/378/3 44/587/3 251/46/3
+f 496/380/3 251/46/3 111/633/3
+f 177/630/3 612/378/3 496/380/3
+f 613/375/2 176/634/2 491/370/2
+f 352/56/2 491/370/2 116/635/2
+f 45/581/2 613/375/2 352/56/2
+f 614/372/2 74/636/2 310/637/2
+f 256/359/2 310/637/2 37/638/2
+f 116/635/2 614/372/2 256/359/2
+f 615/369/2 15/639/2 214/640/2
+f 492/371/2 214/640/2 74/636/2
+f 176/634/2 615/369/2 492/371/2
+f 616/366/2 175/641/2 487/361/2
+f 238/642/2 487/361/2 98/643/2
+f 35/644/2 616/366/2 238/642/2
+f 617/363/2 100/645/2 336/646/2
+f 334/647/2 336/646/2 13/648/2
+f 98/643/2 617/363/2 334/647/2
+f 618/360/2 37/638/2 240/649/2
+f 488/362/2 240/649/2 100/645/2
+f 175/641/2 618/360/2 488/362/2
+f 619/357/2 174/650/2 483/352/2
+f 212/651/2 483/352/2 72/652/2
+f 14/653/2 619/357/2 212/651/2
+f 620/354/2 115/654/2 351/364/2
+f 308/655/2 351/364/2 35/644/2
+f 72/652/2 620/354/2 308/655/2
+f 621/351/2 45/581/2 255/55/2
+f 484/353/2 255/55/2 115/654/2
+f 174/650/2 621/351/2 484/353/2
+f 622/348/4 173/656/4 479/343/4
+f 356/65/4 479/343/4 120/657/4
+f 46/575/4 622/348/4 356/65/4
+f 623/345/4 97/658/4 237/659/4
+f 260/332/4 237/659/4 34/660/4
+f 120/657/4 623/345/4 260/332/4
+f 624/342/4 11/661/4 333/662/4
+f 480/344/4 333/662/4 97/658/4
+f 173/656/4 624/342/4 480/344/4
+f 625/339/4 172/663/4 475/334/4
+f 298/664/4 475/334/4 62/665/4
+f 25/666/4 625/339/4 298/664/4
+f 626/336/4 71/667/4 211/668/4
+f 202/669/4 211/668/4 5/670/4
+f 62/665/4 626/336/4 202/669/4
+f 627/333/4 34/660/4 307/671/4
+f 476/335/4 307/671/4 71/667/4
+f 172/663/4 627/333/4 476/335/4
+f 628/330/4 171/672/4 471/325/4
+f 324/673/4 471/325/4 88/674/4
+f 6/675/4 628/330/4 324/673/4
+f 629/327/4 119/676/4 355/337/4
+f 228/677/4 355/337/4 25/666/4
+f 88/674/4 629/327/4 228/677/4
+f 630/324/4 46/575/4 259/64/4
+f 472/326/4 259/64/4 119/676/4
+f 171/672/4 630/324/4 472/326/4
+f 631/321/1 170/678/1 467/316/1
+f 360/74/1 467/316/1 124/679/1
+f 47/569/1 631/321/1 360/74/1
+f 632/318/1 103/680/1 243/681/1
+f 264/305/1 243/681/1 40/682/1
+f 124/679/1 632/318/1 264/305/1
+f 633/315/1 13/683/1 339/684/1
+f 468/317/1 339/684/1 103/680/1
+f 170/678/1 633/315/1 468/317/1
+f 634/312/1 169/685/1 463/307/1
+f 226/686/1 463/307/1 86/687/1
+f 23/688/1 634/312/1 226/686/1
+f 635/309/1 77/689/1 217/690/1
+f 322/691/1 217/690/1 8/692/1
+f 86/687/1 635/309/1 322/691/1
+f 636/306/1 40/682/1 313/693/1
+f 464/308/1 313/693/1 77/689/1
+f 169/685/1 636/306/1 464/308/1
+f 637/303/1 168/694/1 459/298/1
+f 200/695/1 459/298/1 60/696/1
+f 7/697/1 637/303/1 200/695/1
+f 638/300/1 123/698/1 359/310/1
+f 296/699/1 359/310/1 23/688/1
+f 60/696/1 638/300/1 296/699/1
+f 639/297/1 47/569/1 263/73/1
+f 460/299/1 263/73/1 123/698/1
+f 168/694/1 639/297/1 460/299/1
+f 640/294/5 167/700/5 455/289/5
+f 364/83/5 455/289/5 128/701/5
+f 48/563/5 640/294/5 364/83/5
+f 641/291/5 91/613/5 231/616/5
+f 268/278/5 231/616/5 28/605/5
+f 128/701/5 641/291/5 268/278/5
+f 642/288/5 9/614/5 327/612/5
+f 456/290/5 327/612/5 91/613/5
+f 167/700/5 642/288/5 456/290/5
+f 643/285/5 166/702/5 451/280/5
+f 302/703/5 451/280/5 66/704/5
+f 29/705/5 643/285/5 302/703/5
+f 644/282/5 65/604/5 205/608/5
+f 206/706/5 205/608/5 10/609/5
+f 66/704/5 644/282/5 206/706/5
+f 645/279/5 28/605/5 301/603/5
+f 452/281/5 301/603/5 65/604/5
+f 166/702/5 645/279/5 452/281/5
+f 646/276/5 165/707/5 447/271/5
+f 328/708/5 447/271/5 92/709/5
+f 11/710/5 646/276/5 328/708/5
+f 647/273/5 127/711/5 363/283/5
+f 232/712/5 363/283/5 29/705/5
+f 92/709/5 647/273/5 232/712/5
+f 648/270/5 48/563/5 267/82/5
+f 448/272/5 267/82/5 127/711/5
+f 165/707/5 648/270/5 448/272/5
+f 649/267/3 164/713/3 443/262/3
+f 368/92/3 443/262/3 132/714/3
+f 49/557/3 649/267/3 368/92/3
+f 650/264/3 85/715/3 225/716/3
+f 272/251/3 225/716/3 22/717/3
+f 132/714/3 650/264/3 272/251/3
+f 651/261/3 4/718/3 321/719/3
+f 444/263/3 321/719/3 85/715/3
+f 164/713/3 651/261/3 444/263/3
+f 652/258/3 163/720/3 439/253/3
+f 227/721/3 439/253/3 87/722/3
+f 24/723/3 652/258/3 227/721/3
+f 653/255/3 59/724/3 199/725/3
+f 323/726/3 199/725/3 8/632/3
+f 87/722/3 653/255/3 323/726/3
+f 654/252/3 22/717/3 295/727/3
+f 440/254/3 295/727/3 59/724/3
+f 163/720/3 654/252/3 440/254/3
+f 655/249/3 162/728/3 435/244/3
+f 201/729/3 435/244/3 61/730/3
+f 6/731/3 655/249/3 201/729/3
+f 656/246/3 131/732/3 367/256/3
+f 297/733/3 367/256/3 24/723/3
+f 61/730/3 656/246/3 297/733/3
+f 657/243/3 49/557/3 271/91/3
+f 436/245/3 271/91/3 131/732/3
+f 162/728/3 657/243/3 436/245/3
+f 658/240/4 161/734/4 431/235/4
+f 372/101/4 431/235/4 136/735/4
+f 50/551/4 658/240/4 372/101/4
+f 659/237/4 88/674/4 228/677/4
+f 276/224/4 228/677/4 25/666/4
+f 136/735/4 659/237/4 276/224/4
+f 660/234/4 6/675/4 324/673/4
+f 432/236/4 324/673/4 88/674/4
+f 161/734/4 660/234/4 432/236/4
+f 661/231/4 160/736/4 427/226/4
+f 299/737/4 427/226/4 63/738/4
+f 26/739/4 661/231/4 299/737/4
+f 662/228/4 62/665/4 202/669/4
+f 203/740/4 202/669/4 5/670/4
+f 63/738/4 662/228/4 203/740/4
+f 663/225/4 25/666/4 298/664/4
+f 428/227/4 298/664/4 62/665/4
+f 160/736/4 663/225/4 428/227/4
+f 664/222/4 159/741/4 423/217/4
+f 325/742/4 423/217/4 89/743/4
+f 1/744/4 664/222/4 325/742/4
+f 665/219/4 135/745/4 371/229/4
+f 229/746/4 371/229/4 26/739/4
+f 89/743/4 665/219/4 229/746/4
+f 666/216/4 50/551/4 275/100/4
+f 424/218/4 275/100/4 135/745/4
+f 159/741/4 666/216/4 424/218/4
+f 667/213/3 158/747/3 419/208/3
+f 376/110/3 419/208/3 140/748/3
+f 51/545/3 667/213/3 376/110/3
+f 668/210/3 96/749/3 236/750/3
+f 280/197/3 236/750/3 33/751/3
+f 140/748/3 668/210/3 280/197/3
+f 669/207/3 12/752/3 332/753/3
+f 420/209/3 332/753/3 96/749/3
+f 158/747/3 669/207/3 420/209/3
+f 670/204/3 157/754/3 415/199/3
+f 297/733/3 415/199/3 61/730/3
+f 24/723/3 670/204/3 297/733/3
+f 671/201/3 70/755/3 210/756/3
+f 201/729/3 210/756/3 6/731/3
+f 61/730/3 671/201/3 201/729/3
+f 672/198/3 33/751/3 306/757/3
+f 416/200/3 306/757/3 70/755/3
+f 157/754/3 672/198/3 416/200/3
+f 673/195/3 156/758/3 411/190/3
+f 323/726/3 411/190/3 87/722/3
+f 8/632/3 673/195/3 323/726/3
+f 674/192/3 139/759/3 375/202/3
+f 227/721/3 375/202/3 24/723/3
+f 87/722/3 674/192/3 227/721/3
+f 675/189/3 51/545/3 279/109/3
+f 412/191/3 279/109/3 139/759/3
+f 156/758/3 675/189/3 412/191/3
+f 676/186/2 155/760/2 407/181/2
+f 380/119/2 407/181/2 144/761/2
+f 52/539/2 676/186/2 380/119/2
+f 677/183/2 83/762/2 223/763/2
+f 284/170/2 223/763/2 20/764/2
+f 144/761/2 677/183/2 284/170/2
+f 678/180/2 4/765/2 319/766/2
+f 408/182/2 319/766/2 83/762/2
+f 155/760/2 678/180/2 408/182/2
+f 679/177/2 154/767/2 403/172/2
+f 294/768/2 403/172/2 58/769/2
+f 21/770/2 679/177/2 294/768/2
+f 680/174/2 57/771/2 197/772/2
+f 198/773/2 197/772/2 3/774/2
+f 58/769/2 680/174/2 198/773/2
+f 681/171/2 20/764/2 293/775/2
+f 404/173/2 293/775/2 57/771/2
+f 154/767/2 681/171/2 404/173/2
+f 682/168/2 153/776/2 399/163/2
+f 320/777/2 399/163/2 84/778/2
+f 7/779/2 682/168/2 320/777/2
+f 683/165/2 143/780/2 379/175/2
+f 224/781/2 379/175/2 21/770/2
+f 84/778/2 683/165/2 224/781/2
+f 684/162/2 52/539/2 283/118/2
+f 400/164/2 283/118/2 143/780/2
+f 153/776/2 684/162/2 400/164/2
+f 685/159/1 152/782/1 395/154/1
+f 384/128/1 395/154/1 148/783/1
+f 53/533/1 685/159/1 384/128/1
+f 686/156/1 55/784/1 291/785/1
+f 288/143/1 291/785/1 18/786/1
+f 148/783/1 686/156/1 288/143/1
+f 687/153/1 2/787/1 195/788/1
+f 396/155/1 195/788/1 55/784/1
+f 152/782/1 687/153/1 396/155/1
+f 688/150/1 151/789/1 391/145/1
+f 290/790/1 391/145/1 54/791/1
+f 17/792/1 688/150/1 290/790/1
+f 689/147/1 81/793/1 317/794/1
+f 194/795/1 317/794/1 1/796/1
+f 54/791/1 689/147/1 194/795/1
+f 690/144/1 18/786/1 221/797/1
+f 392/146/1 221/797/1 81/793/1
+f 151/789/1 690/144/1 392/146/1
+f 691/141/1 150/798/1 387/136/1
+f 316/799/1 387/136/1 80/800/1
+f 3/801/1 691/141/1 316/799/1
+f 692/138/1 147/802/1 383/148/1
+f 220/803/1 383/148/1 17/792/1
+f 80/800/1 692/138/1 220/803/1
+f 693/135/1 53/533/1 287/127/1
+f 388/137/1 287/127/1 147/802/1
+f 150/798/1 693/135/1 388/137/1
+f 694/132/1 149/530/1 386/133/1
+f 389/140/1 386/133/1 150/798/1
+f 57/804/1 694/132/1 389/140/1
+f 695/129/1 148/783/1 390/142/1
+f 393/149/1 390/142/1 151/789/1
+f 147/802/1 695/129/1 393/149/1
+f 696/126/1 82/805/1 394/151/1
+f 397/158/1 394/151/1 152/782/1
+f 146/532/1 696/126/1 397/158/1
+f 697/123/2 145/536/2 398/160/2
+f 401/167/2 398/160/2 153/776/2
+f 60/806/2 697/123/2 401/167/2
+f 698/120/2 144/761/2 402/169/2
+f 405/176/2 402/169/2 154/767/2
+f 143/780/2 698/120/2 405/176/2
+f 699/117/2 85/807/2 406/178/2
+f 409/185/2 406/178/2 155/760/2
+f 142/538/2 699/117/2 409/185/2
+f 700/114/3 141/542/3 410/187/3
+f 413/194/3 410/187/3 156/758/3
+f 95/631/3 700/114/3 413/194/3
+f 701/111/3 140/748/3 414/196/3
+f 417/203/3 414/196/3 157/754/3
+f 139/759/3 701/111/3 417/203/3
+f 702/108/3 67/808/3 418/205/3
+f 421/212/3 418/205/3 158/747/3
+f 138/544/3 702/108/3 421/212/3
+f 703/105/4 137/548/4 422/214/4
+f 425/221/4 422/214/4 159/741/4
+f 81/809/4 703/105/4 425/221/4
+f 704/102/4 136/735/4 426/223/4
+f 429/230/4 426/223/4 160/736/4
+f 135/745/4 704/102/4 429/230/4
+f 705/99/4 90/810/4 430/232/4
+f 433/239/4 430/232/4 161/734/4
+f 134/550/4 705/99/4 433/239/4
+f 706/96/3 133/554/3 434/241/3
+f 437/248/3 434/241/3 162/728/3
+f 90/811/3 706/96/3 437/248/3
+f 707/93/3 132/714/3 438/250/3
+f 441/257/3 438/250/3 163/720/3
+f 131/732/3 707/93/3 441/257/3
+f 708/90/3 56/812/3 442/259/3
+f 445/266/3 442/259/3 164/713/3
+f 130/556/3 708/90/3 445/266/3
+f 709/87/5 129/560/5 446/268/5
+f 449/275/5 446/268/5 165/707/5
+f 68/813/5 709/87/5 449/275/5
+f 710/84/5 128/701/5 450/277/5
+f 453/284/5 450/277/5 166/702/5
+f 127/711/5 710/84/5 453/284/5
+f 711/81/5 93/814/5 454/286/5
+f 457/293/5 454/286/5 167/700/5
+f 126/562/5 711/81/5 457/293/5
+f 712/78/1 125/566/1 458/295/1
+f 461/302/1 458/295/1 168/694/1
+f 102/815/1 712/78/1 461/302/1
+f 713/75/1 124/679/1 462/304/1
+f 465/311/1 462/304/1 169/685/1
+f 123/698/1 713/75/1 465/311/1
+f 714/72/1 98/816/1 466/313/1
+f 469/320/1 466/313/1 170/678/1
+f 122/568/1 714/72/1 469/320/1
+f 715/69/4 121/572/4 470/322/4
+f 473/329/4 470/322/4 171/672/4
+f 70/817/4 715/69/4 473/329/4
+f 716/66/4 120/657/4 474/331/4
+f 477/338/4 474/331/4 172/663/4
+f 119/676/4 716/66/4 477/338/4
+f 717/63/4 68/818/4 478/340/4
+f 481/347/4 478/340/4 173/656/4
+f 118/574/4 717/63/4 481/347/4
+f 718/60/2 117/578/2 482/349/2
+f 485/356/2 482/349/2 174/650/2
+f 101/819/2 718/60/2 485/356/2
+f 719/57/2 116/635/2 486/358/2
+f 489/365/2 486/358/2 175/641/2
+f 115/654/2 719/57/2 489/365/2
+f 720/54/2 99/820/2 490/367/2
+f 493/374/2 490/367/2 176/634/2
+f 114/580/2 720/54/2 493/374/2
+f 721/51/3 113/584/3 494/376/3
+f 497/383/3 494/376/3 177/630/3
+f 77/821/3 721/51/3 497/383/3
+f 722/48/3 112/618/3 498/385/3
+f 501/392/3 498/385/3 178/624/3
+f 111/633/3 722/48/3 501/392/3
+f 723/45/3 74/822/3 502/394/3
+f 505/401/3 502/394/3 179/617/3
+f 110/586/3 723/45/3 505/401/3
+f 724/42/5 109/590/5 506/403/5
+f 509/410/5 506/403/5 180/611/5
+f 79/823/5 724/42/5 509/410/5
+f 725/39/5 108/596/5 510/412/5
+f 513/419/5 510/412/5 181/602/5
+f 107/615/5 725/39/5 513/419/5
+f 726/36/5 73/824/5 514/421/5
+f 517/428/5 514/421/5 182/595/5
+f 106/592/5 726/36/5 517/428/5
+f 727/33/5 99/825/5 518/430/5
+f 521/437/5 518/430/5 183/589/5
+f 105/826/5 727/33/5 521/437/5
+f 728/30/3 100/827/3 522/439/3
+f 525/446/3 522/439/3 184/583/3
+f 103/828/3 728/30/3 525/446/3
+f 729/27/2 73/829/2 526/448/2
+f 529/455/2 526/448/2 185/577/2
+f 75/830/2 729/27/2 529/455/2
+f 730/24/4 94/831/4 530/457/4
+f 533/464/4 530/457/4 186/571/4
+f 96/832/4 730/24/4 533/464/4
+f 731/21/1 72/833/1 534/466/1
+f 537/473/1 534/466/1 187/565/1
+f 76/834/1 731/21/1 537/473/1
+f 732/18/5 67/835/5 538/475/5
+f 541/482/5 538/475/5 188/559/5
+f 94/836/5 732/18/5 541/482/5
+f 733/15/3 82/837/3 542/484/3
+f 545/491/3 542/484/3 189/553/3
+f 64/838/3 733/15/3 545/491/3
+f 734/12/4 64/839/4 546/493/4
+f 549/500/4 546/493/4 190/547/4
+f 55/840/4 734/12/4 549/500/4
+f 735/9/3 93/841/3 550/502/3
+f 553/509/3 550/502/3 191/541/3
+f 69/625/3 735/9/3 553/509/3
+f 736/6/2 59/842/2 554/511/2
+f 557/518/2 554/511/2 192/535/2
+f 86/843/2 736/6/2 557/518/2
+f 737/3/1 56/844/1 558/520/1
+f 561/527/1 558/520/1 193/529/1
+f 83/845/1 737/3/1 561/527/1
+f 319/1/1 4/846/1 196/2/1
+f 322/4/2 8/847/2 199/5/2
+f 209/7/3 9/628/3 329/8/3
+f 195/10/4 2/848/4 204/11/4
+f 204/13/3 2/849/3 318/14/3
+f 330/16/5 12/850/5 207/17/5
+f 216/19/1 14/851/1 212/20/1
+f 332/22/4 12/852/4 330/23/4
+f 215/25/2 16/853/2 213/26/2
+f 339/28/3 13/854/3 336/29/3
+f 341/31/5 15/855/5 335/32/5
+f 246/34/5 36/594/5 309/35/5
+f 247/37/5 43/593/5 344/38/5
+f 315/40/5 42/591/5 345/41/5
+f 250/43/3 37/588/3 310/44/3
+f 251/46/3 44/587/3 348/47/3
+f 313/49/3 40/585/3 349/50/3
+f 254/52/2 36/582/2 239/53/2
+f 255/55/2 45/581/2 352/56/2
+f 241/58/2 38/579/2 353/59/2
+f 258/61/4 31/576/4 304/62/4
+f 259/64/4 46/575/4 356/65/4
+f 306/67/4 33/573/4 357/68/4
+f 262/70/1 35/570/1 238/71/1
+f 263/73/1 47/569/1 360/74/1
+f 242/76/1 39/567/1 361/77/1
+f 266/79/5 30/564/5 233/80/5
+f 267/82/5 48/563/5 364/83/5
+f 304/85/5 31/561/5 365/86/5
+f 270/88/3 19/558/3 292/89/3
+f 271/91/3 49/557/3 368/92/3
+f 230/94/3 27/555/3 369/95/3
+f 274/97/4 27/552/4 230/98/4
+f 275/100/4 50/551/4 372/101/4
+f 221/103/4 18/549/4 373/104/4
+f 278/106/3 30/546/3 303/107/3
+f 279/109/3 51/545/3 376/110/3
+f 235/112/3 32/543/3 377/113/3
+f 282/115/2 22/540/2 225/116/2
+f 283/118/2 52/539/2 380/119/2
+f 296/121/2 23/537/2 381/122/2
+f 286/124/1 19/534/1 222/125/1
+f 287/127/1 53/533/1 384/128/1
+f 293/130/1 20/531/1 385/131/1
+f 386/133/1 149/530/1 289/134/1
+f 387/136/1 150/798/1 388/137/1
+f 197/139/1 57/804/1 389/140/1
+f 390/142/1 148/783/1 288/143/1
+f 391/145/1 151/789/1 392/146/1
+f 383/148/1 147/802/1 393/149/1
+f 394/151/1 82/805/1 318/152/1
+f 395/154/1 152/782/1 396/155/1
+f 382/157/1 146/532/1 397/158/1
+f 398/160/2 145/536/2 285/161/2
+f 399/163/2 153/776/2 400/164/2
+f 200/166/2 60/806/2 401/167/2
+f 402/169/2 144/761/2 284/170/2
+f 403/172/2 154/767/2 404/173/2
+f 379/175/2 143/780/2 405/176/2
+f 406/178/2 85/807/2 321/179/2
+f 407/181/2 155/760/2 408/182/2
+f 378/184/2 142/538/2 409/185/2
+f 410/187/3 141/542/3 281/188/3
+f 411/190/3 156/758/3 412/191/3
+f 331/193/3 95/631/3 413/194/3
+f 414/196/3 140/748/3 280/197/3
+f 415/199/3 157/754/3 416/200/3
+f 375/202/3 139/759/3 417/203/3
+f 418/205/3 67/808/3 207/206/3
+f 419/208/3 158/747/3 420/209/3
+f 374/211/3 138/544/3 421/212/3
+f 422/214/4 137/548/4 277/215/4
+f 423/217/4 159/741/4 424/218/4
+f 317/220/4 81/809/4 425/221/4
+f 426/223/4 136/735/4 276/224/4
+f 427/226/4 160/736/4 428/227/4
+f 371/229/4 135/745/4 429/230/4
+f 430/232/4 90/810/4 326/233/4
+f 431/235/4 161/734/4 432/236/4
+f 370/238/4 134/550/4 433/239/4
+f 434/241/3 133/554/3 273/242/3
+f 435/244/3 162/728/3 436/245/3
+f 326/247/3 90/811/3 437/248/3
+f 438/250/3 132/714/3 272/251/3
+f 439/253/3 163/720/3 440/254/3
+f 367/256/3 131/732/3 441/257/3
+f 442/259/3 56/812/3 196/260/3
+f 443/262/3 164/713/3 444/263/3
+f 366/265/3 130/556/3 445/266/3
+f 446/268/5 129/560/5 269/269/5
+f 447/271/5 165/707/5 448/272/5
+f 208/274/5 68/813/5 449/275/5
+f 450/277/5 128/701/5 268/278/5
+f 451/280/5 166/702/5 452/281/5
+f 363/283/5 127/711/5 453/284/5
+f 454/286/5 93/814/5 329/287/5
+f 455/289/5 167/700/5 456/290/5
+f 362/292/5 126/562/5 457/293/5
+f 458/295/1 125/566/1 265/296/1
+f 459/298/1 168/694/1 460/299/1
+f 338/301/1 102/815/1 461/302/1
+f 462/304/1 124/679/1 264/305/1
+f 463/307/1 169/685/1 464/308/1
+f 359/310/1 123/698/1 465/311/1
+f 466/313/1 98/816/1 334/314/1
+f 467/316/1 170/678/1 468/317/1
+f 358/319/1 122/568/1 469/320/1
+f 470/322/4 121/572/4 261/323/4
+f 471/325/4 171/672/4 472/326/4
+f 210/328/4 70/817/4 473/329/4
+f 474/331/4 120/657/4 260/332/4
+f 475/334/4 172/663/4 476/335/4
+f 355/337/4 119/676/4 477/338/4
+f 478/340/4 68/818/4 208/341/4
+f 479/343/4 173/656/4 480/344/4
+f 354/346/4 118/574/4 481/347/4
+f 482/349/2 117/578/2 257/350/2
+f 483/352/2 174/650/2 484/353/2
+f 337/355/2 101/819/2 485/356/2
+f 486/358/2 116/635/2 256/359/2
+f 487/361/2 175/641/2 488/362/2
+f 351/364/2 115/654/2 489/365/2
+f 490/367/2 99/820/2 335/368/2
+f 491/370/2 176/634/2 492/371/2
+f 350/373/2 114/580/2 493/374/2
+f 494/376/3 113/584/3 253/377/3
+f 495/379/3 177/630/3 496/380/3
+f 217/382/3 77/821/3 497/383/3
+f 498/385/3 112/618/3 252/386/3
+f 499/388/3 178/624/3 500/389/3
+f 347/391/3 111/633/3 501/392/3
+f 502/394/3 74/822/3 214/395/3
+f 503/397/3 179/617/3 504/398/3
+f 346/400/3 110/586/3 505/401/3
+f 506/403/5 109/590/5 249/404/5
+f 507/406/5 180/611/5 508/407/5
+f 219/409/5 79/823/5 509/410/5
+f 510/412/5 108/596/5 248/413/5
+f 511/415/5 181/602/5 512/416/5
+f 343/418/5 107/615/5 513/419/5
+f 514/421/5 73/824/5 213/422/5
+f 515/424/5 182/595/5 516/425/5
+f 342/427/5 106/592/5 517/428/5
+f 518/430/5 99/825/5 239/431/5
+f 519/433/5 183/589/5 520/434/5
+f 245/436/5 105/826/5 521/437/5
+f 522/439/3 100/827/3 240/440/3
+f 523/442/3 184/583/3 524/443/3
+f 243/445/3 103/828/3 525/446/3
+f 526/448/2 73/829/2 309/449/2
+f 527/451/2 185/577/2 528/452/2
+f 311/454/2 75/830/2 529/455/2
+f 530/457/4 94/831/4 234/458/4
+f 531/460/4 186/571/4 532/461/4
+f 236/463/4 96/832/4 533/464/4
+f 534/466/1 72/833/1 308/467/1
+f 535/469/1 187/565/1 536/470/1
+f 312/472/1 76/834/1 537/473/1
+f 538/475/5 67/835/5 303/476/5
+f 539/478/5 188/559/5 540/479/5
+f 234/481/5 94/836/5 541/482/5
+f 542/484/3 82/837/3 222/485/3
+f 543/487/3 189/553/3 544/488/3
+f 300/490/3 64/838/3 545/491/3
+f 546/493/4 64/839/4 300/494/4
+f 547/496/4 190/547/4 548/497/4
+f 291/499/4 55/840/4 549/500/4
+f 550/502/3 93/841/3 233/503/3
+f 551/505/3 191/541/3 552/506/3
+f 305/508/3 69/625/3 553/509/3
+f 554/511/2 59/842/2 295/512/2
+f 555/514/2 192/535/2 556/515/2
+f 226/517/2 86/843/2 557/518/2
+f 558/520/1 56/844/1 292/521/1
+f 559/523/1 193/529/1 560/524/1
+f 223/526/1 83/845/1 561/527/1
+f 562/528/1 561/527/1 193/529/1
+f 385/131/1 562/528/1 559/523/1
+f 20/531/1 223/526/1 562/528/1
+f 563/525/1 560/524/1 146/532/1
+f 289/134/1 563/525/1 382/157/1
+f 149/530/1 559/523/1 563/525/1
+f 564/522/1 292/521/1 19/534/1
+f 560/524/1 564/522/1 286/124/1
+f 193/529/1 558/520/1 564/522/1
+f 565/519/2 557/518/2 192/535/2
+f 381/122/2 565/519/2 555/514/2
+f 23/537/2 226/517/2 565/519/2
+f 566/516/2 556/515/2 142/538/2
+f 285/161/2 566/516/2 378/184/2
+f 145/536/2 555/514/2 566/516/2
+f 567/513/2 295/512/2 22/540/2
+f 556/515/2 567/513/2 282/115/2
+f 192/535/2 554/511/2 567/513/2
+f 568/510/3 553/509/3 191/541/3
+f 377/113/3 568/510/3 551/505/3
+f 32/543/3 305/508/3 568/510/3
+f 569/507/3 552/506/3 138/544/3
+f 281/188/3 569/507/3 374/211/3
+f 141/542/3 551/505/3 569/507/3
+f 570/504/3 233/503/3 30/546/3
+f 552/506/3 570/504/3 278/106/3
+f 191/541/3 550/502/3 570/504/3
+f 571/501/4 549/500/4 190/547/4
+f 373/104/4 571/501/4 547/496/4
+f 18/549/4 291/499/4 571/501/4
+f 572/498/4 548/497/4 134/550/4
+f 277/215/4 572/498/4 370/238/4
+f 137/548/4 547/496/4 572/498/4
+f 573/495/4 300/494/4 27/552/4
+f 548/497/4 573/495/4 274/97/4
+f 190/547/4 546/493/4 573/495/4
+f 574/492/3 545/491/3 189/553/3
+f 369/95/3 574/492/3 543/487/3
+f 27/555/3 300/490/3 574/492/3
+f 575/489/3 544/488/3 130/556/3
+f 273/242/3 575/489/3 366/265/3
+f 133/554/3 543/487/3 575/489/3
+f 576/486/3 222/485/3 19/558/3
+f 544/488/3 576/486/3 270/88/3
+f 189/553/3 542/484/3 576/486/3
+f 577/483/5 541/482/5 188/559/5
+f 365/86/5 577/483/5 539/478/5
+f 31/561/5 234/481/5 577/483/5
+f 578/480/5 540/479/5 126/562/5
+f 269/269/5 578/480/5 362/292/5
+f 129/560/5 539/478/5 578/480/5
+f 579/477/5 303/476/5 30/564/5
+f 540/479/5 579/477/5 266/79/5
+f 188/559/5 538/475/5 579/477/5
+f 580/474/1 537/473/1 187/565/1
+f 361/77/1 580/474/1 535/469/1
+f 39/567/1 312/472/1 580/474/1
+f 581/471/1 536/470/1 122/568/1
+f 265/296/1 581/471/1 358/319/1
+f 125/566/1 535/469/1 581/471/1
+f 582/468/1 308/467/1 35/570/1
+f 536/470/1 582/468/1 262/70/1
+f 187/565/1 534/466/1 582/468/1
+f 583/465/4 533/464/4 186/571/4
+f 357/68/4 583/465/4 531/460/4
+f 33/573/4 236/463/4 583/465/4
+f 584/462/4 532/461/4 118/574/4
+f 261/323/4 584/462/4 354/346/4
+f 121/572/4 531/460/4 584/462/4
+f 585/459/4 234/458/4 31/576/4
+f 532/461/4 585/459/4 258/61/4
+f 186/571/4 530/457/4 585/459/4
+f 586/456/2 529/455/2 185/577/2
+f 353/59/2 586/456/2 527/451/2
+f 38/579/2 311/454/2 586/456/2
+f 587/453/2 528/452/2 114/580/2
+f 257/350/2 587/453/2 350/373/2
+f 117/578/2 527/451/2 587/453/2
+f 588/450/2 309/449/2 36/582/2
+f 528/452/2 588/450/2 254/52/2
+f 185/577/2 526/448/2 588/450/2
+f 589/447/3 525/446/3 184/583/3
+f 349/50/3 589/447/3 523/442/3
+f 40/585/3 243/445/3 589/447/3
+f 590/444/3 524/443/3 110/586/3
+f 253/377/3 590/444/3 346/400/3
+f 113/584/3 523/442/3 590/444/3
+f 591/441/3 240/440/3 37/588/3
+f 524/443/3 591/441/3 250/43/3
+f 184/583/3 522/439/3 591/441/3
+f 592/438/5 521/437/5 183/589/5
+f 345/41/5 592/438/5 519/433/5
+f 42/591/5 245/436/5 592/438/5
+f 593/435/5 520/434/5 106/592/5
+f 249/404/5 593/435/5 342/427/5
+f 109/590/5 519/433/5 593/435/5
+f 594/432/5 239/431/5 36/594/5
+f 520/434/5 594/432/5 246/34/5
+f 183/589/5 518/430/5 594/432/5
+f 595/429/5 517/428/5 182/595/5
+f 344/38/5 595/429/5 515/424/5
+f 43/593/5 342/427/5 595/429/5
+f 596/426/5 516/425/5 78/597/5
+f 248/413/5 596/426/5 314/598/5
+f 108/596/5 515/424/5 596/426/5
+f 597/423/5 213/422/5 16/600/5
+f 516/425/5 597/423/5 218/601/5
+f 182/595/5 514/421/5 597/423/5
+f 598/420/5 513/419/5 181/602/5
+f 301/603/5 598/420/5 511/415/5
+f 28/605/5 343/418/5 598/420/5
+f 599/417/5 512/416/5 104/606/5
+f 205/608/5 599/417/5 340/607/5
+f 65/604/5 511/415/5 599/417/5
+f 600/414/5 248/413/5 41/599/5
+f 512/416/5 600/414/5 244/610/5
+f 181/602/5 510/412/5 600/414/5
+f 601/411/5 509/410/5 180/611/5
+f 327/612/5 601/411/5 507/406/5
+f 9/614/5 219/409/5 601/411/5
+f 602/408/5 508/407/5 107/615/5
+f 231/616/5 602/408/5 343/418/5
+f 91/613/5 507/406/5 602/408/5
+f 603/405/5 249/404/5 43/593/5
+f 508/407/5 603/405/5 247/37/5
+f 180/611/5 506/403/5 603/405/5
+f 604/402/3 505/401/3 179/617/3
+f 348/47/3 604/402/3 503/397/3
+f 44/587/3 346/400/3 604/402/3
+f 605/399/3 504/398/3 105/619/3
+f 252/386/3 605/399/3 245/620/3
+f 112/618/3 503/397/3 605/399/3
+f 606/396/3 214/395/3 15/622/3
+f 504/398/3 606/396/3 341/623/3
+f 179/617/3 502/394/3 606/396/3
+f 607/393/3 501/392/3 178/624/3
+f 305/508/3 607/393/3 499/388/3
+f 32/543/3 347/391/3 607/393/3
+f 608/390/3 500/389/3 79/626/3
+f 209/7/3 608/390/3 219/627/3
+f 69/625/3 499/388/3 608/390/3
+f 609/387/3 252/386/3 42/621/3
+f 500/389/3 609/387/3 315/629/3
+f 178/624/3 498/385/3 609/387/3
+f 610/384/3 497/383/3 177/630/3
+f 331/193/3 610/384/3 495/379/3
+f 8/632/3 217/382/3 610/384/3
+f 611/381/3 496/380/3 111/633/3
+f 235/112/3 611/381/3 347/391/3
+f 95/631/3 495/379/3 611/381/3
+f 612/378/3 253/377/3 44/587/3
+f 496/380/3 612/378/3 251/46/3
+f 177/630/3 494/376/3 612/378/3
+f 613/375/2 493/374/2 176/634/2
+f 352/56/2 613/375/2 491/370/2
+f 45/581/2 350/373/2 613/375/2
+f 614/372/2 492/371/2 74/636/2
+f 256/359/2 614/372/2 310/637/2
+f 116/635/2 491/370/2 614/372/2
+f 615/369/2 335/368/2 15/639/2
+f 492/371/2 615/369/2 214/640/2
+f 176/634/2 490/367/2 615/369/2
+f 616/366/2 489/365/2 175/641/2
+f 238/642/2 616/366/2 487/361/2
+f 35/644/2 351/364/2 616/366/2
+f 617/363/2 488/362/2 100/645/2
+f 334/647/2 617/363/2 336/646/2
+f 98/643/2 487/361/2 617/363/2
+f 618/360/2 256/359/2 37/638/2
+f 488/362/2 618/360/2 240/649/2
+f 175/641/2 486/358/2 618/360/2
+f 619/357/2 485/356/2 174/650/2
+f 212/651/2 619/357/2 483/352/2
+f 14/653/2 337/355/2 619/357/2
+f 620/354/2 484/353/2 115/654/2
+f 308/655/2 620/354/2 351/364/2
+f 72/652/2 483/352/2 620/354/2
+f 621/351/2 257/350/2 45/581/2
+f 484/353/2 621/351/2 255/55/2
+f 174/650/2 482/349/2 621/351/2
+f 622/348/4 481/347/4 173/656/4
+f 356/65/4 622/348/4 479/343/4
+f 46/575/4 354/346/4 622/348/4
+f 623/345/4 480/344/4 97/658/4
+f 260/332/4 623/345/4 237/659/4
+f 120/657/4 479/343/4 623/345/4
+f 624/342/4 208/341/4 11/661/4
+f 480/344/4 624/342/4 333/662/4
+f 173/656/4 478/340/4 624/342/4
+f 625/339/4 477/338/4 172/663/4
+f 298/664/4 625/339/4 475/334/4
+f 25/666/4 355/337/4 625/339/4
+f 626/336/4 476/335/4 71/667/4
+f 202/669/4 626/336/4 211/668/4
+f 62/665/4 475/334/4 626/336/4
+f 627/333/4 260/332/4 34/660/4
+f 476/335/4 627/333/4 307/671/4
+f 172/663/4 474/331/4 627/333/4
+f 628/330/4 473/329/4 171/672/4
+f 324/673/4 628/330/4 471/325/4
+f 6/675/4 210/328/4 628/330/4
+f 629/327/4 472/326/4 119/676/4
+f 228/677/4 629/327/4 355/337/4
+f 88/674/4 471/325/4 629/327/4
+f 630/324/4 261/323/4 46/575/4
+f 472/326/4 630/324/4 259/64/4
+f 171/672/4 470/322/4 630/324/4
+f 631/321/1 469/320/1 170/678/1
+f 360/74/1 631/321/1 467/316/1
+f 47/569/1 358/319/1 631/321/1
+f 632/318/1 468/317/1 103/680/1
+f 264/305/1 632/318/1 243/681/1
+f 124/679/1 467/316/1 632/318/1
+f 633/315/1 334/314/1 13/683/1
+f 468/317/1 633/315/1 339/684/1
+f 170/678/1 466/313/1 633/315/1
+f 634/312/1 465/311/1 169/685/1
+f 226/686/1 634/312/1 463/307/1
+f 23/688/1 359/310/1 634/312/1
+f 635/309/1 464/308/1 77/689/1
+f 322/691/1 635/309/1 217/690/1
+f 86/687/1 463/307/1 635/309/1
+f 636/306/1 264/305/1 40/682/1
+f 464/308/1 636/306/1 313/693/1
+f 169/685/1 462/304/1 636/306/1
+f 637/303/1 461/302/1 168/694/1
+f 200/695/1 637/303/1 459/298/1
+f 7/697/1 338/301/1 637/303/1
+f 638/300/1 460/299/1 123/698/1
+f 296/699/1 638/300/1 359/310/1
+f 60/696/1 459/298/1 638/300/1
+f 639/297/1 265/296/1 47/569/1
+f 460/299/1 639/297/1 263/73/1
+f 168/694/1 458/295/1 639/297/1
+f 640/294/5 457/293/5 167/700/5
+f 364/83/5 640/294/5 455/289/5
+f 48/563/5 362/292/5 640/294/5
+f 641/291/5 456/290/5 91/613/5
+f 268/278/5 641/291/5 231/616/5
+f 128/701/5 455/289/5 641/291/5
+f 642/288/5 329/287/5 9/614/5
+f 456/290/5 642/288/5 327/612/5
+f 167/700/5 454/286/5 642/288/5
+f 643/285/5 453/284/5 166/702/5
+f 302/703/5 643/285/5 451/280/5
+f 29/705/5 363/283/5 643/285/5
+f 644/282/5 452/281/5 65/604/5
+f 206/706/5 644/282/5 205/608/5
+f 66/704/5 451/280/5 644/282/5
+f 645/279/5 268/278/5 28/605/5
+f 452/281/5 645/279/5 301/603/5
+f 166/702/5 450/277/5 645/279/5
+f 646/276/5 449/275/5 165/707/5
+f 328/708/5 646/276/5 447/271/5
+f 11/710/5 208/274/5 646/276/5
+f 647/273/5 448/272/5 127/711/5
+f 232/712/5 647/273/5 363/283/5
+f 92/709/5 447/271/5 647/273/5
+f 648/270/5 269/269/5 48/563/5
+f 448/272/5 648/270/5 267/82/5
+f 165/707/5 446/268/5 648/270/5
+f 649/267/3 445/266/3 164/713/3
+f 368/92/3 649/267/3 443/262/3
+f 49/557/3 366/265/3 649/267/3
+f 650/264/3 444/263/3 85/715/3
+f 272/251/3 650/264/3 225/716/3
+f 132/714/3 443/262/3 650/264/3
+f 651/261/3 196/260/3 4/718/3
+f 444/263/3 651/261/3 321/719/3
+f 164/713/3 442/259/3 651/261/3
+f 652/258/3 441/257/3 163/720/3
+f 227/721/3 652/258/3 439/253/3
+f 24/723/3 367/256/3 652/258/3
+f 653/255/3 440/254/3 59/724/3
+f 323/726/3 653/255/3 199/725/3
+f 87/722/3 439/253/3 653/255/3
+f 654/252/3 272/251/3 22/717/3
+f 440/254/3 654/252/3 295/727/3
+f 163/720/3 438/250/3 654/252/3
+f 655/249/3 437/248/3 162/728/3
+f 201/729/3 655/249/3 435/244/3
+f 6/731/3 326/247/3 655/249/3
+f 656/246/3 436/245/3 131/732/3
+f 297/733/3 656/246/3 367/256/3
+f 61/730/3 435/244/3 656/246/3
+f 657/243/3 273/242/3 49/557/3
+f 436/245/3 657/243/3 271/91/3
+f 162/728/3 434/241/3 657/243/3
+f 658/240/4 433/239/4 161/734/4
+f 372/101/4 658/240/4 431/235/4
+f 50/551/4 370/238/4 658/240/4
+f 659/237/4 432/236/4 88/674/4
+f 276/224/4 659/237/4 228/677/4
+f 136/735/4 431/235/4 659/237/4
+f 660/234/4 326/233/4 6/675/4
+f 432/236/4 660/234/4 324/673/4
+f 161/734/4 430/232/4 660/234/4
+f 661/231/4 429/230/4 160/736/4
+f 299/737/4 661/231/4 427/226/4
+f 26/739/4 371/229/4 661/231/4
+f 662/228/4 428/227/4 62/665/4
+f 203/740/4 662/228/4 202/669/4
+f 63/738/4 427/226/4 662/228/4
+f 663/225/4 276/224/4 25/666/4
+f 428/227/4 663/225/4 298/664/4
+f 160/736/4 426/223/4 663/225/4
+f 664/222/4 425/221/4 159/741/4
+f 325/742/4 664/222/4 423/217/4
+f 1/744/4 317/220/4 664/222/4
+f 665/219/4 424/218/4 135/745/4
+f 229/746/4 665/219/4 371/229/4
+f 89/743/4 423/217/4 665/219/4
+f 666/216/4 277/215/4 50/551/4
+f 424/218/4 666/216/4 275/100/4
+f 159/741/4 422/214/4 666/216/4
+f 667/213/3 421/212/3 158/747/3
+f 376/110/3 667/213/3 419/208/3
+f 51/545/3 374/211/3 667/213/3
+f 668/210/3 420/209/3 96/749/3
+f 280/197/3 668/210/3 236/750/3
+f 140/748/3 419/208/3 668/210/3
+f 669/207/3 207/206/3 12/752/3
+f 420/209/3 669/207/3 332/753/3
+f 158/747/3 418/205/3 669/207/3
+f 670/204/3 417/203/3 157/754/3
+f 297/733/3 670/204/3 415/199/3
+f 24/723/3 375/202/3 670/204/3
+f 671/201/3 416/200/3 70/755/3
+f 201/729/3 671/201/3 210/756/3
+f 61/730/3 415/199/3 671/201/3
+f 672/198/3 280/197/3 33/751/3
+f 416/200/3 672/198/3 306/757/3
+f 157/754/3 414/196/3 672/198/3
+f 673/195/3 413/194/3 156/758/3
+f 323/726/3 673/195/3 411/190/3
+f 8/632/3 331/193/3 673/195/3
+f 674/192/3 412/191/3 139/759/3
+f 227/721/3 674/192/3 375/202/3
+f 87/722/3 411/190/3 674/192/3
+f 675/189/3 281/188/3 51/545/3
+f 412/191/3 675/189/3 279/109/3
+f 156/758/3 410/187/3 675/189/3
+f 676/186/2 409/185/2 155/760/2
+f 380/119/2 676/186/2 407/181/2
+f 52/539/2 378/184/2 676/186/2
+f 677/183/2 408/182/2 83/762/2
+f 284/170/2 677/183/2 223/763/2
+f 144/761/2 407/181/2 677/183/2
+f 678/180/2 321/179/2 4/765/2
+f 408/182/2 678/180/2 319/766/2
+f 155/760/2 406/178/2 678/180/2
+f 679/177/2 405/176/2 154/767/2
+f 294/768/2 679/177/2 403/172/2
+f 21/770/2 379/175/2 679/177/2
+f 680/174/2 404/173/2 57/771/2
+f 198/773/2 680/174/2 197/772/2
+f 58/769/2 403/172/2 680/174/2
+f 681/171/2 284/170/2 20/764/2
+f 404/173/2 681/171/2 293/775/2
+f 154/767/2 402/169/2 681/171/2
+f 682/168/2 401/167/2 153/776/2
+f 320/777/2 682/168/2 399/163/2
+f 7/779/2 200/166/2 682/168/2
+f 683/165/2 400/164/2 143/780/2
+f 224/781/2 683/165/2 379/175/2
+f 84/778/2 399/163/2 683/165/2
+f 684/162/2 285/161/2 52/539/2
+f 400/164/2 684/162/2 283/118/2
+f 153/776/2 398/160/2 684/162/2
+f 685/159/1 397/158/1 152/782/1
+f 384/128/1 685/159/1 395/154/1
+f 53/533/1 382/157/1 685/159/1
+f 686/156/1 396/155/1 55/784/1
+f 288/143/1 686/156/1 291/785/1
+f 148/783/1 395/154/1 686/156/1
+f 687/153/1 318/152/1 2/787/1
+f 396/155/1 687/153/1 195/788/1
+f 152/782/1 394/151/1 687/153/1
+f 688/150/1 393/149/1 151/789/1
+f 290/790/1 688/150/1 391/145/1
+f 17/792/1 383/148/1 688/150/1
+f 689/147/1 392/146/1 81/793/1
+f 194/795/1 689/147/1 317/794/1
+f 54/791/1 391/145/1 689/147/1
+f 690/144/1 288/143/1 18/786/1
+f 392/146/1 690/144/1 221/797/1
+f 151/789/1 390/142/1 690/144/1
+f 691/141/1 389/140/1 150/798/1
+f 316/799/1 691/141/1 387/136/1
+f 3/801/1 197/139/1 691/141/1
+f 692/138/1 388/137/1 147/802/1
+f 220/803/1 692/138/1 383/148/1
+f 80/800/1 387/136/1 692/138/1
+f 693/135/1 289/134/1 53/533/1
+f 388/137/1 693/135/1 287/127/1
+f 150/798/1 386/133/1 693/135/1
+f 694/132/1 385/131/1 149/530/1
+f 389/140/1 694/132/1 386/133/1
+f 57/804/1 293/130/1 694/132/1
+f 695/129/1 384/128/1 148/783/1
+f 393/149/1 695/129/1 390/142/1
+f 147/802/1 287/127/1 695/129/1
+f 696/126/1 222/125/1 82/805/1
+f 397/158/1 696/126/1 394/151/1
+f 146/532/1 286/124/1 696/126/1
+f 697/123/2 381/122/2 145/536/2
+f 401/167/2 697/123/2 398/160/2
+f 60/806/2 296/121/2 697/123/2
+f 698/120/2 380/119/2 144/761/2
+f 405/176/2 698/120/2 402/169/2
+f 143/780/2 283/118/2 698/120/2
+f 699/117/2 225/116/2 85/807/2
+f 409/185/2 699/117/2 406/178/2
+f 142/538/2 282/115/2 699/117/2
+f 700/114/3 377/113/3 141/542/3
+f 413/194/3 700/114/3 410/187/3
+f 95/631/3 235/112/3 700/114/3
+f 701/111/3 376/110/3 140/748/3
+f 417/203/3 701/111/3 414/196/3
+f 139/759/3 279/109/3 701/111/3
+f 702/108/3 303/107/3 67/808/3
+f 421/212/3 702/108/3 418/205/3
+f 138/544/3 278/106/3 702/108/3
+f 703/105/4 373/104/4 137/548/4
+f 425/221/4 703/105/4 422/214/4
+f 81/809/4 221/103/4 703/105/4
+f 704/102/4 372/101/4 136/735/4
+f 429/230/4 704/102/4 426/223/4
+f 135/745/4 275/100/4 704/102/4
+f 705/99/4 230/98/4 90/810/4
+f 433/239/4 705/99/4 430/232/4
+f 134/550/4 274/97/4 705/99/4
+f 706/96/3 369/95/3 133/554/3
+f 437/248/3 706/96/3 434/241/3
+f 90/811/3 230/94/3 706/96/3
+f 707/93/3 368/92/3 132/714/3
+f 441/257/3 707/93/3 438/250/3
+f 131/732/3 271/91/3 707/93/3
+f 708/90/3 292/89/3 56/812/3
+f 445/266/3 708/90/3 442/259/3
+f 130/556/3 270/88/3 708/90/3
+f 709/87/5 365/86/5 129/560/5
+f 449/275/5 709/87/5 446/268/5
+f 68/813/5 304/85/5 709/87/5
+f 710/84/5 364/83/5 128/701/5
+f 453/284/5 710/84/5 450/277/5
+f 127/711/5 267/82/5 710/84/5
+f 711/81/5 233/80/5 93/814/5
+f 457/293/5 711/81/5 454/286/5
+f 126/562/5 266/79/5 711/81/5
+f 712/78/1 361/77/1 125/566/1
+f 461/302/1 712/78/1 458/295/1
+f 102/815/1 242/76/1 712/78/1
+f 713/75/1 360/74/1 124/679/1
+f 465/311/1 713/75/1 462/304/1
+f 123/698/1 263/73/1 713/75/1
+f 714/72/1 238/71/1 98/816/1
+f 469/320/1 714/72/1 466/313/1
+f 122/568/1 262/70/1 714/72/1
+f 715/69/4 357/68/4 121/572/4
+f 473/329/4 715/69/4 470/322/4
+f 70/817/4 306/67/4 715/69/4
+f 716/66/4 356/65/4 120/657/4
+f 477/338/4 716/66/4 474/331/4
+f 119/676/4 259/64/4 716/66/4
+f 717/63/4 304/62/4 68/818/4
+f 481/347/4 717/63/4 478/340/4
+f 118/574/4 258/61/4 717/63/4
+f 718/60/2 353/59/2 117/578/2
+f 485/356/2 718/60/2 482/349/2
+f 101/819/2 241/58/2 718/60/2
+f 719/57/2 352/56/2 116/635/2
+f 489/365/2 719/57/2 486/358/2
+f 115/654/2 255/55/2 719/57/2
+f 720/54/2 239/53/2 99/820/2
+f 493/374/2 720/54/2 490/367/2
+f 114/580/2 254/52/2 720/54/2
+f 721/51/3 349/50/3 113/584/3
+f 497/383/3 721/51/3 494/376/3
+f 77/821/3 313/49/3 721/51/3
+f 722/48/3 348/47/3 112/618/3
+f 501/392/3 722/48/3 498/385/3
+f 111/633/3 251/46/3 722/48/3
+f 723/45/3 310/44/3 74/822/3
+f 505/401/3 723/45/3 502/394/3
+f 110/586/3 250/43/3 723/45/3
+f 724/42/5 345/41/5 109/590/5
+f 509/410/5 724/42/5 506/403/5
+f 79/823/5 315/40/5 724/42/5
+f 725/39/5 344/38/5 108/596/5
+f 513/419/5 725/39/5 510/412/5
+f 107/615/5 247/37/5 725/39/5
+f 726/36/5 309/35/5 73/824/5
+f 517/428/5 726/36/5 514/421/5
+f 106/592/5 246/34/5 726/36/5
+f 727/33/5 335/32/5 99/825/5
+f 521/437/5 727/33/5 518/430/5
+f 105/826/5 341/31/5 727/33/5
+f 728/30/3 336/29/3 100/827/3
+f 525/446/3 728/30/3 522/439/3
+f 103/828/3 339/28/3 728/30/3
+f 729/27/2 213/26/2 73/829/2
+f 529/455/2 729/27/2 526/448/2
+f 75/830/2 215/25/2 729/27/2
+f 730/24/4 330/23/4 94/831/4
+f 533/464/4 730/24/4 530/457/4
+f 96/832/4 332/22/4 730/24/4
+f 731/21/1 212/20/1 72/833/1
+f 537/473/1 731/21/1 534/466/1
+f 76/834/1 216/19/1 731/21/1
+f 732/18/5 207/17/5 67/835/5
+f 541/482/5 732/18/5 538/475/5
+f 94/836/5 330/16/5 732/18/5
+f 733/15/3 318/14/3 82/837/3
+f 545/491/3 733/15/3 542/484/3
+f 64/838/3 204/13/3 733/15/3
+f 734/12/4 204/11/4 64/839/4
+f 549/500/4 734/12/4 546/493/4
+f 55/840/4 195/10/4 734/12/4
+f 735/9/3 329/8/3 93/841/3
+f 553/509/3 735/9/3 550/502/3
+f 69/625/3 209/7/3 735/9/3
+f 736/6/2 199/5/2 59/842/2
+f 557/518/2 736/6/2 554/511/2
+f 86/843/2 322/4/2 736/6/2
+f 737/3/1 196/2/1 56/844/1
+f 561/527/1 737/3/1 558/520/1
+f 83/845/1 319/1/1 737/3/1
diff --git a/data/levels/zavod/zavod_walls.wmb b/data/levels/zavod/zavod_walls.wmb
new file mode 100644
index 0000000..3568781
Binary files /dev/null and b/data/levels/zavod/zavod_walls.wmb differ
diff --git a/data/models/metal_door.iqm b/data/models/metal_door.iqm
new file mode 100644
index 0000000..ba137ca
Binary files /dev/null and b/data/models/metal_door.iqm differ
diff --git a/data/models/metal_door_metal_reshetkametal_rust_01.mtl b/data/models/metal_door_metal_reshetkametal_rust_01.mtl
new file mode 100644
index 0000000..f67218b
--- /dev/null
+++ b/data/models/metal_door_metal_reshetkametal_rust_01.mtl
@@ -0,0 +1,12 @@
+# Blender 4.0.2 MTL File: 'scene.blend'
+# www.blender.org
+
+newmtl Material.002
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+map_Kd data/textures/metal/metal_rust_01.jpg
diff --git a/data/scripts/actors/actor_player.lua b/data/scripts/actors/actor_player.lua
index db4c427..612c089 100644
--- a/data/scripts/actors/actor_player.lua
+++ b/data/scripts/actors/actor_player.lua
@@ -27,6 +27,8 @@ function actor_player:on_init()
local ent = engine.create_entity("weapon_ump")
engine.add_entity_to_world(ent)
self.m_weapon_entity_id = ent:get_id()
+
+ --engine.play_sound_3d("data/sounds/test/test_music_64Kbps.mp3", 0.0, 0.0, 0.0)
end
function actor_player:on_shutdown()
@@ -88,7 +90,10 @@ function actor_player:update_player_movement(dt)
local up_x, up_y, up_z = camera.get_up()
local front_x, front_y, front_z = camera.get_front()
- front_y = 0.0
+
+ if not self:is_noclip() then
+ front_y = 0.0
+ end
local final_front_x, final_front_y, final_front_z = vec3_normalize(front_x, front_y, front_z)
local cross_x, cross_y, cross_z = vec3_cross(final_front_x, final_front_y, final_front_z,
@@ -128,6 +133,15 @@ function actor_player:update_player_movement(dt)
local vel_y = dir_y * speed
local vel_z = dir_z * speed
+ if self:is_noclip() then
+ if (movement & EMovementDir_None) ~= 0 then
+ self:set_velocity(vel_x, vel_y, vel_z)
+ else
+ self:set_velocity(0, 0, 0)
+ end
+
+ return
+ end
if self:on_ground() then
self:set_velocity(vel_x, current_vel_y, vel_z)
@@ -142,6 +156,8 @@ function actor_player:update_player_movement(dt)
local air_vel_z = current_vel_z + dir_z * speed * AIR_CONTROL * dt
self:set_velocity(air_vel_x, current_vel_y, air_vel_z)
end
+
+
end
local g_yaw = 0.0
diff --git a/data/scripts/game_hud.lua b/data/scripts/game_hud.lua
index f101ef3..e874379 100644
--- a/data/scripts/game_hud.lua
+++ b/data/scripts/game_hud.lua
@@ -4,7 +4,7 @@ local BLUE_COLOR = { 0.0, 0.0, 1.0, 1.0 }
local BLACK_COLOR = { 0.0, 0.0, 0.0, 1.0 }
local WHITE_COLOR = { 1.0, 1.0, 1.0, 1.0 }
-local draw_test_hud = true
+local draw_test_hud = false
local draw_debug_string = false
local debug_string_text = ""
local debug_string_time = 0.0
diff --git a/data/shaders/lit_generic.ps b/data/shaders/lit_generic.ps
index 4a7e044..534775d 100644
--- a/data/shaders/lit_generic.ps
+++ b/data/shaders/lit_generic.ps
@@ -11,20 +11,16 @@ uniform vec4 u_sunAmbientColor;
uniform sampler2D u_albedoTexture;
void main() {
- //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
- //gl_FragColor = u_customColor * vec4(v_finalColor, 1.0) * texture2D(u_albedoTexture, v_texcoord);
- //gl_FragColor = vec4(v_finalColor, 1.0) * texture2D(u_albedoTexture, v_texcoord);
- //gl_FragColor = texture2D(u_albedoTexture, v_texcoord);
- //gl_FragColor = vec4( v_normal, 1.0 );
- //gl_FragColor = texture2D(u_albedoTexture, v_texcoord);
// !!! NO AREF
// vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb * v_finalColor;
- vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb;
- color = color * ( u_sunAmbientColor.rgb + v_finalColor.x );
- color = color + v_finalColor.y;
+ //vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb;
+ //color = color * ( u_sunAmbientColor.rgb + v_finalColor.x );
+ //color = color + v_finalColor.y;
+
+ vec3 color = texture2D(u_albedoTexture, v_texcoord).rgb * v_finalColor;
gl_FragColor = vec4(color.x, color.y, color.z, 1.0);
}
\ No newline at end of file
diff --git a/data/shaders/lit_generic.vs b/data/shaders/lit_generic.vs
index f6bc675..3b68ea8 100644
--- a/data/shaders/lit_generic.vs
+++ b/data/shaders/lit_generic.vs
@@ -23,20 +23,21 @@ uniform vec4 u_cameraPos;
#define u_ligthRadius u_sunDirection.w
// Calculate blinn-phong per-vertex lighting
-float CalcPhongLighting( vec3 worldPos, vec3 normal, vec3 lightPos ) {
+vec3 CalcPhongLighting( vec3 worldPos, vec3 normal, vec3 lightPos ) {
vec3 lightDir = normalize( lightPos - worldPos );
vec3 viewDir = normalize( u_cameraPos.xyz - worldPos );
vec3 halfVec = normalize( lightDir + viewDir );
float diff = max( dot( normal, lightDir ), 0.0 );
+ float spec = pow( max( dot( normal, halfVec ), 0.0 ), 32.0 );
- v_finalColor.x = diff;
+ float lightlength = length( lightPos - worldPos );
+ float attenuation = max( 0.0, 1.0 - lightlength / u_ligthRadius );
- float spec = pow( max( dot( normal, halfVec ), 0.0 ), 128.0 ) * 1.0;
+ diff = diff * attenuation;
+ spec = spec * attenuation;
- v_finalColor.y = spec;
-
- return diff + spec;
+ return u_sunAmbientColor.rgb + (u_sunColor.rgb * diff) + (u_sunColor.rgb * spec);
}
void main() {
@@ -44,10 +45,7 @@ void main() {
v_normal = vec3( mat3(u_modelMatrix) * a_normal );
v_texcoord = a_texcoord;
- CalcPhongLighting( v_position, v_normal, u_ligthPosition );
-
- //v_finalColor = u_sunAmbientColor.rgb + CalcPhongLighting( v_position, v_normal, u_ligthPosition );
-
+ v_finalColor = CalcPhongLighting( v_position, v_normal, u_ligthPosition );
gl_Position = u_modelViewProjection * vec4(a_position, 1);
}
\ No newline at end of file
diff --git a/data/shaders/lit_generic_skin.vs b/data/shaders/lit_generic_skin.vs
new file mode 100644
index 0000000..4fbac89
--- /dev/null
+++ b/data/shaders/lit_generic_skin.vs
@@ -0,0 +1,63 @@
+#version 120
+
+attribute vec3 a_position;
+attribute vec3 a_normal;
+attribute vec2 a_texcoord;
+attribute vec4 a_boneIds;
+attribute vec4 a_weights;
+
+varying vec3 v_position;
+varying vec3 v_normal;
+varying vec2 v_texcoord;
+varying vec3 v_finalColor;
+
+uniform mat4 u_modelMatrix;
+uniform mat4 u_viewMatrix;
+uniform mat4 u_projectionMatrix;
+uniform mat4 u_modelViewProjection;
+uniform vec4 u_sunDirection;
+uniform vec4 u_sunColor;
+uniform vec4 u_sunAmbientColor;
+uniform vec4 u_cameraPos;
+uniform mat4 u_boneMatrices[128];
+
+// #TODO: should use own uniforms
+#define u_ligthPosition u_sunDirection.xyz
+#define u_ligthRadius u_sunDirection.w
+
+// Calculate blinn-phong per-vertex lighting
+vec3 CalcPhongLighting( vec3 worldPos, vec3 normal, vec3 lightPos ) {
+ vec3 lightDir = normalize( lightPos - worldPos );
+ vec3 viewDir = normalize( u_cameraPos.xyz - worldPos );
+ vec3 halfVec = normalize( lightDir + viewDir );
+
+ float diff = max( dot( normal, lightDir ), 0.0 );
+ float spec = pow( max( dot( normal, halfVec ), 0.0 ), 32.0 );
+
+ float lightlength = length( lightPos - worldPos );
+ float attenuation = max( 0.0, 1.0 - lightlength / u_ligthRadius );
+
+ diff = diff * attenuation;
+ spec = spec * attenuation;
+
+ return u_sunAmbientColor.rgb + (u_sunColor.rgb * diff) + (u_sunColor.rgb * spec);
+}
+
+void main() {
+ // calculate bone transform
+ mat4 skinMatrix = a_weights.x * u_boneMatrices[ int( a_boneIds.x ) ]
+ + a_weights.y * u_boneMatrices[ int( a_boneIds.y ) ]
+ + a_weights.z * u_boneMatrices[ int( a_boneIds.z ) ]
+ + a_weights.w * u_boneMatrices[ int( a_boneIds.w ) ];
+
+ // Position
+ v_position = vec3( skinMatrix * vec4( a_position, 1.0 ) );
+ v_position = vec3( u_modelMatrix * vec4( v_position, 1.0 ) );
+
+ v_normal = vec3( mat3(u_modelMatrix) * a_normal );
+ v_texcoord = a_texcoord;
+
+ v_finalColor = CalcPhongLighting( v_position, v_normal, u_ligthPosition );
+
+ gl_Position = u_projectionMatrix * u_viewMatrix * vec4( v_position, 1.0 );
+}
\ No newline at end of file
diff --git a/data/shaders_before_dlight.rar b/data/shaders_before_dlight.rar
new file mode 100644
index 0000000..19cdb60
Binary files /dev/null and b/data/shaders_before_dlight.rar differ
diff --git a/data/sounds/test/test_music_64Kbps.mp3 b/data/sounds/test/test_music_64Kbps.mp3
new file mode 100644
index 0000000..8e299d8
Binary files /dev/null and b/data/sounds/test/test_music_64Kbps.mp3 differ
diff --git a/data/textures/bricks/bricks_01.png b/data/textures/bricks/bricks_01.png
new file mode 100644
index 0000000..59ecc5d
Binary files /dev/null and b/data/textures/bricks/bricks_01.png differ
diff --git a/data/textures/concrete/concrete_01.tga b/data/textures/concrete/concrete_01.tga
new file mode 100644
index 0000000..3205bba
Binary files /dev/null and b/data/textures/concrete/concrete_01.tga differ
diff --git a/data/textures/concrete/concrete_floor_07.jpg b/data/textures/concrete/concrete_floor_07.jpg
new file mode 100644
index 0000000..816830a
Binary files /dev/null and b/data/textures/concrete/concrete_floor_07.jpg differ
diff --git a/data/textures/concrete/concrete_floor_07.png b/data/textures/concrete/concrete_floor_07.png
new file mode 100644
index 0000000..10967bf
Binary files /dev/null and b/data/textures/concrete/concrete_floor_07.png differ
diff --git a/data/textures/concrete/concrete_floor_08.jpg b/data/textures/concrete/concrete_floor_08.jpg
new file mode 100644
index 0000000..757e75c
Binary files /dev/null and b/data/textures/concrete/concrete_floor_08.jpg differ
diff --git a/data/textures/concrete/concrete_floor_1.tga b/data/textures/concrete/concrete_floor_1.tga
new file mode 100644
index 0000000..2c4dfe6
Binary files /dev/null and b/data/textures/concrete/concrete_floor_1.tga differ
diff --git a/data/textures/concrete/concrete_wall_bunker_1.tga b/data/textures/concrete/concrete_wall_bunker_1.tga
new file mode 100644
index 0000000..46bac08
Binary files /dev/null and b/data/textures/concrete/concrete_wall_bunker_1.tga differ
diff --git a/data/textures/metal/metal_rust_01.jpg b/data/textures/metal/metal_rust_01.jpg
new file mode 100644
index 0000000..8ee898b
Binary files /dev/null and b/data/textures/metal/metal_rust_01.jpg differ
diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp
index cda07a3..826e826 100644
--- a/src/engine/engine.cpp
+++ b/src/engine/engine.cpp
@@ -111,6 +111,8 @@ struct ExampleAppConsole
Commands.push_back("r_scene_debug_draw");
Commands.push_back("r_show_stats");
Commands.push_back("r_entity_debug_draw");
+ Commands.push_back("r_light_debug_draw");
+ Commands.push_back("noclip");
Commands.push_back("map");
Commands.push_back("quit");
AutoScroll = true;
@@ -290,12 +292,12 @@ struct ExampleAppConsole
void ExecCommand(const char* command_line)
{
AddLog("# %s\n", command_line);
-
+ static char extracted[1024];
const char* full_command_line = command_line;
if (const char* arg = strchr(command_line, ' '))
{
- static char extracted[1024];
+
strncpy(extracted, command_line, arg - command_line);
command_line = extracted;
@@ -348,6 +350,15 @@ struct ExampleAppConsole
extern bool g_debugEntityDraw;
g_debugEntityDraw = !g_debugEntityDraw;
}
+ else if (Stricmp(command_line, "R_LIGHT_DEBUG_DRAW") == 0)
+ {
+ extern bool g_debugDrawLights;
+ g_debugDrawLights = !g_debugDrawLights;
+ }
+ else if (Stricmp(command_line, "NOCLIP") == 0)
+ {
+ toggleNoclip();
+ }
else if (Stricmp(command_line, "MAP") == 0)
{
GetEngine()->NewGame(full_command_line + 4);
@@ -363,6 +374,8 @@ struct ExampleAppConsole
// On command input, we scroll to bottom even if AutoScroll==false
ScrollToBottom = true;
+
+ extracted[0] = '\0';
}
// In C++11 you'd be better off using lambdas for this sort of forwarding callbacks
@@ -674,6 +687,14 @@ void Engine::Frame()
if (s_showConsole)
UpdateConsole();
+ // update sound
+ Camera* camera = g_cameraManager.GetActiveCamera();
+ if (camera)
+ {
+ g_soundSystem.SetListenerPosition(camera->GetPosition().x, camera->GetPosition().y, camera->GetPosition().z);
+ g_soundSystem.SetListenerDirection(camera->GetFront().x, camera->GetFront().y, camera->GetFront().z);
+ }
+
// update physics
if (g_PhysicsWorld)
g_PhysicsWorld->Step(dt);
@@ -766,7 +787,8 @@ void Engine::NewGame(const char* mapname)
g_render->LoadSceneXML(mapname);
- CloseConsole();
+ if (s_showConsole)
+ CloseConsole();
// after initializing client scene and collision system - we initialize the server game
g_game->InitForNewMap(mapname);
diff --git a/src/game/actor_base.cpp b/src/game/actor_base.cpp
index 7e99366..3dd3b00 100644
--- a/src/game/actor_base.cpp
+++ b/src/game/actor_base.cpp
@@ -5,7 +5,8 @@
REGISTER_ENTITY(ActorBase);
-ActorBase::ActorBase()
+ActorBase::ActorBase() :
+ m_noclip(false)
{
}
@@ -242,6 +243,40 @@ bool ActorBase::OnGround()
return false;
}
+void ActorBase::SetNoclip(bool noclip)
+{
+ static int mask1 = -1, mask2 = -1;
+
+ m_noclip = noclip;
+
+ if (noclip)
+ {
+ if (mask1 == -1)
+ {
+ mask1 = m_rigidBody->getBroadphaseHandle()->m_collisionFilterGroup;
+ mask2 = m_rigidBody->getBroadphaseHandle()->m_collisionFilterMask;
+ }
+
+ m_rigidBody->getBroadphaseHandle()->m_collisionFilterGroup = 0;
+ m_rigidBody->getBroadphaseHandle()->m_collisionFilterMask = 0;
+
+ g_PhysicsWorld->GetWorld()->getPairCache()->cleanProxyFromPairs(m_rigidBody->getBroadphaseHandle(), g_PhysicsWorld->GetWorld()->getDispatcher());
+
+ m_rigidBody->setCollisionFlags(m_rigidBody->getCollisionFlags() |/* btCollisionObject::CF_KINEMATIC_OBJECT |*/ btCollisionObject::CF_NO_CONTACT_RESPONSE);
+ m_rigidBody->setGravity(btVector3(0.0f, 0.f, 0.f));
+ }
+ else
+ {
+
+ m_rigidBody->getBroadphaseHandle()->m_collisionFilterGroup = mask1;
+ m_rigidBody->getBroadphaseHandle()->m_collisionFilterMask = mask2;
+
+ // m_rigidBody->setCollisionFlags(m_rigidBody->getCollisionFlags() & ~btCollisionObject::CF_KINEMATIC_OBJECT);
+ m_rigidBody->setCollisionFlags(m_rigidBody->getCollisionFlags() & ~btCollisionObject::CF_NO_CONTACT_RESPONSE);
+ m_rigidBody->setGravity(g_PhysicsWorld->GetWorld()->getGravity());
+ }
+}
+
void ActorBase::RegisterFunctions()
{
m_luaObject.Register("activate_camera", *this, &ActorBase::Lua_ActivateCamera);
@@ -253,6 +288,7 @@ void ActorBase::RegisterFunctions()
m_luaObject.Register("get_action", *this, &ActorBase::Lua_GetAction);
m_luaObject.Register("get_movement", *this, &ActorBase::Lua_GetMovement);
m_luaObject.Register("on_ground", *this, &ActorBase::Lua_OnGround);
+ m_luaObject.Register("is_noclip", *this, &ActorBase::Lua_IsNoclip);
//m_luaObject.RegisterDirect("activate_camera", &ActorBase_ActivateCamera);
//m_luaObject.RegisterDirect("update_camera_look", &ActorBase_UpdateCameraLook);
@@ -332,6 +368,12 @@ int ActorBase::Lua_OnGround(LuaPlus::LuaState* state)
return 1;
}
+int ActorBase::Lua_IsNoclip(LuaPlus::LuaState* state)
+{
+ state->PushBoolean(m_noclip);
+ return 1;
+}
+
int ActorBase::GenAction()
{
int action = -1;
diff --git a/src/game/actor_base.h b/src/game/actor_base.h
index be5593a..143d6a4 100644
--- a/src/game/actor_base.h
+++ b/src/game/actor_base.h
@@ -37,6 +37,8 @@ public:
bool OnGround();
+ void SetNoclip(bool noclip);
+
// Lua bindings
virtual void RegisterFunctions();
@@ -50,6 +52,7 @@ public:
int Lua_GetAction(LuaPlus::LuaState* state);
int Lua_GetMovement(LuaPlus::LuaState* state);
int Lua_OnGround(LuaPlus::LuaState* state);
+ int Lua_IsNoclip(LuaPlus::LuaState* state);
private:
int GenAction();
@@ -58,7 +61,7 @@ private:
private:
Camera m_camera;
-
+ bool m_noclip;
};
diff --git a/src/game/game.cpp b/src/game/game.cpp
index 25e9e01..b94d364 100644
--- a/src/game/game.cpp
+++ b/src/game/game.cpp
@@ -11,6 +11,10 @@
#include "world.h"
#include "game_object.h"
#include "soundsystem.h"
+#include "animation.h"
+#include "scenemanager.h"
+#include "game_world_objects.h"
+#include "actor_base.h"
#include
@@ -27,6 +31,7 @@ public:
public:
void PlaySound2D(const std::string& filename);
+ void PlaySound3D(const std::string& filename, const glm::vec3& pos);
void CacheSound(const std::string& filename);
private:
@@ -57,6 +62,24 @@ void GameSoundSystem::PlaySound2D(const std::string& filename)
g_soundSystem.Play(it->second, false);
}
+void GameSoundSystem::PlaySound3D(const std::string& filename, const glm::vec3& pos)
+{
+ auto it = m_sounds.find(filename);
+ if (it == m_sounds.end())
+ {
+ CacheSound(filename);
+ it = m_sounds.find(filename);
+ }
+
+ SDL_assert(it != m_sounds.end());
+
+ // .hack due unimplemented sound sources^
+ if (g_soundSystem.IsPlaying(it->second))
+ g_soundSystem.Stop(it->second);
+
+ g_soundSystem.Play3D(it->second, pos.x, pos.y, pos.z, true);
+}
+
void GameSoundSystem::CacheSound(const std::string& filename)
{
m_sounds.emplace(filename, g_soundSystem.LoadSound(filename.c_str()));
@@ -82,6 +105,11 @@ void enginePlaySound(const char* filename)
GameSoundSystem::GetInstance().PlaySound2D(filename);
}
+void enginePlaySound3D(const char* filename, float x, float y, float z)
+{
+ GameSoundSystem::GetInstance().PlaySound3D(filename, glm::vec3(x, y, z));
+}
+
LuaPlus::LuaObject engineCreateEntity(const char* classname)
{
Entity* entity = static_cast(g_game->Lua_CreateEntity(classname));
@@ -157,6 +185,7 @@ void registerEngine()
engineTable.RegisterDirect("add_entity_to_world", &engineAddEntityToWorld);
engineTable.RegisterDirect("get_entity_from_id", &engineGetEntityFromID);
engineTable.RegisterDirect("play_sound", &enginePlaySound);
+ engineTable.RegisterDirect("play_sound_3d", &enginePlaySound3D);
engineTable.RegisterDirect("get_delta", &engineGetDelta);
engineTable.RegisterDirect("trace_ray", &engineTraceRay);
@@ -231,6 +260,20 @@ void registerInput()
inputTable.RegisterDirect("get_lock_mouse", &inputGetLock);
}
+void toggleNoclip()
+{
+ static bool s_noclip = false;
+
+ s_noclip = !s_noclip;
+
+ LuaPlus::LuaObject player = GetLuaState().GetGlobal("g_player");
+ if (player.IsTable())
+ {
+ ActorBase* actor = (ActorBase*)player["__object"].GetLightUserdata();
+ actor->SetNoclip(s_noclip);
+ }
+}
+
int cameraGetPos(LuaPlus::LuaState* state)
{
glm::vec3 v = glm::vec3(0.0f);
@@ -494,6 +537,16 @@ void Game::LoadLevelXML(const char* mapname)
entity->LoadModel(filename);
}
+ pugi::xml_node animation = entitynode.child("Animation");
+ if (animation)
+ {
+ const char* name = animation.attribute("name").as_string();
+ int mode = animation.attribute("mode").as_int();
+ SkeletonInstance* skeleton = entity->GetSkeletonInstance();
+ if (skeleton)
+ skeleton->PlayAnimation(skeleton->FindAnimation(name), mode);
+ }
+
pugi::xml_node physics = entitynode.child("Physics");
if (physics)
{
@@ -502,6 +555,10 @@ void Game::LoadLevelXML(const char* mapname)
entity->CreateTestBody();
}
+ Light* light = dynamic_cast(entity); // BAD!!!
+ if (light)
+ light->InitFromXML(entitynode);
+
entity->Init();
//IEntityBase* entity = g_entityManager->CreateEntity(classname.as_string());
diff --git a/src/game/game.h b/src/game/game.h
index 749dcf9..725fdcd 100644
--- a/src/game/game.h
+++ b/src/game/game.h
@@ -23,8 +23,9 @@ public:
extern Game* g_game;
+void registerCamera();
+void registerInput();
+void toggleNoclip();
+
#endif
-void registerCamera();
-
-void registerInput();
diff --git a/src/game/game_object.cpp b/src/game/game_object.cpp
index 30a23fa..96c5093 100644
--- a/src/game/game_object.cpp
+++ b/src/game/game_object.cpp
@@ -134,6 +134,11 @@ bool Entity::GetVisible()
return true;
}
+SkeletonInstance* Entity::GetSkeletonInstance()
+{
+ return m_skeleton;
+}
+
void Entity::UpdateSkeleton(float dt)
{
if (m_model && m_skeleton)
diff --git a/src/game/game_object.h b/src/game/game_object.h
index 0d1f075..595da10 100644
--- a/src/game/game_object.h
+++ b/src/game/game_object.h
@@ -77,6 +77,7 @@ public:
void SetVisible(bool visible);
bool GetVisible();
+ SkeletonInstance* GetSkeletonInstance();
void UpdateSkeleton(float dt);
void Init();
diff --git a/src/game/game_world_objects.cpp b/src/game/game_world_objects.cpp
new file mode 100644
index 0000000..4e7f672
--- /dev/null
+++ b/src/game/game_world_objects.cpp
@@ -0,0 +1,51 @@
+#include "core.h"
+#include "game_world_objects.h"
+#include "debugrender.h"
+#include "scenemanager.h" // BAD!
+
+bool g_debugDrawLights = false;
+
+REGISTER_ENTITY(Light);
+
+Light::Light()
+{
+ m_dlight = nullptr;
+}
+
+Light::~Light()
+{
+}
+
+void Light::Render()
+{
+ if (!m_dlight)
+ return;
+
+ m_dlight->position = m_position;
+
+ if (g_debugDrawLights)
+ {
+ g_debugRender->DrawSphere(m_dlight->position, m_dlight->radius, m_dlight->color);
+ }
+}
+
+void Light::InitFromXML(const pugi::xml_node& node)
+{
+ m_dlight = DLightManager::GetInstance()->AllocLight();
+ SDL_assert_always(m_dlight);
+ m_dlight->position = m_position;
+
+ pugi::xml_node color = node.child("Color");
+ if (color)
+ {
+ m_dlight->color.r = color.attribute("r").as_float();
+ m_dlight->color.g = color.attribute("g").as_float();
+ m_dlight->color.b = color.attribute("b").as_float();
+ }
+
+ pugi::xml_node radius = node.child("Radius");
+ if (radius)
+ {
+ m_dlight->radius = radius.attribute("value").as_float();
+ }
+}
\ No newline at end of file
diff --git a/src/game/game_world_objects.h b/src/game/game_world_objects.h
new file mode 100644
index 0000000..7ae9a72
--- /dev/null
+++ b/src/game/game_world_objects.h
@@ -0,0 +1,26 @@
+#ifndef GAME_WORLD_OBJECTS_H
+#define GAME_WORLD_OBJECTS_H
+
+#include
+
+#include "game_object.h"
+
+struct DLight;
+
+// #TODO: Inheritance from Entity is needed for expose to lua, but did
+// light need to have a animation stuff?
+class Light : public Entity
+{
+public:
+ Light();
+ ~Light();
+
+ void Render() override;
+
+ void InitFromXML(const pugi::xml_node& node);
+
+private:
+ DLight* m_dlight;
+};
+
+#endif // !GAME_WORLD_OBJECTS_H
diff --git a/src/render/debugrender.cpp b/src/render/debugrender.cpp
index 72ac867..12a11f5 100644
--- a/src/render/debugrender.cpp
+++ b/src/render/debugrender.cpp
@@ -95,6 +95,51 @@ void DebugRender::DrawBoundingBox(const BoundingBox& box, const glm::vec3& color
DrawLine(p5, p7, color);
}
+void DebugRender::DrawSphere(const glm::vec3& origin, float radius, const glm::vec3& color)
+{
+#ifndef M_PI
+#define M_PI 3.14159265358979323846 // pi
+#endif // !M_PI
+
+ const int kSegments = 16;
+ const float kStep = 2.0f * M_PI / (float)kSegments;
+
+#undef M_PI
+
+ // XY
+ for (int i = 0; i < kSegments; i++)
+ {
+ float theta = i * kStep;
+ float theta2 = (i + 1) * kStep;
+
+ glm::vec3 p1 = origin + glm::vec3(cos(theta) * radius, sin(theta) * radius, 0.0f);
+ glm::vec3 p2 = origin + glm::vec3(cos(theta2) * radius, sin(theta2) * radius, 0.0f);
+ DrawLine(p1, p2, color);
+ }
+
+ // XZ
+ for (int i = 0; i < kSegments; i++)
+ {
+ float theta = i * kStep;
+ float theta2 = (i + 1) * kStep;
+
+ glm::vec3 p1 = origin + glm::vec3(cos(theta) * radius, 0.0f, sin(theta) * radius);
+ glm::vec3 p2 = origin + glm::vec3(cos(theta2) * radius, 0.0f, sin(theta2) * radius);
+ DrawLine(p1, p2, color);
+ }
+
+ // YZ
+ for (int i = 0; i < kSegments; i++)
+ {
+ float theta = i * kStep;
+ float theta2 = (i + 1) * kStep;
+
+ glm::vec3 p1 = origin + glm::vec3(0.0f, cos(theta) * radius, sin(theta) * radius);
+ glm::vec3 p2 = origin + glm::vec3(0.0f, cos(theta2) * radius, sin(theta2) * radius);
+ DrawLine(p1, p2, color);
+ }
+}
+
void DebugRender::RenderFrame()
{
if (!g_drawDebug)
diff --git a/src/render/debugrender.h b/src/render/debugrender.h
index e794457..5fb4df5 100644
--- a/src/render/debugrender.h
+++ b/src/render/debugrender.h
@@ -23,6 +23,7 @@ public:
void DrawAxis(const glm::vec3& vec);
void DrawLine(const glm::vec3& from, const glm::vec3& to, const glm::vec3& color);
void DrawBoundingBox(const BoundingBox& box, const glm::vec3& color);
+ void DrawSphere(const glm::vec3& origin, float radius, const glm::vec3& color);
void RenderFrame();
diff --git a/src/render/model.cpp b/src/render/model.cpp
index 2842ddf..2e0d292 100644
--- a/src/render/model.cpp
+++ b/src/render/model.cpp
@@ -14,9 +14,13 @@
#include "texturesmanager.h"
#include "iqm.h"
#include "debugrender.h"
+#include "scenemanager.h"
+#include "camera.h"
extern Shader* g_unlitShader;
extern Shader* g_unlitSkinnedShader;
+extern Shader* g_litShader;
+extern Shader* g_litSkinnedShader;
static std::string getFileNameWithoutExtension(const std::string& filename)
{
@@ -285,7 +289,7 @@ void Model::LoadIqm(const char* filename)
//mesh.m_indices = indices;
mesh.vb = g_renderDevice->CreateVertexBuffer(vertices.data(), pMesh->num_vertexes * sizeof(SkinnedMeshVertex), true);
mesh.vbcount = pMesh->num_vertexes;
- mesh.ib = g_renderDevice->CreateIndexBuffer(indices.data(), pMesh->num_triangles * sizeof(iqmtriangle), false);
+ mesh.ib = g_renderDevice->CreateIndexBuffer(indices.data(), pMesh->num_triangles * 3 * sizeof(uint), false);
mesh.ibcount = pMesh->num_triangles * 3;
@@ -611,8 +615,28 @@ void Model::Draw(const glm::mat4& model, SkeletonInstance* instance /*= nullptr*
{
SDL_assert(g_unlitShader);
+ glm::vec3 pos = model[3];
+
Shader* shader = instance ? g_unlitSkinnedShader : g_unlitShader;
+ DLight* light = nullptr;
+
+ float lastDistSq = FLT_MAX;
+
+ for (int i = 0; i < DLightManager::GetInstance()->GetNumLights(); i++)
+ {
+ float distSq = glm::length2(pos - DLightManager::GetInstance()->GetDLight(i)->position );
+
+ if (distSq <= lastDistSq)
+ {
+ lastDistSq = distSq;
+ light = DLightManager::GetInstance()->GetDLight(i);
+ }
+ }
+
+ if (light)
+ shader = instance ? g_litSkinnedShader : g_litShader;
+
for (int i = 0; i < m_meshes.size(); i++)
{
ModelData_t& m_data = m_meshes[i];
@@ -624,23 +648,7 @@ void Model::Draw(const glm::mat4& model, SkeletonInstance* instance /*= nullptr*
g_renderDevice->SetDepthTest(true);
g_renderDevice->SetDepthWrite(true);
- bool isTransparent = false;
- if (isTransparent)
- {
- // Enable blending
- g_renderDevice->SetBlending(true);
- g_renderDevice->SetBlendingFunction(BF_SRC_ALPHA, BF_ONE_MINUS_SRC_ALPHA);
-
- glm::vec4 color = glm::vec4(1.f, 1.f, 1.f, .5f);
- g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CUSTOM_COLOR, glm::value_ptr(color));
- }
- else
- {
- g_renderDevice->SetBlending(false);
-
- //glm::vec4 color = glm::vec4(1.f, 1.f, 1.f, 1.f);
- //g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CUSTOM_COLOR, glm::value_ptr(color));
- }
+ g_renderDevice->SetBlending(false);
g_renderDevice->SetVerticesBuffer(m_data.vb);
if (m_data.ib)
@@ -657,6 +665,37 @@ void Model::Draw(const glm::mat4& model, SkeletonInstance* instance /*= nullptr*
g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MVP_MATRIX, &mvp[0]);
+ Camera* camera = g_cameraManager.GetActiveCamera();
+ if (camera && shader->HasUniform(UNIFORM_CAMERA_POS))
+ {
+ glm::vec4 campos = glm::vec4(camera->GetPosition(), 1.0f);
+ g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CAMERA_POS, &campos);
+ }
+
+ if (shader->HasUniform(UNIFORM_SUN_DIRECTION))
+ {
+ glm::vec4 lightPos = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f);
+ if (light)
+ lightPos = glm::vec4(light->position, light->radius);
+
+ g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_DIRECTION, &lightPos);
+ }
+
+ if (shader->HasUniform(UNIFORM_SUN_COLOR))
+ {
+ glm::vec4 lightColor = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f);
+ if (light)
+ lightColor = glm::vec4(light->color, 1.0f);
+
+ g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_COLOR, &lightColor);
+ }
+
+ if (shader->HasUniform(UNIFORM_SUN_AMBIENT))
+ {
+ glm::vec4 lightColor = glm::vec4(0.1f);
+ g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_AMBIENT, &lightColor);
+ }
+
if (!m_data.m_AlbedoTexture)
m_data.m_AlbedoTexture = g_texturesManager->LoadTexture2D("MustBeEvilHackButDontCare");
diff --git a/src/render/modelsystem.cpp b/src/render/modelsystem.cpp
index 74aaf9c..27485f1 100644
--- a/src/render/modelsystem.cpp
+++ b/src/render/modelsystem.cpp
@@ -64,6 +64,11 @@ void ModelSystem::Init()
// Load unlighted skinned model generic shader
g_unlitSkinnedShader = g_shaderSystem->CreateShader("unlit_generic_skin", "data/shaders/unlit_generic_skin.vs", "data/shaders/unlit_generic.ps",
g_skinnedVertexLayout, sizeof(g_skinnedVertexLayout) / sizeof(g_skinnedVertexLayout[0]));
+
+
+ // Load lighted skinned model generic shader
+ g_litSkinnedShader = g_shaderSystem->CreateShader("lit_generic_skin", "data/shaders/lit_generic_skin.vs", "data/shaders/lit_generic.ps",
+ g_skinnedVertexLayout, sizeof(g_skinnedVertexLayout) / sizeof(g_skinnedVertexLayout[0]));
}
void ModelSystem::Shutdown()
diff --git a/src/render/render.cpp b/src/render/render.cpp
index 0856eca..28ab346 100644
--- a/src/render/render.cpp
+++ b/src/render/render.cpp
@@ -67,7 +67,7 @@ void APIENTRY GL_DebugOutput(GLenum source,
if (type == GL_DEBUG_TYPE_ERROR_ARB)
{
bool debug = true;
- __debugbreak();
+ //__debugbreak();
}
}
@@ -78,7 +78,7 @@ Render::Render() :
m_pGLContext(nullptr),
m_pStretchedPicVBuf(nullptr),
m_usingVAO(false),
- m_showStats(true)
+ m_showStats(false)
{
m_viewMatrix = glm::identity();
m_projectionMatrix = glm::identity();
@@ -310,6 +310,13 @@ void Render::RenderStats()
snprintf(buffer, sizeof(buffer), "numModels: %d", g_NumModels);
ImGui::GetForegroundDrawList()->AddText(ImVec2(0.0f, 30.0f), 0xffffffff, buffer);
+
+ Camera* camera = g_cameraManager.GetActiveCamera();
+ if (camera)
+ {
+ snprintf(buffer, sizeof(buffer), "cam pos: %.2f %.2f %.2f", camera->GetPosition().x, camera->GetPosition().y, camera->GetPosition().z);
+ ImGui::GetForegroundDrawList()->AddText(ImVec2(0.0f, 45.0f), 0xffffffff, buffer);
+ }
}
void Render::Present(bool vsync)
@@ -319,6 +326,8 @@ void Render::Present(bool vsync)
SDL_GL_SwapWindow(m_pWindow);
// reset stats
+ ResetStates();
+
g_NumModels = 0;
}
diff --git a/src/render/render_shared.h b/src/render/render_shared.h
index abc6fa6..b0c6868 100644
--- a/src/render/render_shared.h
+++ b/src/render/render_shared.h
@@ -250,4 +250,11 @@ struct SkinnedMeshVertex
glm::vec4 weights;
};
+struct DLight
+{
+ glm::vec3 position;
+ glm::vec3 color;
+ float radius;
+};
+
#endif
\ No newline at end of file
diff --git a/src/render/scenemanager.cpp b/src/render/scenemanager.cpp
index 41830f3..c995a71 100644
--- a/src/render/scenemanager.cpp
+++ b/src/render/scenemanager.cpp
@@ -205,6 +205,8 @@ SceneManager* g_sceneManager;
SceneManager::SceneManager()
{
m_sceneLoaded = false;
+
+ DLightManager::GetInstance()->Clear();
}
SceneManager::~SceneManager()
@@ -214,6 +216,8 @@ SceneManager::~SceneManager()
void SceneManager::loadScene(const char* filename)
{
+ unloadIfScenePresent();
+
char filenameBuffer[kMaxPathLength];
snprintf(filenameBuffer, kMaxPathLength, "data/levels/%s/%s.xml", filename, filename);
@@ -478,6 +482,8 @@ void SceneManager::unloadScene()
m_sceneMeshes.clear();
+ DLightManager::GetInstance()->Clear();
+
m_sceneLoaded = false;
}
@@ -777,7 +783,14 @@ void SceneStaticMesh::LoadMtl(const char* filename)
char stupidBuffer[1000];
fgets(stupidBuffer, 1000, file);
- const char* textureFilename = stupidBuffer + 1;
+ char* textureFilename = stupidBuffer + 1;
+
+ int str_len = strlen(textureFilename);
+
+ if (textureFilename[str_len - 1] == '\n')
+ textureFilename[str_len - 1] = '\0';
+
+
m_albedoTexture = g_texturesManager->LoadTexture2D(textureFilename, true);
}
@@ -799,7 +812,7 @@ void SceneStaticMesh::LoadMtl(const char* filename)
static glm::mat4 s_identity = glm::mat4(1.0f);
-void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albedoTexture)
+void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albedoTexture, DLight* light)
{
extern Shader* g_unlitShader;
extern Shader* g_litShader;
@@ -807,7 +820,7 @@ void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albed
SDL_assert(g_unlitShader);
SDL_assert(g_litShader);
- Shader* shader = g_litShader;
+ Shader* shader = light ? g_litShader : g_unlitShader;
g_shaderSystem->SetShader(shader);
@@ -825,17 +838,22 @@ void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albed
if (shader->HasUniform(UNIFORM_SUN_DIRECTION))
{
- glm::vec4 lightPos = glm::vec4(1.0f, 1.0f, 1.0f, 0.0f);
-
- // g_debugRender->DrawAxis(glm::vec3(lightPos));
-
- Camera* camera = g_cameraManager.GetActiveCamera();
- if (camera)
- lightPos = glm::vec4(camera->GetPosition(), 1.0f);
+ glm::vec4 lightPos = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f);
+ if (light)
+ lightPos = glm::vec4(light->position, light->radius);
g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_DIRECTION, &lightPos);
}
+ if (shader->HasUniform(UNIFORM_SUN_COLOR))
+ {
+ glm::vec4 lightColor = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f);
+ if (light)
+ lightColor = glm::vec4(light->color, 1.0f);
+
+ g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_COLOR, &lightColor);
+ }
+
if (shader->HasUniform(UNIFORM_SUN_AMBIENT))
{
glm::vec4 lightColor = glm::vec4(0.1f);
@@ -854,14 +872,149 @@ void SceneStaticMesh::RenderObjects()
g_renderDevice->SetCullFace(true);
g_renderDevice->SetDepthTest(true);
g_renderDevice->SetDepthWrite(true);
-
g_renderDevice->SetBlending(false);
- g_renderDevice->SetVerticesBuffer(m_vb);
+ int numlights = DLightManager::GetInstance()->GetNumLights();
+ if (!numlights)
+ {
+ g_renderDevice->SetVerticesBuffer(m_vb);
- R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture);
+ R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture, nullptr);
- g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount);
+ g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount);
- g_NumModels++;
+ g_NumModels++;
+ }
+ else
+ {
+ // first pass
+
+ g_renderDevice->SetVerticesBuffer(m_vb);
+ R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture, DLightManager::GetInstance()->GetDLight(0));
+ g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount);
+ g_NumModels++; // overdraw YAAAY
+
+ if (numlights > 1)
+ {
+ // fragment passed, can turn off depth write
+ g_renderDevice->SetDepthWrite(false);
+
+ // testing only written fragments
+ glDepthFunc(GL_EQUAL);
+
+ // additive blending
+ g_renderDevice->SetBlending(true);
+
+ g_renderDevice->SetBlendingFunction(BF_ONE, BF_ONE);
+
+ glBlendFunc(GL_ONE, GL_ONE);
+ for (int i = 1; i < numlights; i++)
+ {
+ g_renderDevice->SetVerticesBuffer(m_vb);
+ R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture, DLightManager::GetInstance()->GetDLight(i));
+ g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount);
+ g_NumModels++; // overdraw YAAAY
+ }
+
+ g_renderDevice->SetBlending(false);
+ glDepthFunc(GL_LESS);
+ }
+ }
}
+
+DLightManager* DLightManager::GetInstance()
+{
+ static DLightManager instance;
+ return &instance;
+}
+
+DLight* DLightManager::AllocLight()
+{
+ return &m_dlights[m_numdlights++];
+}
+
+void DLightManager::Clear()
+{
+ memset(m_dlights, 0, sizeof(m_dlights));
+ m_numdlights = 0;
+}
+
+DLight* DLightManager::GetDLight(int index)
+{
+ if (index >= m_numdlights)
+ Core::Error("DLightManager::GetDLight: index is out of range");
+
+ return &m_dlights[index];
+}
+
+int DLightManager::GetNumLights()
+{
+ return m_numdlights;
+}
+
+//void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albedoTexture)
+//{
+// extern Shader* g_unlitShader;
+// extern Shader* g_litShader;
+//
+// SDL_assert(g_unlitShader);
+// SDL_assert(g_litShader);
+//
+// Shader* shader = g_litShader;
+//
+// g_shaderSystem->SetShader(shader);
+//
+// g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MODEL_MATRIX, &worldMatrix[0]);
+//
+// glm::mat4 mvp = g_render->GetProjectionMatrix() * g_render->GetViewMatrix() * worldMatrix;
+// g_shaderSystem->SetUniformMatrix(shader, UNIFORM_MVP_MATRIX, &mvp[0]);
+//
+// Camera* camera = g_cameraManager.GetActiveCamera();
+// if (camera && shader->HasUniform(UNIFORM_CAMERA_POS))
+// {
+// glm::vec4 campos = glm::vec4(camera->GetPosition(), 1.0f);
+// g_shaderSystem->SetUniformFloat4(shader, UNIFORM_CAMERA_POS, &campos);
+// }
+//
+// if (shader->HasUniform(UNIFORM_SUN_DIRECTION))
+// {
+// glm::vec4 lightPos = glm::vec4(1.0f, 1.0f, 1.0f, 0.0f);
+//
+// // g_debugRender->DrawAxis(glm::vec3(lightPos));
+//
+// Camera* camera = g_cameraManager.GetActiveCamera();
+// if (camera)
+// lightPos = glm::vec4(camera->GetPosition(), 1.0f);
+//
+// g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_DIRECTION, &lightPos);
+// }
+//
+// if (shader->HasUniform(UNIFORM_SUN_AMBIENT))
+// {
+// glm::vec4 lightColor = glm::vec4(0.1f);
+// g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_AMBIENT, &lightColor);
+// }
+//
+// g_texturesManager->SetTexture(0, albedoTexture);
+// g_shaderSystem->SetUniformSampler(shader, SAMPLER_ALBEDO, 0);
+//}
+//
+//void SceneStaticMesh::RenderObjects()
+//{
+// glFrontFace(GL_CCW);
+// glDepthFunc(GL_LESS);
+//
+// g_renderDevice->SetCullFace(true);
+// g_renderDevice->SetDepthTest(true);
+// g_renderDevice->SetDepthWrite(true);
+//
+// g_renderDevice->SetBlending(false);
+//
+// g_renderDevice->SetVerticesBuffer(m_vb);
+//
+// R_SceneStaticMesh_BindShader(s_identity, m_albedoTexture);
+//
+// g_renderDevice->DrawArrays(PT_TRIANGLES, 0, m_vbcount);
+//
+// g_NumModels++;
+//}
\ No newline at end of file
diff --git a/src/render/scenemanager.h b/src/render/scenemanager.h
index f8fb51f..797ff48 100644
--- a/src/render/scenemanager.h
+++ b/src/render/scenemanager.h
@@ -31,6 +31,25 @@ private:
Texture2D* m_albedoTexture;
};
+const int kMaxDLight = 1024;
+
+class DLightManager
+{
+public:
+ static DLightManager* GetInstance();
+
+public:
+ DLight* AllocLight();
+ void Clear();
+
+ DLight* GetDLight(int index);
+ int GetNumLights();
+
+private:
+ DLight m_dlights[kMaxDLight];
+ int m_numdlights;
+};
+
class SceneManager
{
public:
diff --git a/src/sound/soundsystem.cpp b/src/sound/soundsystem.cpp
index ea7fad6..6f4aa62 100644
--- a/src/sound/soundsystem.cpp
+++ b/src/sound/soundsystem.cpp
@@ -39,6 +39,9 @@ void SoundSystem::Init()
ma_uint32 uiSampleRate = ma_engine_get_sample_rate(&m_engine);
Msg("Sound sampling rate: %d\n", uiSampleRate);
+ // Initialize listener
+ SetListenerPosition(0.0f, 0.0f, 0.0f);
+
m_inited = true;
}
@@ -91,6 +94,15 @@ void SoundSystem::Play(SoundHandle handle, bool bLoop)
ma_sound_set_looping(&m_sounds[handle], true);
}
+void SoundSystem::Play3D(SoundHandle handle, float x, float y, float z, bool bLoop)
+{
+ if ( !m_inited )
+ return;
+
+ Play(handle, bLoop);
+ ma_sound_set_position(&m_sounds[handle], x, y, z);
+}
+
void SoundSystem::Stop(SoundHandle handle)
{
if ( !m_inited )
@@ -121,4 +133,20 @@ void SoundSystem::SetMasterVolume(float volume)
float SoundSystem::GetMasterVolume()
{
return ma_engine_get_volume(&m_engine);
-}
\ No newline at end of file
+}
+
+void SoundSystem::SetListenerPosition(float _x, float _y, float _z)
+{
+ if ( !m_inited )
+ return;
+
+ ma_engine_listener_set_position(&m_engine, 0, _x, _y, _z);
+}
+
+void SoundSystem::SetListenerDirection(float _x, float _y, float _z)
+{
+ if ( !m_inited )
+ return;
+
+ ma_engine_listener_set_direction(&m_engine, 0, _x, _y, _z);
+}
diff --git a/src/sound/soundsystem.h b/src/sound/soundsystem.h
index 07580fb..f9db941 100644
--- a/src/sound/soundsystem.h
+++ b/src/sound/soundsystem.h
@@ -19,6 +19,7 @@ public:
SoundHandle LoadSound(const char* filename);
void Play(SoundHandle handle, bool bLoop);
+ void Play3D(SoundHandle handle, float x, float y, float z, bool bLoop);
void Stop(SoundHandle handle);
bool IsPlaying(SoundHandle handle);
@@ -26,6 +27,9 @@ public:
void SetMasterVolume(float volume);
float GetMasterVolume();
+ void SetListenerPosition(float _x, float _y, float _z);
+ void SetListenerDirection(float _x, float _y, float _z);
+
private:
ma_sound m_sounds[MAX_SOUNDS];
ma_engine m_engine;