diff --git a/contrib/action_nitro/Makefile b/contrib/action_nitro/Makefile
deleted file mode 100644
index 22c93588b9..0000000000
--- a/contrib/action_nitro/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-all: bin/action_nitro
-
-bin/action_nitro: $(shell nitls -M src/action_nitro.nit -m linux) pre-build
- nitc src/action_nitro.nit -m linux -o $@
-
-android: bin/action_nitro.apk
-bin/action_nitro.apk: $(shell nitls -M src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit) pre-build android/res/
- nitc src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit -o $@
-
-android-release: $(shell nitls -M src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit) pre-build android/res/
- nitc src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit -o bin/action_nitro.apk --release
-
-ios: bin/action_nitro.app
-bin/action_nitro.app: $(shell nitls -M src/action_nitro.nit -m ios -m src/touch_ui.nit) pre-build
- nitc src/action_nitro.nit -m ios -m src/touch_ui.nit -o $@ --compile-dir nit_compile
-
-src/gen/texts.nit: art/texts.svg
- make -C ../inkscape_tools/
- ../inkscape_tools/bin/svg_to_png_and_nit art/texts.svg -a assets/ -s src/gen/ -x 2.0 -g
-
-src/gen/planes.nit: art/planes.svg
- make -C ../inkscape_tools/
- ../inkscape_tools/bin/svg_to_png_and_nit art/planes.svg -a assets/ -s src/gen/ -x 2.0 -g
-
-android/res/: art/icon.svg
- make -C ../inkscape_tools/
- ../inkscape_tools/bin/svg_to_icons --out android/res --android art/icon.svg
-
-pre-build: src/gen/texts.nit src/gen/planes.nit
-
-check: bin/action_nitro
- NIT_TESTING=true bin/action_nitro
diff --git a/contrib/action_nitro/README.md b/contrib/action_nitro/README.md
deleted file mode 100644
index 517f81359f..0000000000
--- a/contrib/action_nitro/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-Action Nitro! an action platformer where you jump from plane to plane to reach the ISS and defeat the bad guys.
-
-# Screenshot
-
-![Screenshot in atmosphere](doc/screenshot.jpg)
-
-![Screenshot in space](doc/space.jpg)
-
-# Compile and run - For those used to Nit
-
-1. Compile the Nit tools from the root of this repository.
- Refer to the root README file for directions.
-
-2. Install the packages requisited by _gamnit_.
- See the list in `../../lib/gamnit/README.md`.
-
-3. Compile the game with a simple call to `make` from this folder.
-
-4. Run with `bin/action_nitro`.
-
-# Art
-
-* Character art created by jeremygooch under CC-BY 3.0.
-* City skyline created by Alucard under CC-BY 3.0.
-* Helicopter art by SpriteAttack under CC-BY-SA 3.0.
-* Planes, derived from the helicopter art created by Alexis Laferrière under CC-BY-SA 3.0.
-* Parachute and powerups art created by Alexis Laferrière under CC0.
-* Particles created by kenny.nl under CC0.
-* Stars textures created by StumpyStrust under CC0.
-* Splash background credit NASA.
-* 3D model of ISS credit NASA Ames Research Center.
diff --git a/contrib/action_nitro/art/icon.svg b/contrib/action_nitro/art/icon.svg
deleted file mode 100644
index a0701e16f5..0000000000
--- a/contrib/action_nitro/art/icon.svg
+++ /dev/null
@@ -1,508 +0,0 @@
-
-
-
-
diff --git a/contrib/action_nitro/art/icon_background.png b/contrib/action_nitro/art/icon_background.png
deleted file mode 100644
index 22529ca30a..0000000000
Binary files a/contrib/action_nitro/art/icon_background.png and /dev/null differ
diff --git a/contrib/action_nitro/art/planes.svg b/contrib/action_nitro/art/planes.svg
deleted file mode 100644
index 690bbdb918..0000000000
--- a/contrib/action_nitro/art/planes.svg
+++ /dev/null
@@ -1,2515 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/contrib/action_nitro/art/texts.svg b/contrib/action_nitro/art/texts.svg
deleted file mode 100644
index e48f4452b6..0000000000
--- a/contrib/action_nitro/art/texts.svg
+++ /dev/null
@@ -1,2265 +0,0 @@
-
-
-
-
diff --git a/contrib/action_nitro/assets/images/.gitignore b/contrib/action_nitro/assets/images/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/action_nitro/assets/images/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/action_nitro/assets/models/iss.mtl b/contrib/action_nitro/assets/models/iss.mtl
deleted file mode 100644
index 1d3bd7c1dd..0000000000
--- a/contrib/action_nitro/assets/models/iss.mtl
+++ /dev/null
@@ -1,56 +0,0 @@
-# Blender MTL File: 'iss-low-poly.blend'
-# Material Count: 6
-
-newmtl Brown
-Ns 94.117647
-Ka 0.000000 0.000000 0.000000
-Kd 0.298039 0.236343 0.128566
-Ks 0.200000 0.200000 0.200000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl ISSDarkMetal
-Ns 11.764706
-Ka 0.000000 0.000000 0.000000
-Kd 0.087672 0.087672 0.087672
-Ks 0.500000 0.500000 0.500000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl ISSGray2
-Ns 11.764706
-Ka 0.000000 0.000000 0.000000
-Kd 0.301372 0.301372 0.301372
-Ks 0.500000 0.500000 0.500000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl ISSMetal1
-Ns 11.764706
-Ka 0.000000 0.000000 0.000000
-Kd 0.476716 0.476716 0.476716
-Ks 0.500000 0.500000 0.500000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl ISSSolarPanels
-Ns 11.764706
-Ka 0.000000 0.000000 0.000000
-Kd 0.054525 0.029527 0.376471
-Ks 0.500000 0.500000 0.500000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl ISSWhiteMetal
-Ns 11.764706
-Ka 0.000000 0.000000 0.000000
-Kd 0.701366 0.701366 0.701366
-Ks 0.500000 0.500000 0.500000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/action_nitro/assets/models/iss.obj b/contrib/action_nitro/assets/models/iss.obj
deleted file mode 100644
index 66fc5e9874..0000000000
--- a/contrib/action_nitro/assets/models/iss.obj
+++ /dev/null
@@ -1,7412 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: 'iss-low-poly.blend'
-# www.blender.org
-mtllib iss.mtl
-o ISS_Untitled
-v 9.008803 1.651852 -8.731386
-v 9.008803 2.345881 -8.731386
-v 9.008803 3.017658 -8.731386
-v 5.121459 1.651852 -8.731386
-v 5.121458 2.345881 -8.731386
-v 5.121458 3.017657 -8.731386
-v 1.201806 1.652170 -8.784288
-v 1.201807 2.345881 -8.667174
-v 1.201806 3.017657 -8.667174
-v 1.201806 3.017657 -8.860678
-v 1.201807 2.345881 -8.901156
-v 5.121459 1.651852 -8.828051
-v 5.121458 2.345881 -8.828051
-v 5.121458 3.017657 -8.828051
-v 9.008803 1.651852 -8.828051
-v 9.008803 2.345883 -8.828051
-v 9.008803 3.017658 -8.828051
-v 9.008803 1.651852 -8.779718
-v 9.008803 2.345882 -8.779718
-v 9.008803 3.017658 -8.779719
-v 5.121458 3.017657 -8.779719
-v 5.121459 1.651852 -8.779718
-v 9.008802 -0.240459 -8.731386
-v 9.008801 0.450014 -8.731386
-v 9.008803 1.140486 -8.731386
-v 5.121459 -0.240460 -8.731386
-v 5.121459 0.450013 -8.731386
-v 5.121459 1.140486 -8.731386
-v 1.201806 -0.240385 -8.731386
-v 1.201807 0.450014 -8.731386
-v 1.201806 1.133425 -8.731386
-v 1.201806 -0.240385 -8.784534
-v 1.201806 1.133424 -8.784534
-v 1.201806 -0.240385 -8.828051
-v 1.201807 0.450014 -8.828051
-v 1.201806 1.133424 -8.828051
-v 5.121459 -0.240460 -8.828051
-v 5.121459 0.450013 -8.828051
-v 5.121459 1.140486 -8.828051
-v 9.008802 -0.240459 -8.828051
-v 9.008801 0.450015 -8.828051
-v 9.008803 1.140486 -8.828051
-v 9.008801 -0.240459 -8.779718
-v 9.008801 0.450014 -8.779719
-v 9.008803 1.140486 -8.779718
-v 5.121459 1.140486 -8.779718
-v 5.121459 -0.240460 -8.779718
-v 9.008803 -2.117631 -8.731386
-v 9.008803 -1.435079 -8.731386
-v 9.008803 -0.751826 -8.731386
-v 5.121460 -2.117631 -8.731386
-v 5.121460 -1.435079 -8.731386
-v 5.121459 -0.751827 -8.731386
-v 1.201807 -2.117631 -8.731386
-v 1.201807 -1.435078 -8.731386
-v 1.201806 -0.751827 -8.731386
-v 1.201807 -2.117632 -8.784534
-v 1.201806 -0.748388 -8.784534
-v 1.201807 -2.117632 -8.828051
-v 1.201807 -1.435077 -8.828051
-v 1.201806 -0.751827 -8.828051
-v 5.121460 -2.117631 -8.828051
-v 5.121459 -1.435079 -8.828051
-v 5.121459 -0.751827 -8.828051
-v 9.008803 -2.117630 -8.828051
-v 9.008803 -1.435079 -8.828051
-v 9.008803 -0.751826 -8.828051
-v 9.008804 -2.117631 -8.779719
-v 9.008804 -1.435079 -8.779718
-v 9.008803 -0.751825 -8.779719
-v 5.121459 -0.751826 -8.779718
-v 5.121460 -2.117631 -8.779719
-v -1.619671 0.571115 -29.949284
-v -1.619671 0.675225 -29.949284
-v -1.619671 0.779336 -29.949284
-v -10.686809 0.571114 -29.949284
-v -10.686809 0.675224 -29.949284
-v -10.686809 0.779335 -29.949284
-v -19.753946 0.571113 -29.949284
-v -19.753946 0.675223 -29.949284
-v -19.753946 0.779334 -29.949284
-v -19.753946 0.571113 -31.014002
-v -19.753946 0.675223 -31.014002
-v -19.753942 0.779334 -31.013134
-v -19.753946 0.571113 -32.078720
-v -19.753946 0.675223 -32.078720
-v -19.753942 0.779334 -32.078350
-v -10.686809 0.571114 -32.078720
-v -10.686809 0.675224 -32.078720
-v -10.686809 0.779335 -32.078720
-v -1.619671 0.571115 -32.078720
-v -1.619671 0.675226 -32.078720
-v -1.619671 0.779336 -32.078720
-v -1.619671 0.571115 -31.014002
-v -1.619671 0.675225 -31.014002
-v -1.619671 0.779336 -31.014002
-v -10.686809 0.779335 -31.014002
-v -10.686809 0.571114 -31.014002
-v -19.551571 0.779334 -32.078350
-v -19.551571 0.675223 -32.078720
-v -19.551571 0.571113 -32.078720
-v -19.551571 0.571113 -31.014002
-v -19.551571 0.571113 -29.949284
-v -19.551571 0.675223 -29.949284
-v -19.551571 0.779334 -29.949387
-v -19.551571 0.779334 -31.013134
-v -1.857360 0.779336 -32.078720
-v -1.857360 0.675225 -32.078720
-v -1.857360 0.571115 -32.078720
-v -1.857360 0.571115 -31.014002
-v -1.857359 0.571115 -29.949284
-v -1.857359 0.675225 -29.949284
-v -1.857359 0.779336 -29.949284
-v -1.857360 0.779336 -31.014002
-v -13.839814 0.779335 -32.078720
-v -13.839814 0.675224 -32.078720
-v -13.839814 0.571113 -32.078720
-v -13.839814 0.571113 -31.014002
-v -13.839814 0.571113 -29.949284
-v -13.839814 0.675224 -29.949284
-v -13.839814 0.779334 -29.949284
-v -13.839814 0.779335 -31.014002
-v -1.619671 0.571114 -26.549715
-v -1.619671 0.675225 -26.549715
-v -1.619671 0.779336 -26.549715
-v -10.686806 0.571113 -26.549715
-v -10.686806 0.675224 -26.549715
-v -10.686806 0.779334 -26.549715
-v -19.753942 0.571112 -26.549715
-v -19.753942 0.675223 -26.549715
-v -19.753942 0.779333 -26.549715
-v -19.753942 0.571112 -27.614433
-v -19.753942 0.675223 -27.614433
-v -19.753942 0.779334 -27.614433
-v -19.753942 0.571112 -28.679152
-v -19.753942 0.675223 -28.679152
-v -19.753942 0.779334 -28.679152
-v -10.686806 0.571114 -28.679152
-v -10.686806 0.675224 -28.679152
-v -10.686806 0.779335 -28.679152
-v -1.619671 0.571115 -28.679152
-v -1.619671 0.675225 -28.679152
-v -1.619671 0.779336 -28.679152
-v -1.619671 0.571115 -27.614433
-v -1.619671 0.675225 -27.614433
-v -1.619671 0.779336 -27.614433
-v -10.686806 0.779335 -27.614433
-v -10.686806 0.571113 -27.614433
-v -19.551571 0.779334 -28.679152
-v -19.551571 0.675223 -28.679152
-v -19.551571 0.571113 -28.679152
-v -19.551571 0.571112 -27.614433
-v -19.551571 0.571112 -26.549715
-v -19.551571 0.675223 -26.549715
-v -19.551571 0.779333 -26.549715
-v -19.551571 0.779334 -27.614433
-v -1.857359 0.779336 -28.679152
-v -1.857359 0.675225 -28.679152
-v -1.857359 0.571115 -28.679152
-v -1.857359 0.571115 -27.614433
-v -1.857359 0.571114 -26.549715
-v -1.857359 0.675225 -26.549715
-v -1.857359 0.779336 -26.549715
-v -1.857359 0.779336 -27.614433
-v -13.839811 0.779334 -28.679152
-v -13.839811 0.675224 -28.679152
-v -13.839811 0.571113 -28.679152
-v -13.839811 0.571113 -27.614433
-v -13.839811 0.571113 -26.549715
-v -13.839811 0.675224 -26.549715
-v -13.839811 0.779334 -26.549715
-v -13.839811 0.779334 -27.614433
-v -19.551571 0.918224 -27.614433
-v -19.551571 0.918224 -28.679152
-v -19.753942 0.918224 -28.679152
-v -19.753942 0.918224 -27.614433
-v -19.551571 0.918224 -26.549715
-v -19.753942 0.918224 -26.549715
-v -19.753942 0.918224 -32.077980
-v -19.551571 0.918224 -32.077980
-v -19.551571 0.918224 -29.949488
-v -19.753942 0.918224 -29.949488
-v -19.551571 0.918224 -31.012264
-v -19.753942 0.918224 -31.012264
-v -1.619671 0.571114 -21.560667
-v -1.619671 0.675225 -21.560667
-v -1.619671 0.779335 -21.560667
-v -10.686809 0.571113 -21.560667
-v -10.686809 0.675224 -21.560667
-v -10.686809 0.779334 -21.560667
-v -19.753946 0.571112 -21.560667
-v -19.753946 0.675222 -21.560667
-v -19.753946 0.779333 -21.560667
-v -19.753946 0.571112 -22.625385
-v -19.753946 0.675223 -22.625385
-v -19.753942 0.779333 -22.624519
-v -19.753946 0.571112 -23.690105
-v -19.753946 0.675223 -23.690105
-v -19.753942 0.779333 -23.689735
-v -10.686809 0.571113 -23.690105
-v -10.686809 0.675224 -23.690105
-v -10.686809 0.779334 -23.690105
-v -1.619671 0.571114 -23.690105
-v -1.619671 0.675225 -23.690105
-v -1.619671 0.779335 -23.690105
-v -1.619671 0.571114 -22.625385
-v -1.619671 0.675225 -22.625385
-v -1.619671 0.779335 -22.625385
-v -10.686809 0.779334 -22.625385
-v -10.686809 0.571113 -22.625385
-v -19.551571 0.779333 -23.689735
-v -19.551571 0.675223 -23.690105
-v -19.551571 0.571112 -23.690105
-v -19.551571 0.571112 -22.625385
-v -19.551571 0.571112 -21.560667
-v -19.551571 0.675222 -21.560667
-v -19.551571 0.779333 -21.560770
-v -19.551571 0.779333 -22.624519
-v -1.857360 0.779335 -23.690105
-v -1.857360 0.675225 -23.690105
-v -1.857360 0.571114 -23.690105
-v -1.857360 0.571114 -22.625385
-v -1.857359 0.571114 -21.560667
-v -1.857359 0.675225 -21.560667
-v -1.857359 0.779335 -21.560667
-v -1.857360 0.779335 -22.625385
-v -13.839814 0.779334 -23.690105
-v -13.839814 0.675223 -23.690105
-v -13.839814 0.571113 -23.690105
-v -13.839814 0.571113 -22.625385
-v -13.839814 0.571113 -21.560667
-v -13.839814 0.675223 -21.560667
-v -13.839814 0.779334 -21.560667
-v -13.839814 0.779334 -22.625385
-v -1.619671 0.571114 -18.161102
-v -1.619671 0.675224 -18.161102
-v -1.619671 0.779335 -18.161102
-v -10.686806 0.571113 -18.161102
-v -10.686806 0.675223 -18.161102
-v -10.686806 0.779334 -18.161102
-v -19.753942 0.571112 -18.161102
-v -19.753942 0.675222 -18.161102
-v -19.753942 0.779333 -18.161102
-v -19.753942 0.571112 -19.225817
-v -19.753942 0.675222 -19.225817
-v -19.753942 0.779333 -19.225817
-v -19.753942 0.571112 -20.290537
-v -19.753942 0.675222 -20.290537
-v -19.753942 0.779333 -20.290537
-v -10.686806 0.571113 -20.290537
-v -10.686806 0.675223 -20.290537
-v -10.686806 0.779334 -20.290537
-v -1.619671 0.571114 -20.290537
-v -1.619671 0.675224 -20.290537
-v -1.619671 0.779335 -20.290537
-v -1.619671 0.571114 -19.225817
-v -1.619671 0.675224 -19.225817
-v -1.619671 0.779335 -19.225817
-v -10.686806 0.779334 -19.225817
-v -10.686806 0.571113 -19.225817
-v -19.551571 0.779333 -20.290537
-v -19.551571 0.675222 -20.290537
-v -19.551571 0.571112 -20.290537
-v -19.551571 0.571112 -19.225817
-v -19.551571 0.571112 -18.161102
-v -19.551571 0.675222 -18.161102
-v -19.551571 0.779333 -18.161102
-v -19.551571 0.779333 -19.225817
-v -1.857359 0.779335 -20.290537
-v -1.857359 0.675224 -20.290537
-v -1.857359 0.571114 -20.290537
-v -1.857359 0.571114 -19.225817
-v -1.857359 0.571114 -18.161102
-v -1.857359 0.675224 -18.161102
-v -1.857359 0.779335 -18.161102
-v -1.857359 0.779335 -19.225817
-v -13.839811 0.779334 -20.290537
-v -13.839811 0.675223 -20.290537
-v -13.839811 0.571112 -20.290537
-v -13.839811 0.571112 -19.225817
-v -13.839811 0.571112 -18.161102
-v -13.839811 0.675223 -18.161102
-v -13.839811 0.779333 -18.161102
-v -13.839811 0.779333 -19.225817
-v -19.551571 0.918223 -19.225817
-v -19.551571 0.918223 -20.290537
-v -19.753942 0.918223 -20.290537
-v -19.753942 0.918223 -19.225817
-v -19.551571 0.918223 -18.161102
-v -19.753942 0.918223 -18.161102
-v -19.753942 0.918223 -23.689363
-v -19.551571 0.918223 -23.689363
-v -19.551571 0.918223 -21.560871
-v -19.753942 0.918223 -21.560871
-v -19.551571 0.918223 -22.623648
-v -19.753942 0.918223 -22.623648
-v 2.192353 0.571115 -28.755394
-v 2.192353 0.675226 -28.755394
-v 2.192353 0.779336 -28.755394
-v 11.259491 0.571116 -28.755394
-v 11.259491 0.675227 -28.755394
-v 11.259491 0.779337 -28.755394
-v 20.326626 0.571117 -28.755394
-v 20.326626 0.675228 -28.755394
-v 20.326626 0.779338 -28.755394
-v 20.326626 0.571117 -27.690676
-v 20.326626 0.675228 -27.690676
-v 20.326626 0.779338 -27.691544
-v 20.326626 0.571117 -26.625957
-v 20.326626 0.675228 -26.625957
-v 20.326626 0.779338 -26.626328
-v 11.259491 0.571116 -26.625957
-v 11.259491 0.675227 -26.625957
-v 11.259491 0.779337 -26.625957
-v 2.192353 0.571115 -26.625957
-v 2.192353 0.675225 -26.625957
-v 2.192353 0.779336 -26.625957
-v 2.192353 0.571115 -27.690676
-v 2.192353 0.675226 -27.690676
-v 2.192353 0.779336 -27.690676
-v 11.259491 0.779337 -27.690676
-v 11.259491 0.571116 -27.690676
-v 20.124250 0.779338 -26.626328
-v 20.124250 0.675228 -26.625957
-v 20.124250 0.571117 -26.625957
-v 20.124250 0.571117 -27.690676
-v 20.124250 0.571117 -28.755394
-v 20.124250 0.675228 -28.755394
-v 20.124250 0.779338 -28.755291
-v 20.124250 0.779338 -27.691544
-v 2.430042 0.779336 -26.625957
-v 2.430042 0.675226 -26.625957
-v 2.430042 0.571115 -26.625957
-v 2.430042 0.571115 -27.690676
-v 2.430041 0.571115 -28.755394
-v 2.430041 0.675226 -28.755394
-v 2.430041 0.779336 -28.755394
-v 2.430042 0.779336 -27.690676
-v 14.412498 0.779338 -26.625957
-v 14.412498 0.675227 -26.625957
-v 14.412498 0.571116 -26.625957
-v 14.412498 0.571116 -27.690676
-v 14.412498 0.571117 -28.755394
-v 14.412498 0.675227 -28.755394
-v 14.412498 0.779338 -28.755394
-v 14.412498 0.779338 -27.690676
-v 2.192353 0.571115 -32.154964
-v 2.192353 0.675226 -32.154964
-v 2.192353 0.779337 -32.154964
-v 11.259489 0.571117 -32.154964
-v 11.259489 0.675227 -32.154964
-v 11.259489 0.779338 -32.154964
-v 20.326622 0.571118 -32.154964
-v 20.326622 0.675228 -32.154964
-v 20.326622 0.779339 -32.154964
-v 20.326622 0.571117 -31.090244
-v 20.326622 0.675228 -31.090244
-v 20.326622 0.779339 -31.090244
-v 20.326622 0.571117 -30.025526
-v 20.326622 0.675228 -30.025526
-v 20.326622 0.779339 -30.025526
-v 11.259489 0.571116 -30.025526
-v 11.259489 0.675227 -30.025526
-v 11.259489 0.779337 -30.025526
-v 2.192353 0.571115 -30.025526
-v 2.192353 0.675226 -30.025526
-v 2.192353 0.779336 -30.025526
-v 2.192353 0.571115 -31.090244
-v 2.192353 0.675226 -31.090244
-v 2.192353 0.779336 -31.090244
-v 11.259489 0.779338 -31.090244
-v 11.259489 0.571116 -31.090244
-v 20.124250 0.779338 -30.025526
-v 20.124250 0.675228 -30.025526
-v 20.124250 0.571117 -30.025526
-v 20.124250 0.571117 -31.090244
-v 20.124250 0.571118 -32.154964
-v 20.124250 0.675228 -32.154964
-v 20.124250 0.779339 -32.154964
-v 20.124250 0.779339 -31.090244
-v 2.430041 0.779336 -30.025526
-v 2.430041 0.675226 -30.025526
-v 2.430041 0.571115 -30.025526
-v 2.430041 0.571115 -31.090244
-v 2.430041 0.571115 -32.154964
-v 2.430041 0.675226 -32.154964
-v 2.430041 0.779337 -32.154964
-v 2.430041 0.779336 -31.090244
-v 14.412494 0.779338 -30.025526
-v 14.412494 0.675227 -30.025526
-v 14.412494 0.571117 -30.025526
-v 14.412494 0.571117 -31.090244
-v 14.412494 0.571117 -32.154964
-v 14.412494 0.675227 -32.154964
-v 14.412494 0.779338 -32.154964
-v 14.412494 0.779338 -31.090244
-v 20.124250 0.918229 -31.090244
-v 20.124250 0.918229 -30.025526
-v 20.326622 0.918229 -30.025526
-v 20.326622 0.918229 -31.090244
-v 20.124250 0.918229 -32.154964
-v 20.326622 0.918229 -32.154964
-v 20.326622 0.918228 -26.626698
-v 20.124250 0.918228 -26.626698
-v 20.124250 0.918228 -28.755190
-v 20.326622 0.918229 -28.755190
-v 20.124250 0.918228 -27.692413
-v 20.326622 0.918228 -27.692413
-v -0.407079 -0.219039 0.496218
-v -0.567965 0.024332 0.496218
-v -0.567965 0.450011 0.496218
-v -0.567965 0.875689 0.496218
-v -0.407079 1.119061 0.496218
-v -0.567965 -0.401344 -20.777882
-v -0.567965 0.024334 -20.777882
-v -0.567965 0.450012 -20.777882
-v -0.567965 0.875691 -20.777882
-v -0.567965 1.301369 -20.777882
-v -0.567965 -0.401344 -29.464630
-v -0.567965 0.024335 -29.464630
-v -0.567965 0.450013 -29.464630
-v -0.567965 0.875692 -29.464630
-v -0.567965 1.301370 -29.464630
-v -0.142286 -0.401344 -29.464630
-v -0.142286 0.024335 -29.464630
-v -0.142286 0.450013 -29.464630
-v -0.142286 0.875692 -29.464630
-v -0.142287 1.301370 -29.464630
-v 0.283392 -0.401344 -29.464630
-v 0.283392 0.024335 -29.464630
-v 0.283392 0.450013 -29.464630
-v 0.283392 0.875692 -29.464630
-v 0.283392 1.301370 -29.464630
-v 0.709070 -0.401344 -29.464630
-v 0.709070 0.024335 -29.464630
-v 0.709070 0.450013 -29.464630
-v 0.709070 0.875692 -29.464630
-v 0.709070 1.301370 -29.464630
-v 1.134749 -0.401343 -29.464630
-v 1.134749 0.024335 -29.464630
-v 1.134749 0.450013 -29.464630
-v 1.134749 0.875692 -29.464630
-v 1.134749 1.301370 -29.464630
-v 1.134749 -0.401344 -20.777882
-v 1.134749 0.024334 -20.777882
-v 1.134749 0.450013 -20.777882
-v 1.134749 0.875691 -20.777882
-v 1.134749 1.301370 -20.777882
-v 0.973863 -0.219039 0.496218
-v 1.134749 0.024332 0.496218
-v 1.134749 0.450011 0.496218
-v 1.134749 0.875689 0.496218
-v 0.973863 1.119061 0.496218
-v 0.709070 1.301369 -20.777882
-v 0.602992 1.301368 0.496218
-v 0.283392 1.301369 -20.777882
-v 0.283392 1.301368 0.496218
-v -0.142287 1.301369 -20.777882
-v -0.142286 1.301368 0.496218
-v 0.709070 -0.401344 -20.777882
-v 0.602992 -0.401346 0.496218
-v 0.283392 -0.401344 -20.777882
-v 0.283392 -0.401346 0.496218
-v -0.142286 -0.401344 -20.777882
-v -0.142286 -0.401346 0.496218
-v 0.283392 1.301370 -29.099638
-v 0.709070 1.301370 -29.099638
-v 1.134749 1.301370 -29.099638
-v 1.134749 0.875692 -29.099638
-v 1.134749 0.450013 -29.099638
-v 1.134749 0.024335 -29.099638
-v 1.134749 -0.401343 -29.099638
-v 0.709070 -0.401344 -29.099638
-v 0.283392 -0.401344 -29.099638
-v -0.142286 -0.401344 -29.099638
-v -0.567965 -0.401344 -29.099638
-v -0.567965 0.024335 -29.099638
-v -0.567965 0.450013 -29.099638
-v -0.567965 0.875692 -29.099638
-v -0.567965 1.301370 -29.099638
-v -0.142287 1.301370 -29.099638
-v 0.499914 1.301369 -20.777882
-v 0.499914 1.301370 -29.099638
-v 0.499914 1.301370 -29.464630
-v 0.499915 0.875692 -29.464630
-v 0.499915 0.450013 -29.464630
-v 0.499915 0.024335 -29.464630
-v 0.499915 -0.401344 -29.464630
-v 0.499915 -0.401344 -29.099638
-v 0.499915 -0.401344 -20.777882
-v -0.567965 1.301370 -27.050383
-v -0.567965 0.875691 -27.050383
-v -0.567965 0.450013 -27.050383
-v -0.567965 0.024335 -27.050383
-v -0.567965 -0.401344 -27.050383
-v -0.142286 -0.401344 -27.050383
-v 0.283392 -0.401344 -27.050383
-v 0.499915 -0.401344 -27.050383
-v 0.709070 -0.401344 -27.050383
-v 1.134749 -0.401344 -27.050383
-v 1.134749 0.024335 -27.050383
-v 1.134749 0.450013 -27.050383
-v 1.134749 0.875692 -27.050383
-v 1.134749 1.301370 -27.050383
-v 0.709070 1.301370 -27.050383
-v 0.499914 1.301370 -27.050383
-v 0.283392 1.301370 -27.050383
-v -0.142287 1.301370 -27.050383
-v -0.567965 1.301369 -18.817778
-v -0.567965 0.875691 -18.817778
-v -0.567965 0.450012 -18.817778
-v -0.567965 0.024334 -18.817778
-v -0.567965 -0.401345 -18.817778
-v -0.142286 -0.401345 -18.817778
-v 0.283392 -0.401345 -18.817778
-v 0.499915 -0.401344 -18.817778
-v 0.709071 -0.401344 -18.817778
-v 1.134749 -0.401344 -18.817778
-v 1.134749 0.024334 -18.817778
-v 1.134749 0.450012 -18.817778
-v 1.134749 0.875691 -18.817778
-v 1.134749 1.301369 -18.817778
-v 0.709071 1.301369 -18.817778
-v 0.499914 1.301369 -18.817778
-v 0.283392 1.301369 -18.817778
-v -0.142287 1.301369 -18.817778
-v -0.567965 1.301369 -21.168400
-v -0.567965 0.875691 -21.168400
-v -0.567965 0.450012 -21.168400
-v -0.567965 0.024334 -21.168400
-v -0.567965 -0.401344 -21.168400
-v -0.142286 -0.401344 -21.168400
-v 0.283392 -0.401344 -21.168400
-v 0.499915 -0.401344 -21.168400
-v 0.709070 -0.401344 -21.168400
-v 1.134749 -0.401344 -21.168400
-v 1.134749 0.024334 -21.168400
-v 1.134749 0.450013 -21.168400
-v 1.134749 0.875691 -21.168400
-v 1.134749 1.301370 -21.168400
-v 0.709070 1.301370 -21.168400
-v 0.499914 1.301369 -21.168400
-v 0.283392 1.301369 -21.168400
-v -0.142287 1.301369 -21.168400
-v 0.499913 9.560802 -27.050383
-v 0.283391 9.560802 -27.050383
-v 0.499913 9.560802 -29.099638
-v 0.283391 9.560802 -29.099638
-v 0.499913 9.560801 -18.817778
-v 0.283391 9.560801 -18.817778
-v 0.499913 9.560801 -20.777882
-v 0.283391 9.560801 -20.777882
-v -1.492831 0.450013 -29.099638
-v -1.492831 0.875692 -29.099638
-v -1.492831 0.875692 -29.464630
-v -1.492831 0.450013 -29.464630
-v -1.492830 0.450012 -20.777882
-v -1.492831 0.875691 -20.777882
-v -1.492831 0.875691 -21.168400
-v -1.492830 0.450012 -21.168400
-v -0.407079 1.119062 -18.539156
-v -0.567965 0.875691 -18.539156
-v -0.567965 0.450012 -18.539156
-v -0.567965 0.024334 -18.539156
-v -0.407079 -0.219038 -18.539156
-v -0.142286 -0.401345 -18.539156
-v 0.283392 -0.401345 -18.539156
-v 0.499915 -0.401345 -18.539156
-v 0.709071 -0.401344 -18.539156
-v 0.973863 -0.219038 -18.539156
-v 1.134749 0.024334 -18.539156
-v 1.134749 0.450012 -18.539156
-v 1.134749 0.875691 -18.539156
-v 0.973863 1.119062 -18.539156
-v 0.709071 1.301369 -18.539156
-v 0.499914 1.301369 -18.539156
-v 0.283392 1.301369 -18.539156
-v -0.142287 1.301369 -18.539156
-v 1.985611 0.450013 -29.464630
-v 1.985611 0.875692 -29.464630
-v 1.985611 0.875692 -29.099638
-v 1.985611 0.450013 -29.099638
-v 1.985611 0.450013 -21.168400
-v 1.985611 0.875691 -21.168400
-v 1.985611 0.875691 -20.777882
-v 1.985611 0.450013 -20.777882
-v 2.162425 0.571114 -21.636942
-v 2.162425 0.675225 -21.636942
-v 2.162425 0.675225 -20.366812
-v 2.162425 0.571114 -20.366812
-v 1.134749 0.875691 -8.351144
-v 1.134751 0.450012 -8.351145
-v 1.134749 0.024334 -8.351144
-v 0.973863 -0.219038 -8.351144
-v 0.709071 -0.401345 -8.351144
-v 0.499915 -0.401345 -8.351146
-v 0.283392 -0.401345 -8.351146
-v -0.142286 -0.401345 -8.351144
-v -0.407079 -0.219039 -8.351144
-v -0.567965 0.024333 -8.351144
-v -0.567965 0.450011 -8.351146
-v -0.567965 0.875690 -8.351144
-v -0.407079 1.119061 -8.351144
-v -0.142286 1.301368 -8.351144
-v 0.283392 1.301368 -8.351146
-v 0.499915 1.301368 -8.351146
-v 0.709071 1.301368 -8.351144
-v 0.973863 1.119062 -8.351144
-v 1.134751 0.450012 -9.221807
-v 1.134749 0.024334 -9.221807
-v 0.973863 -0.219038 -9.221807
-v 0.709071 -0.401345 -9.221807
-v 0.499915 -0.401345 -9.221807
-v 0.283392 -0.401345 -9.221807
-v -0.142286 -0.401345 -9.221807
-v -0.407079 -0.219039 -9.221807
-v -0.567965 0.024333 -9.221807
-v -0.567965 0.450011 -9.221807
-v -0.567965 0.875690 -9.221807
-v -0.407079 1.119061 -9.221807
-v -0.142286 1.301368 -9.221807
-v 0.283392 1.301368 -9.221807
-v 0.499915 1.301368 -9.221807
-v 0.709071 1.301368 -9.221807
-v 0.973863 1.119062 -9.221807
-v 1.134749 0.875691 -9.221807
-v 1.201807 0.450012 -9.221807
-v 1.201807 0.024335 -9.221807
-v 1.201807 0.450012 -8.351145
-v 1.201807 0.024335 -8.351144
-v 1.201806 0.875691 -9.221807
-v 1.201806 0.875691 -8.351144
-v 1.134750 -2.117632 -9.221807
-v 1.134750 -2.117633 -8.351144
-v 1.201807 -2.117632 -9.221807
-v 1.201807 -2.117632 -8.351144
-v 1.134749 3.017656 -9.221807
-v 1.134749 3.017656 -8.351144
-v 1.201806 3.017656 -8.351144
-v 1.201806 3.017656 -9.221807
-v 1.134750 -2.117632 -8.901156
-v 1.134749 0.024333 -8.901156
-v 0.973863 -0.219038 -8.901156
-v 0.709071 -0.401345 -8.901156
-v 0.499915 -0.401345 -8.901157
-v 0.283392 -0.401345 -8.901157
-v -0.142286 -0.401345 -8.901156
-v -0.407079 -0.219039 -8.901156
-v -0.567965 0.024333 -8.901156
-v -0.567965 0.450011 -8.901157
-v -0.567965 0.875690 -8.901156
-v -0.407079 1.119061 -8.901156
-v -0.142286 1.301368 -8.901156
-v 0.283392 1.301368 -8.901157
-v 0.499915 1.301368 -8.901157
-v 0.709071 1.301368 -8.901156
-v 0.973863 1.119062 -8.901156
-v 1.134749 0.875690 -8.901156
-v 1.134749 3.017656 -8.901156
-v 1.134750 -2.117632 -8.667174
-v 1.134749 0.024333 -8.667174
-v 0.973863 -0.219038 -8.667174
-v 0.709071 -0.401345 -8.667174
-v 0.499915 -0.401345 -8.667176
-v 0.283392 -0.401345 -8.667176
-v -0.142286 -0.401345 -8.667174
-v -0.407079 -0.219039 -8.667174
-v -0.567965 0.024333 -8.667174
-v -0.567965 0.450011 -8.667176
-v -0.567965 0.875690 -8.667174
-v -0.407079 1.119061 -8.667174
-v -0.142286 1.301368 -8.667174
-v 0.283392 1.301368 -8.667176
-v 0.499915 1.301368 -8.667176
-v 0.709071 1.301368 -8.667174
-v 0.973863 1.119062 -8.667174
-v 1.134749 0.875690 -8.667174
-v 1.134749 3.017656 -8.667174
-v 2.162425 0.779335 -20.366812
-v 11.229562 0.571115 -20.366812
-v 11.229562 0.675226 -20.366812
-v 11.229562 0.779337 -20.366812
-v 20.296698 0.571116 -20.366812
-v 20.296698 0.675227 -20.366812
-v 20.296698 0.779338 -20.366812
-v 20.296698 0.571116 -19.302092
-v 20.296698 0.675227 -19.302092
-v 20.296694 0.779338 -19.302959
-v 20.296698 0.571116 -18.237373
-v 20.296698 0.675227 -18.237373
-v 20.296694 0.779337 -18.237743
-v 11.229562 0.571115 -18.237373
-v 11.229562 0.675226 -18.237373
-v 11.229562 0.779336 -18.237373
-v 2.162425 0.571114 -18.237373
-v 2.162425 0.675225 -18.237373
-v 2.162425 0.779335 -18.237373
-v 2.162425 0.571114 -19.302092
-v 2.162425 0.675225 -19.302092
-v 2.162425 0.779335 -19.302092
-v 11.229562 0.779337 -19.302092
-v 11.229562 0.571115 -19.302092
-v 20.094322 0.779337 -18.237743
-v 20.094322 0.675227 -18.237373
-v 20.094322 0.571116 -18.237373
-v 20.094322 0.571116 -19.302092
-v 20.094322 0.571116 -20.366812
-v 20.094322 0.675227 -20.366812
-v 20.094322 0.779338 -20.366707
-v 20.094322 0.779338 -19.302959
-v 2.400114 0.779335 -18.237373
-v 2.400114 0.675225 -18.237373
-v 2.400114 0.571114 -18.237373
-v 2.400114 0.571114 -19.302092
-v 2.400113 0.571114 -20.366812
-v 2.400113 0.675225 -20.366812
-v 2.400113 0.779336 -20.366812
-v 2.400114 0.779335 -19.302092
-v 14.382567 0.779337 -18.237373
-v 14.382567 0.675226 -18.237373
-v 14.382567 0.571116 -18.237373
-v 14.382567 0.571116 -19.302092
-v 14.382567 0.571116 -20.366812
-v 14.382567 0.675226 -20.366812
-v 14.382567 0.779337 -20.366812
-v 14.382567 0.779337 -19.302092
-v 2.162425 0.571115 -23.766378
-v 2.162425 0.675225 -23.766378
-v 2.162425 0.779336 -23.766378
-v 11.229560 0.571116 -23.766378
-v 11.229560 0.675226 -23.766378
-v 11.229560 0.779337 -23.766378
-v 20.296694 0.571117 -23.766378
-v 20.296694 0.675227 -23.766378
-v 20.296694 0.779338 -23.766378
-v 20.296694 0.571117 -22.701660
-v 20.296694 0.675227 -22.701660
-v 20.296694 0.779338 -22.701660
-v 20.296694 0.571117 -21.636942
-v 20.296694 0.675227 -21.636942
-v 20.296694 0.779338 -21.636942
-v 11.229560 0.571116 -21.636942
-v 11.229560 0.675226 -21.636942
-v 11.229560 0.779337 -21.636942
-v 2.162425 0.779336 -21.636942
-v 2.162425 0.571115 -22.701660
-v 2.162425 0.675225 -22.701660
-v 2.162425 0.779336 -22.701660
-v 11.229560 0.779337 -22.701660
-v 11.229560 0.571116 -22.701660
-v 20.094322 0.779338 -21.636942
-v 20.094322 0.675227 -21.636942
-v 20.094322 0.571117 -21.636942
-v 20.094322 0.571117 -22.701660
-v 20.094322 0.571117 -23.766378
-v 20.094322 0.675227 -23.766378
-v 20.094322 0.779338 -23.766378
-v 20.094322 0.779338 -22.701660
-v 2.400113 0.779336 -21.636942
-v 2.400113 0.675225 -21.636942
-v 2.400113 0.571114 -21.636942
-v 2.400113 0.571115 -22.701660
-v 2.400113 0.571115 -23.766378
-v 2.400113 0.675225 -23.766378
-v 2.400113 0.779336 -23.766378
-v 2.400113 0.779336 -22.701660
-v 14.382564 0.779337 -21.636942
-v 14.382564 0.675227 -21.636942
-v 14.382564 0.571116 -21.636942
-v 14.382564 0.571116 -22.701660
-v 14.382564 0.571116 -23.766378
-v 14.382564 0.675227 -23.766378
-v 14.382564 0.779337 -23.766378
-v 14.382564 0.779337 -22.701660
-v 20.094322 0.918228 -22.701660
-v 20.094322 0.918228 -21.636942
-v 20.296694 0.918228 -21.636942
-v 20.296694 0.918228 -22.701660
-v 20.094322 0.918228 -23.766378
-v 20.296694 0.918228 -23.766378
-v 20.296694 0.918228 -18.238113
-v 20.094322 0.918228 -18.238113
-v 20.094322 0.918228 -20.366606
-v 20.296694 0.918228 -20.366606
-v 20.094322 0.918228 -19.303829
-v 20.296694 0.918228 -19.303829
-v 1.134749 1.652489 -8.351144
-v 1.134749 1.652489 -8.667174
-v 1.134749 1.652489 -8.901156
-v 1.134749 1.652489 -9.221807
-v 1.201807 1.652490 -9.221807
-v 1.201807 1.652490 -8.351144
-v 1.134749 -0.748390 -8.351144
-v 1.201806 -0.748388 -8.351144
-v 1.201806 -0.748388 -9.221807
-v 1.134749 -0.748390 -9.221807
-v 1.134749 -0.748390 -8.901156
-v 1.134749 -0.748390 -8.667174
-v 1.201806 1.133424 -8.351144
-v 1.134750 1.133425 -8.351144
-v 1.134749 1.133424 -8.667174
-v 1.134749 1.133424 -8.901156
-v 1.134750 1.133425 -9.221807
-v 1.201806 1.133424 -9.221807
-v 1.201806 1.133424 -8.901156
-v 1.201806 1.133424 -8.667174
-v 1.201806 -0.240385 -8.351144
-v 1.201806 -0.240385 -8.667174
-v 1.201806 -0.240385 -8.901156
-v 1.201806 -0.240385 -9.221807
-v 1.134749 -0.240387 -9.221807
-v 1.134749 -0.240387 -8.901156
-v 1.134749 -0.240387 -8.667174
-v 1.134749 -0.240387 -8.351144
-v 1.134750 -2.117632 -8.784534
-v 1.134749 -0.748390 -8.784534
-v 1.134749 -0.240387 -8.784534
-v 1.134749 0.024333 -8.784534
-v 0.973863 -0.219038 -8.784534
-v 0.709071 -0.401345 -8.784534
-v 0.499915 -0.401345 -8.784534
-v 0.283392 -0.401345 -8.784534
-v -0.142286 -0.401345 -8.784534
-v -0.407079 -0.219039 -8.784534
-v -0.567965 0.024333 -8.784534
-v -0.567965 0.450011 -8.784535
-v -0.567965 0.875690 -8.784534
-v -0.407079 1.119061 -8.784534
-v -0.142286 1.301368 -8.784534
-v 0.283392 1.301368 -8.784534
-v 0.499915 1.301368 -8.784535
-v 0.709071 1.301368 -8.784534
-v 0.973863 1.119062 -8.784534
-v 1.134749 0.875690 -8.784534
-v 1.134749 1.133424 -8.784534
-v 1.134749 1.652489 -8.784534
-v 1.134749 3.017656 -8.779718
-v 1.134749 -1.435079 -9.221807
-v 1.134749 -1.435080 -8.901156
-v 1.134749 -1.435080 -8.784534
-v 1.134749 -1.435080 -8.667174
-v 1.134749 -1.435079 -8.351144
-v 1.201807 -1.435078 -8.351144
-v 1.201807 -1.435078 -9.221807
-v 1.134749 2.345879 -9.221807
-v 1.201807 2.345881 -9.221807
-v 1.201807 2.345880 -8.351144
-v 1.134749 2.345879 -8.351144
-v 1.134749 2.345879 -8.667174
-v 1.134749 2.345879 -8.779719
-v 1.134749 2.345879 -8.901156
-v 0.937660 7.649418 -29.099638
-v 0.937660 7.649418 -27.050383
-v 0.721137 7.649418 -27.050383
-v 0.721137 7.649418 -29.099638
-v 0.499914 5.476038 -29.099638
-v 0.499914 5.476038 -27.050383
-v 0.283391 5.476038 -27.050383
-v 0.283391 5.476038 -29.099638
-v 1.046128 3.326023 -29.099634
-v 1.046128 3.326023 -27.050383
-v 0.829605 3.326023 -27.050383
-v 0.829605 3.326023 -29.099634
-v 0.721136 7.619881 -20.777882
-v 0.937660 7.619881 -20.777882
-v 0.937660 7.619881 -18.817778
-v 0.721137 7.619880 -18.817778
-v 0.283391 5.581431 -20.777882
-v 0.499914 5.581431 -20.777882
-v 0.499914 5.581430 -18.817778
-v 0.283391 5.581430 -18.817778
-v 0.829605 3.382049 -20.777882
-v 1.046128 3.382049 -20.777882
-v 1.046128 3.382048 -18.817778
-v 0.829605 3.382048 -18.817778
-v 0.973863 1.119062 -12.013901
-v 1.134749 0.875690 -12.013901
-v 1.134749 0.450012 -12.013901
-v 1.134749 0.024333 -12.013901
-v 0.973863 -0.219038 -12.013901
-v 0.709071 -0.401345 -12.166787
-v 0.499915 -0.401345 -12.166787
-v 0.283392 -0.401345 -12.166787
-v -0.142286 -0.401345 -12.166787
-v -0.407079 -0.219038 -12.013901
-v -0.567965 0.024333 -12.013901
-v -0.567965 0.450012 -12.013901
-v -0.567965 0.875690 -12.013901
-v -0.407079 1.119062 -12.013901
-v -0.142287 1.301369 -12.013901
-v 0.283392 1.301369 -12.013901
-v 0.499914 1.301369 -12.013901
-v 0.709071 1.301369 -12.013901
-v 0.973863 1.119062 -12.589344
-v 1.134749 0.875690 -12.589344
-v 1.134749 0.450012 -12.589344
-v 1.134749 0.024333 -12.589344
-v 0.973863 -0.219038 -12.589344
-v 0.709071 -0.401345 -12.436458
-v 0.499915 -0.401345 -12.436458
-v 0.283392 -0.401345 -12.436458
-v -0.142286 -0.401345 -12.436458
-v -0.407079 -0.219038 -12.589344
-v -0.567965 0.024333 -12.589344
-v -0.567965 0.450012 -12.589344
-v -0.567965 0.875690 -12.589344
-v -0.407079 1.119062 -12.589344
-v -0.142287 1.301369 -12.589344
-v 0.283392 1.301369 -12.589344
-v 0.499914 1.301369 -12.589344
-v 0.709071 1.301369 -12.589344
-v 0.709001 -1.274205 -12.436458
-v 0.412779 -1.274205 -12.436458
-v 0.709001 -1.274205 -12.166787
-v 0.412779 -1.274205 -12.166787
-v 0.283392 -1.274205 -12.436458
-v 0.283392 -1.274205 -12.166787
-v -0.136777 -1.274205 -12.436458
-v -0.136777 -1.274205 -12.166787
-v 1.484052 -0.401345 -12.436458
-v 1.484052 -0.401345 -12.166787
-v 1.484052 -1.274205 -12.166787
-v 1.484052 -1.274205 -12.436458
-v -0.805945 -0.401345 -12.436458
-v -0.805945 -0.401345 -12.166787
-v -0.799959 -1.274205 -12.436458
-v -0.799959 -1.274205 -12.166787
-v 0.709001 -1.427194 -12.436458
-v 0.412779 -1.427194 -12.436458
-v 0.709001 -1.427194 -12.166787
-v 0.412779 -1.427194 -12.166787
-v 0.709001 -1.274205 -12.648116
-v 0.412779 -1.274205 -12.648116
-v 0.709001 -1.427194 -12.648116
-v 0.412779 -1.427194 -12.648116
-v 0.709001 -1.527088 -12.436458
-v 0.412779 -1.527088 -12.436458
-v 0.412779 -1.527088 -12.648116
-v 0.709001 -1.527088 -12.648116
-v 0.915556 -1.673144 -12.240674
-v 0.206224 -1.673144 -12.240674
-v 0.206224 -1.673144 -12.843901
-v 0.915556 -1.673143 -12.843901
-v 0.637735 -1.609145 -12.476937
-v 0.484046 -1.609145 -12.476937
-v 0.484046 -1.609145 -12.607636
-v 0.637735 -1.609145 -12.607636
-v 0.104509 -1.673144 -12.555409
-v 0.484046 -1.609145 -12.545131
-v 0.637735 -1.609145 -12.545131
-v 1.017272 -1.673143 -12.555409
-v 0.709001 -1.527088 -12.546891
-v 0.709001 -1.427194 -12.546891
-v 0.709001 -1.274205 -12.546891
-v 0.412779 -1.274205 -12.546891
-v 0.412779 -1.427194 -12.546891
-v 0.412779 -1.527088 -12.546891
-v 0.599990 -0.401345 -8.351145
-v 0.599990 -0.401345 -8.667175
-v 0.599990 -0.401345 -8.784534
-v 0.599990 -0.401345 -8.901156
-v 0.599990 -0.401345 -9.221807
-v 0.599990 -0.401345 -12.166787
-v 0.554513 -1.274205 -12.166787
-v 0.554513 -1.427194 -12.166787
-v 0.554513 -1.427194 -12.436458
-v 0.554513 -1.527088 -12.436458
-v 0.545619 -1.673144 -12.109035
-v 0.557582 -1.609145 -12.476937
-v 0.557582 -1.609145 -12.545131
-v 0.557582 -1.609145 -12.607636
-v 0.545619 -1.673143 -12.975540
-v 0.554513 -1.527088 -12.648116
-v 0.554513 -1.427194 -12.648116
-v 0.554513 -1.274205 -12.648116
-v 0.554513 -1.274205 -12.546891
-v 0.554513 -1.274205 -12.436458
-v 0.599990 -0.401345 -12.436458
-v 0.599990 -0.401344 -18.539156
-v 0.599990 -0.401344 -18.817778
-v 0.599990 -0.401344 -20.777882
-v 0.599990 -0.401344 -21.168400
-v 0.599990 -0.401344 -27.050383
-v 0.599990 -0.401344 -29.099638
-v 0.599990 -0.401344 -29.464630
-v 0.599990 0.024335 -29.464630
-v 0.599990 0.450013 -29.464630
-v 0.599990 0.875692 -29.464630
-v 0.599990 1.301370 -29.464630
-v 0.599990 1.301370 -29.099638
-v 0.599990 1.301370 -27.050383
-v 0.599990 1.301370 -21.168400
-v 0.599990 1.301369 -20.777882
-v 0.599990 1.301369 -18.817778
-v 0.599990 1.301369 -18.539156
-v 0.599990 1.301369 -12.589344
-v 0.599990 1.301369 -12.013901
-v 0.599990 1.301368 -9.221807
-v 0.599990 1.301368 -8.901156
-v 0.599990 1.301368 -8.784534
-v 0.599990 1.301368 -8.667175
-v 0.599990 1.301368 -8.351145
-v 9.008803 1.651850 8.736988
-v 9.008803 2.345880 8.736988
-v 5.121458 2.345879 8.736988
-v 5.121459 1.651850 8.736988
-v 9.008803 3.017656 8.736987
-v 5.121458 3.017656 8.736988
-v 1.201807 2.345880 8.672776
-v 1.201806 1.652169 8.789890
-v 1.201806 3.017655 8.672776
-v 1.201807 2.345879 8.906758
-v 5.121458 2.345879 8.833652
-v 5.121459 1.651850 8.833652
-v 1.201806 3.017656 8.866279
-v 5.121458 3.017656 8.833652
-v 9.008803 2.345881 8.833652
-v 9.008803 1.651850 8.833652
-v 9.008803 3.017656 8.833652
-v 9.008803 2.345880 8.785319
-v 9.008803 1.651851 8.785319
-v 9.008803 3.017657 8.785320
-v 5.121458 3.017655 8.785320
-v 5.121459 1.651851 8.785319
-v 9.008802 -0.240460 8.736988
-v 9.008801 0.450012 8.736988
-v 5.121459 0.450011 8.736988
-v 5.121459 -0.240462 8.736988
-v 9.008803 1.140485 8.736988
-v 5.121459 1.140484 8.736988
-v 1.201807 0.450012 8.736988
-v 1.201806 -0.240386 8.736988
-v 1.201806 1.133423 8.736988
-v 1.201806 -0.240387 8.833652
-v 1.201807 0.450013 8.833652
-v 5.121459 0.450011 8.833652
-v 5.121459 -0.240462 8.833652
-v 1.201806 1.133423 8.833652
-v 5.121459 1.140484 8.833652
-v 9.008801 0.450013 8.833652
-v 9.008802 -0.240461 8.833652
-v 9.008803 1.140484 8.833652
-v 9.008801 0.450012 8.785320
-v 9.008801 -0.240460 8.785319
-v 9.008803 1.140485 8.785319
-v 5.121459 1.140484 8.785319
-v 1.201806 1.133423 8.790135
-v 5.121459 -0.240462 8.785319
-v 1.201806 -0.240387 8.790135
-v 9.008803 -2.117632 8.736988
-v 9.008803 -1.435080 8.736988
-v 5.121460 -1.435081 8.736988
-v 5.121460 -2.117632 8.736988
-v 9.008803 -0.751827 8.736988
-v 5.121459 -0.751828 8.736988
-v 1.201807 -1.435079 8.736988
-v 1.201807 -2.117633 8.736988
-v 1.201806 -0.751829 8.736988
-v 1.201807 -2.117633 8.833652
-v 1.201807 -1.435079 8.833652
-v 5.121459 -1.435081 8.833652
-v 5.121460 -2.117633 8.833652
-v 1.201806 -0.751828 8.833652
-v 5.121459 -0.751828 8.833652
-v 9.008803 -1.435080 8.833652
-v 9.008803 -2.117631 8.833652
-v 9.008803 -0.751827 8.833652
-v 9.008804 -1.435080 8.785319
-v 9.008804 -2.117633 8.785320
-v 9.008803 -0.751827 8.785320
-v 5.121459 -0.751828 8.785319
-v 1.201806 -0.748389 8.790135
-v 5.121460 -2.117632 8.785320
-v 1.201807 -2.117634 8.790135
-v -1.857359 0.571109 29.954885
-v -1.857359 0.675220 29.954885
-v -10.686808 0.675219 29.954885
-v -10.686808 0.571108 29.954885
-v -1.857359 0.779331 29.954885
-v -10.686808 0.779330 29.954885
-v -19.551571 0.571107 29.954885
-v -19.551571 0.675218 29.954885
-v -19.753946 0.675218 29.954885
-v -19.753946 0.571107 29.954885
-v -19.551571 0.779329 29.954988
-v -19.753946 0.779328 29.954885
-v -19.753946 0.675218 31.019604
-v -19.753946 0.571107 31.019604
-v -19.753942 0.779328 31.018738
-v -19.753946 0.675218 32.084324
-v -19.753946 0.571107 32.084324
-v -19.753942 0.779328 32.083954
-v -19.551571 0.675218 32.084324
-v -19.551571 0.571107 32.084324
-v -19.551571 0.779328 32.083954
-v -10.686808 0.571108 32.084324
-v -10.686808 0.675219 32.084324
-v -1.857359 0.675220 32.084324
-v -1.857359 0.571109 32.084324
-v -10.686808 0.779329 32.084324
-v -1.857359 0.779330 32.084324
-v -1.619671 0.571109 32.084324
-v -1.619671 0.675220 32.084324
-v -1.619671 0.675220 31.019604
-v -1.619671 0.571109 31.019604
-v -1.619671 0.779330 32.084324
-v -1.619671 0.779331 31.019604
-v -1.619671 0.675220 29.954885
-v -1.619671 0.571110 29.954885
-v -1.619671 0.779331 29.954885
-v -1.857359 0.779331 31.019604
-v -10.686808 0.779329 31.019604
-v -1.857359 0.571109 31.019604
-v -10.686808 0.571108 31.019604
-v -19.551571 0.571107 31.019604
-v -13.839814 0.779329 32.084324
-v -13.839814 0.675218 32.084324
-v -13.839814 0.571108 32.084324
-v -13.839814 0.571108 31.019604
-v -13.839814 0.571108 29.954885
-v -13.839814 0.675219 29.954885
-v -13.839814 0.779329 29.954885
-v -13.839814 0.779329 31.019604
-v -19.551571 0.779328 31.018738
-v -1.857359 0.571110 26.555317
-v -1.857359 0.675220 26.555317
-v -10.686805 0.675219 26.555317
-v -10.686805 0.571109 26.555317
-v -1.857359 0.779331 26.555317
-v -10.686805 0.779330 26.555317
-v -19.551571 0.571108 26.555317
-v -19.551571 0.675218 26.555317
-v -19.753942 0.675218 26.555317
-v -19.753942 0.571108 26.555317
-v -19.551571 0.779329 26.555317
-v -19.753942 0.779329 26.555317
-v -19.753942 0.675218 27.620035
-v -19.753942 0.571108 27.620035
-v -19.753942 0.779329 27.620035
-v -19.753942 0.675218 28.684755
-v -19.753942 0.571107 28.684755
-v -19.753942 0.779329 28.684755
-v -19.551571 0.675218 28.684755
-v -19.551571 0.571108 28.684755
-v -19.551571 0.779329 28.684755
-v -10.686805 0.571109 28.684755
-v -10.686805 0.675219 28.684755
-v -1.857359 0.675220 28.684755
-v -1.857359 0.571110 28.684755
-v -10.686805 0.779330 28.684755
-v -1.857359 0.779331 28.684755
-v -1.619671 0.571110 28.684755
-v -1.619671 0.675220 28.684755
-v -1.619671 0.675220 27.620035
-v -1.619671 0.571110 27.620035
-v -1.619671 0.779331 28.684755
-v -1.619671 0.779331 27.620035
-v -1.619671 0.675220 26.555317
-v -1.619671 0.571110 26.555317
-v -1.619671 0.779331 26.555317
-v -1.857359 0.779331 27.620035
-v -10.686805 0.779330 27.620035
-v -19.551571 0.918219 27.620035
-v -19.551571 0.918219 28.684755
-v -19.753942 0.918219 28.684755
-v -19.753942 0.918219 27.620035
-v -19.551571 0.918219 26.555317
-v -19.753942 0.918219 26.555317
-v -1.857359 0.571110 27.620035
-v -10.686805 0.571109 27.620035
-v -19.551571 0.571108 27.620035
-v -13.839811 0.779329 28.684755
-v -13.839811 0.675219 28.684755
-v -13.839811 0.571108 28.684755
-v -13.839811 0.571108 27.620035
-v -13.839811 0.571108 26.555317
-v -13.839811 0.675219 26.555317
-v -13.839811 0.779329 26.555317
-v -13.839811 0.779329 27.620035
-v -19.551571 0.779329 27.620035
-v -19.753942 0.918218 32.083584
-v -19.551571 0.918218 32.083584
-v -19.753942 0.918219 29.955090
-v -19.551571 0.918219 29.955090
-v -19.551571 0.918218 31.017866
-v -19.753942 0.918218 31.017866
-v -1.857359 0.571110 21.566267
-v -1.857359 0.675221 21.566267
-v -10.686808 0.675220 21.566267
-v -10.686808 0.571109 21.566267
-v -1.857359 0.779331 21.566267
-v -10.686808 0.779330 21.566267
-v -19.551571 0.571108 21.566267
-v -19.551571 0.675219 21.566267
-v -19.753946 0.675219 21.566267
-v -19.753946 0.571108 21.566267
-v -19.551571 0.779329 21.566372
-v -19.753946 0.779329 21.566267
-v -19.753946 0.675219 22.630987
-v -19.753946 0.571108 22.630987
-v -19.753942 0.779329 22.630119
-v -19.753946 0.675219 23.695705
-v -19.753946 0.571108 23.695705
-v -19.753942 0.779329 23.695335
-v -19.551571 0.675219 23.695705
-v -19.551571 0.571108 23.695705
-v -19.551571 0.779329 23.695335
-v -10.686808 0.571109 23.695705
-v -10.686808 0.675220 23.695705
-v -1.857360 0.675221 23.695705
-v -1.857360 0.571110 23.695705
-v -10.686808 0.779330 23.695705
-v -1.857360 0.779331 23.695705
-v -1.619671 0.571110 23.695705
-v -1.619671 0.675221 23.695705
-v -1.619671 0.675221 22.630987
-v -1.619671 0.571110 22.630987
-v -1.619671 0.779331 23.695705
-v -1.619671 0.779331 22.630987
-v -1.619671 0.675221 21.566267
-v -1.619671 0.571110 21.566267
-v -1.619671 0.779331 21.566267
-v -1.857360 0.779331 22.630987
-v -10.686808 0.779330 22.630987
-v -1.857360 0.571110 22.630987
-v -10.686808 0.571109 22.630987
-v -19.551571 0.571108 22.630987
-v -13.839814 0.779330 23.695705
-v -13.839814 0.675219 23.695705
-v -13.839814 0.571109 23.695705
-v -13.839814 0.571109 22.630987
-v -13.839814 0.571109 21.566267
-v -13.839814 0.675219 21.566267
-v -13.839814 0.779330 21.566267
-v -13.839814 0.779330 22.630987
-v -19.551571 0.779329 22.630119
-v -1.857359 0.571111 18.166702
-v -1.857359 0.675221 18.166702
-v -10.686806 0.675220 18.166702
-v -10.686806 0.571109 18.166702
-v -1.857359 0.779332 18.166702
-v -10.686806 0.779331 18.166702
-v -19.551571 0.571108 18.166702
-v -19.551571 0.675219 18.166702
-v -19.753942 0.675219 18.166702
-v -19.753942 0.571108 18.166702
-v -19.551571 0.779330 18.166702
-v -19.753942 0.779330 18.166702
-v -19.753942 0.675219 19.231419
-v -19.753942 0.571108 19.231419
-v -19.753942 0.779329 19.231419
-v -19.753942 0.675219 20.296137
-v -19.753942 0.571108 20.296137
-v -19.753942 0.779329 20.296137
-v -19.551571 0.675219 20.296137
-v -19.551571 0.571108 20.296137
-v -19.551571 0.779329 20.296137
-v -10.686805 0.571109 20.296137
-v -10.686805 0.675220 20.296137
-v -1.857359 0.675221 20.296137
-v -1.857359 0.571110 20.296137
-v -10.686805 0.779330 20.296137
-v -1.857359 0.779331 20.296137
-v -1.619671 0.571110 20.296137
-v -1.619671 0.675221 20.296137
-v -1.619671 0.675221 19.231419
-v -1.619671 0.571110 19.231419
-v -1.619671 0.779332 20.296137
-v -1.619671 0.779332 19.231419
-v -1.619671 0.675221 18.166702
-v -1.619671 0.571111 18.166702
-v -1.619671 0.779332 18.166702
-v -1.857359 0.779332 19.231419
-v -10.686806 0.779330 19.231419
-v -19.551571 0.918220 19.231419
-v -19.551571 0.918219 20.296137
-v -19.753942 0.918219 20.296137
-v -19.753942 0.918220 19.231419
-v -19.551571 0.918220 18.166702
-v -19.753942 0.918220 18.166702
-v -1.857359 0.571110 19.231419
-v -10.686806 0.571109 19.231419
-v -19.551571 0.571108 19.231419
-v -13.839811 0.779330 20.296137
-v -13.839811 0.675219 20.296137
-v -13.839811 0.571109 20.296137
-v -13.839811 0.571109 19.231419
-v -13.839811 0.571109 18.166702
-v -13.839811 0.675220 18.166702
-v -13.839811 0.779330 18.166702
-v -13.839811 0.779330 19.231419
-v -19.551571 0.779329 19.231419
-v -19.753942 0.918219 23.694965
-v -19.551571 0.918219 23.694965
-v -19.753942 0.918219 21.566471
-v -19.551571 0.918219 21.566471
-v -19.551571 0.918219 22.629250
-v -19.753942 0.918219 22.629250
-v 2.430042 0.571110 28.760996
-v 2.430042 0.675221 28.760996
-v 11.259491 0.675222 28.760996
-v 11.259491 0.571111 28.760996
-v 2.430042 0.779331 28.760996
-v 11.259491 0.779332 28.760996
-v 20.124250 0.571112 28.760996
-v 20.124250 0.675223 28.760996
-v 20.326626 0.675223 28.760996
-v 20.326626 0.571112 28.760996
-v 20.124250 0.779333 28.760893
-v 20.326626 0.779333 28.760996
-v 20.326626 0.675223 27.696278
-v 20.326626 0.571112 27.696278
-v 20.326626 0.779333 27.697145
-v 20.326626 0.675223 26.631557
-v 20.326626 0.571112 26.631557
-v 20.326626 0.779334 26.631927
-v 20.124250 0.675223 26.631557
-v 20.124250 0.571112 26.631557
-v 20.124250 0.779334 26.631927
-v 11.259491 0.571111 26.631557
-v 11.259491 0.675222 26.631557
-v 2.430043 0.675221 26.631557
-v 2.430043 0.571110 26.631557
-v 11.259491 0.779332 26.631557
-v 2.430043 0.779331 26.631557
-v 2.192354 0.571110 26.631557
-v 2.192354 0.675221 26.631557
-v 2.192354 0.675221 27.696278
-v 2.192354 0.571110 27.696278
-v 2.192354 0.779331 26.631557
-v 2.192354 0.779331 27.696278
-v 2.192354 0.675221 28.760996
-v 2.192354 0.571110 28.760996
-v 2.192354 0.779331 28.760996
-v 2.430043 0.779331 27.696278
-v 11.259491 0.779332 27.696278
-v 2.430043 0.571110 27.696278
-v 11.259491 0.571111 27.696278
-v 20.124250 0.571112 27.696278
-v 14.412498 0.779333 26.631557
-v 14.412498 0.675222 26.631557
-v 14.412498 0.571112 26.631557
-v 14.412498 0.571112 27.696278
-v 14.412498 0.571112 28.760996
-v 14.412498 0.675222 28.760996
-v 14.412498 0.779333 28.760996
-v 14.412498 0.779333 27.696278
-v 20.124250 0.779333 27.697145
-v 2.430042 0.571110 32.160564
-v 2.430042 0.675220 32.160564
-v 11.259489 0.675221 32.160564
-v 11.259489 0.571111 32.160564
-v 2.430042 0.779331 32.160564
-v 11.259489 0.779332 32.160564
-v 20.124250 0.571112 32.160564
-v 20.124250 0.675223 32.160564
-v 20.326622 0.675223 32.160564
-v 20.326622 0.571112 32.160564
-v 20.124250 0.779333 32.160564
-v 20.326622 0.779333 32.160564
-v 20.326622 0.675223 31.095846
-v 20.326622 0.571112 31.095846
-v 20.326622 0.779333 31.095846
-v 20.326622 0.675223 30.031128
-v 20.326622 0.571112 30.031128
-v 20.326622 0.779333 30.031128
-v 20.124250 0.675223 30.031128
-v 20.124250 0.571112 30.031128
-v 20.124250 0.779333 30.031128
-v 11.259489 0.571111 30.031128
-v 11.259489 0.675222 30.031128
-v 2.430042 0.675221 30.031128
-v 2.430042 0.571110 30.031128
-v 11.259489 0.779332 30.031128
-v 2.430042 0.779331 30.031128
-v 2.192354 0.571110 30.031128
-v 2.192354 0.675221 30.031128
-v 2.192354 0.675220 31.095846
-v 2.192354 0.571110 31.095846
-v 2.192354 0.779331 30.031128
-v 2.192354 0.779331 31.095846
-v 2.192354 0.675220 32.160564
-v 2.192354 0.571110 32.160564
-v 2.192354 0.779331 32.160564
-v 2.430042 0.779331 31.095846
-v 11.259489 0.779332 31.095846
-v 20.124250 0.918223 31.095846
-v 20.124250 0.918223 30.031128
-v 20.326622 0.918223 30.031128
-v 20.326622 0.918223 31.095846
-v 20.124250 0.918223 32.160564
-v 20.326622 0.918223 32.160564
-v 2.430042 0.571110 31.095846
-v 11.259489 0.571111 31.095846
-v 20.124250 0.571112 31.095846
-v 14.412494 0.779333 30.031128
-v 14.412494 0.675222 30.031128
-v 14.412494 0.571111 30.031128
-v 14.412494 0.571111 31.095846
-v 14.412494 0.571111 32.160564
-v 14.412494 0.675222 32.160564
-v 14.412494 0.779332 32.160564
-v 14.412494 0.779332 31.095846
-v 20.124250 0.779333 31.095846
-v 20.326622 0.918224 26.632298
-v 20.124250 0.918224 26.632298
-v 20.326622 0.918223 28.760792
-v 20.124250 0.918223 28.760792
-v 20.124250 0.918224 27.698015
-v 20.326622 0.918224 27.698015
-v -0.407079 -0.219040 12.594946
-v -0.567964 0.024331 12.594946
-v -0.567964 0.024331 18.544756
-v -0.407079 -0.219041 18.544756
-v -0.567964 0.450010 12.594946
-v -0.567964 0.450009 18.544756
-v -0.567964 0.875688 12.594946
-v -0.567964 0.875687 18.544756
-v -0.407079 1.119060 12.594946
-v -0.407079 1.119059 18.544756
-v -0.567964 -0.401349 29.105240
-v -0.567964 0.024330 29.105240
-v -0.567964 0.024330 29.470232
-v -0.567964 -0.401349 29.470232
-v -0.567964 0.450008 29.105240
-v -0.567964 0.450008 29.470232
-v -0.567964 0.875687 29.105240
-v -0.567965 1.301365 29.105240
-v -0.567965 1.301365 29.470232
-v -0.567964 0.875687 29.470232
-v -0.142286 0.024330 29.470232
-v -0.142286 -0.401349 29.470232
-v -0.142286 0.450008 29.470232
-v -0.142286 0.875687 29.470232
-v -0.142286 1.301365 29.470232
-v 0.283392 0.024330 29.470232
-v 0.283392 -0.401349 29.470232
-v 0.283392 0.450008 29.470232
-v 0.283392 0.875687 29.470232
-v 0.283392 1.301365 29.470232
-v 0.499915 0.024330 29.470232
-v 0.499915 -0.401349 29.470232
-v 0.499915 0.450008 29.470232
-v 0.499915 0.875687 29.470232
-v 0.499915 1.301365 29.470232
-v 0.709071 -0.401349 29.470232
-v 0.709071 0.024330 29.470232
-v 1.134750 0.024330 29.470232
-v 1.134750 -0.401349 29.470232
-v 0.709071 0.450008 29.470232
-v 1.134750 0.450008 29.470232
-v 0.709071 0.875687 29.470232
-v 1.134750 0.875687 29.470232
-v 0.709071 1.301365 29.470232
-v 1.134750 1.301365 29.470232
-v 1.134750 0.024330 29.105240
-v 1.134750 -0.401349 29.105240
-v 1.134750 0.450008 29.105240
-v 1.134750 1.301365 29.105240
-v 1.134750 0.875687 29.105240
-v 0.973863 -0.219041 18.544756
-v 1.134749 0.024331 18.544756
-v 1.134749 0.024331 12.594946
-v 0.973863 -0.219040 12.594946
-v 1.134749 0.450009 18.544756
-v 1.134749 0.450010 12.594946
-v 1.134749 0.875688 18.544756
-v 1.134749 0.875688 12.594946
-v 0.973863 1.119059 18.544756
-v 0.973863 1.119060 12.594946
-v 0.709071 1.301365 29.105240
-v 0.709071 1.301367 12.594946
-v 0.709071 1.301366 18.544756
-v 0.499915 1.301365 29.105240
-v 0.283392 1.301365 29.105240
-v 0.499915 1.301367 12.594946
-v 0.499915 1.301366 18.544756
-v 0.283392 1.301366 18.544756
-v 0.283392 1.301366 12.594946
-v -0.142286 1.301365 29.105240
-v -0.142286 1.301366 18.544756
-v -0.142286 1.301366 12.594946
-v 0.709071 -0.401349 29.105240
-v 0.709071 -0.401347 12.442060
-v 0.709071 -0.401348 18.544756
-v 0.499915 -0.401349 29.105240
-v 0.283392 -0.401349 29.105240
-v 0.499915 -0.401348 18.544756
-v 0.499915 -0.401347 12.442060
-v 0.283392 -0.401347 12.442060
-v 0.283392 -0.401348 18.544756
-v -0.142286 -0.401349 29.105240
-v -0.142286 -0.401347 12.442060
-v -0.142286 -0.401348 18.544756
-v 0.499915 1.301366 20.783482
-v 0.499915 1.301366 21.174002
-v 0.283392 1.301366 21.174002
-v 0.283392 1.301366 20.783482
-v 1.134750 1.301366 20.783482
-v 1.134750 1.301366 21.174002
-v 0.709071 1.301366 21.174002
-v 0.709071 1.301366 20.783482
-v 1.134750 0.875687 21.174002
-v 1.134750 0.875687 20.783482
-v 1.134750 0.024331 21.174002
-v 1.134750 0.450009 21.174002
-v 1.134750 0.450009 20.783482
-v 1.134750 0.024331 20.783482
-v 1.134750 -0.401348 21.174002
-v 1.134750 -0.401348 20.783482
-v 0.709071 -0.401348 21.174002
-v 0.709071 -0.401348 20.783482
-v 0.283392 -0.401348 21.174002
-v 0.499915 -0.401348 21.174002
-v 0.499915 -0.401348 20.783482
-v 0.283392 -0.401348 20.783482
-v -0.142286 -0.401348 21.174002
-v -0.142286 -0.401348 20.783482
-v -0.567964 -0.401348 21.174002
-v -0.567964 -0.401348 20.783482
-v -0.567964 0.024330 20.783482
-v -0.567964 0.024330 21.174002
-v -0.567964 0.450009 20.783482
-v -0.567964 0.450009 21.174002
-v -0.567964 0.875687 20.783482
-v -0.567965 1.301366 20.783482
-v -0.567965 1.301366 21.174002
-v -0.567964 0.875687 21.174002
-v -0.142286 1.301366 20.783482
-v -0.142286 1.301366 21.174002
-v 0.599990 1.301366 18.544756
-v 0.599990 1.301367 12.594946
-v 0.599991 1.301366 21.174002
-v 0.599991 1.301366 20.783482
-v 0.599991 1.301365 29.470232
-v 0.599991 1.301365 29.105240
-v 0.599991 0.875687 29.470232
-v 0.599991 0.450008 29.470232
-v 0.599991 0.024330 29.470232
-v 0.599991 -0.401349 29.470232
-v 0.599991 -0.401349 29.105240
-v 0.599991 -0.401348 20.783482
-v 0.599991 -0.401348 21.174002
-v 0.599990 -0.401347 12.442060
-v 0.599990 -0.401348 18.544756
-v -0.567964 0.875687 27.055984
-v -0.567965 1.301365 27.055984
-v -0.567964 0.450008 27.055984
-v -0.567964 0.024330 27.055984
-v -0.567964 -0.401349 27.055984
-v -0.142286 -0.401349 27.055984
-v 0.283392 -0.401349 27.055984
-v 0.499915 -0.401349 27.055984
-v 0.709071 -0.401348 27.055984
-v 0.599991 -0.401348 27.055984
-v 1.134750 -0.401348 27.055984
-v 1.134750 0.024330 27.055984
-v 1.134750 0.450008 27.055984
-v 1.134750 0.875687 27.055984
-v 1.134750 1.301365 27.055984
-v 0.709071 1.301365 27.055984
-v 0.599991 1.301365 27.055984
-v 0.283391 9.560798 27.055984
-v 0.499914 9.560798 27.055984
-v 0.499914 9.560798 29.105240
-v 0.283391 9.560798 29.105240
-v -0.142286 1.301365 27.055984
-v 0.283392 1.301365 27.055984
-v -0.567964 0.875687 18.823378
-v -0.567965 1.301366 18.823378
-v -0.567964 0.450009 18.823378
-v -0.567964 0.024331 18.823378
-v -0.567964 -0.401348 18.823378
-v -0.142286 -0.401348 18.823378
-v 0.283392 -0.401348 18.823378
-v 0.499915 -0.401348 18.823378
-v 0.709071 -0.401348 18.823378
-v 0.599990 -0.401348 18.823378
-v 1.134749 -0.401348 18.823378
-v 1.134749 0.024331 18.823378
-v 1.134749 0.450009 18.823378
-v 1.134749 0.875688 18.823378
-v 1.134749 1.301366 18.823378
-v 0.709071 1.301366 18.823378
-v 0.599990 1.301366 18.823378
-v 0.283391 9.560798 18.823378
-v 0.499914 9.560798 18.823378
-v 0.499914 9.560798 20.783482
-v 0.283391 9.560798 20.783482
-v -0.142286 1.301366 18.823378
-v 0.283392 1.301366 18.823378
-v 0.499915 1.301365 27.055984
-v 1.046129 3.326018 27.055984
-v 0.829606 3.326018 27.055984
-v 1.046129 3.326018 29.105236
-v 0.829606 3.326018 29.105236
-v 0.499915 1.301366 18.823378
-v 1.046128 3.382045 18.823378
-v 0.829605 3.382045 18.823378
-v 1.046129 3.382045 20.783482
-v 0.829606 3.382045 20.783482
-v -1.492830 0.875686 29.105240
-v -1.492830 0.450008 29.105240
-v -1.492830 0.875686 29.470232
-v -1.492830 0.450008 29.470232
-v -1.492830 0.875687 20.783482
-v -1.492830 0.450009 20.783482
-v -1.492830 0.875687 21.174002
-v -1.492830 0.450009 21.174002
-v 1.985612 0.875687 29.470232
-v 1.985612 0.450008 29.470232
-v 1.985612 0.875687 29.105240
-v 1.985612 0.450008 29.105240
-v 1.985612 0.875688 21.174002
-v 1.985612 0.450009 21.174002
-v 1.985612 0.875688 20.783482
-v 1.985612 0.450009 20.783482
-v 2.162426 0.675221 21.642542
-v 2.162426 0.571111 21.642542
-v 2.162426 0.675221 20.372412
-v 2.162426 0.571111 20.372412
-v 1.134751 0.450010 8.356746
-v 1.134749 0.875690 8.356745
-v 1.134749 0.024332 8.356745
-v 0.973863 -0.219040 8.356745
-v 0.709071 -0.401347 8.356745
-v 0.599990 -0.401347 8.356746
-v 0.283392 -0.401347 8.356747
-v 0.499915 -0.401347 8.356747
-v -0.142286 -0.401347 8.356745
-v -0.407079 -0.219040 8.356745
-v -0.567965 0.024331 8.356745
-v -0.567965 0.450010 8.356747
-v -0.567965 0.875688 8.356745
-v -0.407079 1.119060 8.356745
-v -0.142286 1.301367 8.356745
-v 0.283392 1.301367 8.356747
-v 0.499915 1.301367 8.356747
-v 0.709071 1.301367 8.356745
-v 0.599990 1.301367 8.356746
-v 0.973863 1.119060 8.356745
-v 1.201807 0.024333 9.227408
-v 1.201807 0.450011 9.227408
-v 0.973863 -0.219040 9.227408
-v 1.134749 0.024332 9.227408
-v 1.134749 0.024332 8.906758
-v 0.973863 -0.219040 8.906758
-v 0.709071 -0.401347 9.227408
-v 0.709071 -0.401347 8.906758
-v 0.599990 -0.401347 9.227408
-v 0.599990 -0.401347 8.906758
-v 0.283392 -0.401347 9.227408
-v 0.499915 -0.401347 9.227408
-v 0.499915 -0.401347 8.906759
-v 0.283392 -0.401347 8.906759
-v -0.142286 -0.401347 9.227408
-v -0.142286 -0.401347 8.906758
-v -0.407079 -0.219040 9.227408
-v -0.407079 -0.219040 8.906758
-v -0.567965 0.024331 8.906758
-v -0.567965 0.024331 9.227408
-v -0.567965 0.450010 8.906759
-v -0.567965 0.450010 9.227408
-v -0.567965 0.875688 8.906758
-v -0.567965 0.875688 9.227408
-v -0.407079 1.119060 8.906758
-v -0.407079 1.119060 9.227408
-v -0.142286 1.301367 8.906758
-v -0.142286 1.301367 9.227408
-v 0.283392 1.301367 8.906759
-v 0.283392 1.301367 9.227408
-v 0.499915 1.301367 8.906759
-v 0.499915 1.301367 9.227408
-v 0.709071 1.301367 8.906758
-v 0.709071 1.301367 9.227408
-v 0.599990 1.301367 9.227408
-v 0.599990 1.301367 8.906758
-v 0.973863 1.119060 8.906758
-v 0.973863 1.119060 9.227408
-v 1.134749 0.875690 9.227408
-v 1.134749 0.875688 8.906758
-v 1.201806 0.875689 9.227408
-v 1.134751 0.450010 9.227408
-v 1.201807 0.024333 8.356745
-v 1.201807 0.450011 8.356746
-v 1.134750 -2.117634 8.906758
-v 1.134750 -2.117634 9.227408
-v 1.201807 -2.117634 9.227408
-v 1.134749 3.017655 9.227408
-v 1.134749 3.017655 8.906758
-v 1.201806 3.017655 9.227408
-v 1.201806 0.875689 8.356745
-v 1.134749 -0.240388 9.227408
-v 1.134749 -0.240388 8.906758
-v 1.201806 -0.240387 9.227408
-v 1.201806 -0.240387 8.906758
-v 1.134749 -0.240388 8.356745
-v 1.201806 -0.240387 8.356745
-v 1.134749 1.133423 8.906758
-v 1.134750 1.133423 9.227408
-v 1.201806 1.133423 8.356745
-v 1.134750 1.133423 8.356745
-v 1.201806 1.133423 9.227408
-v 1.201806 1.133423 8.906758
-v 1.134750 -2.117634 8.790135
-v 1.134749 0.024332 8.790135
-v 1.134749 -0.240388 8.790135
-v 0.973863 -0.219040 8.790135
-v 0.709071 -0.401347 8.790135
-v 0.599990 -0.401347 8.790135
-v 0.499915 -0.401347 8.790136
-v 0.283392 -0.401347 8.790136
-v -0.142286 -0.401347 8.790135
-v -0.407079 -0.219040 8.790135
-v -0.567965 0.024331 8.790135
-v -0.567965 0.450010 8.790137
-v -0.567965 0.875688 8.790135
-v -0.407079 1.119060 8.790135
-v -0.142286 1.301367 8.790135
-v 0.283392 1.301367 8.790136
-v 0.499915 1.301367 8.790137
-v 0.709071 1.301367 8.790135
-v 0.599990 1.301367 8.790136
-v 0.973863 1.119060 8.790135
-v 1.134749 0.875688 8.790135
-v 1.134749 1.133423 8.790135
-v 1.134749 3.017655 8.785319
-v 1.201806 1.133423 8.672776
-v 1.201806 -0.240387 8.672776
-v 1.134750 -2.117634 8.356745
-v 1.134750 -2.117634 8.672776
-v 1.201807 -2.117634 8.356745
-v 1.134749 0.024332 8.672776
-v 1.134749 -0.240388 8.672776
-v 0.973863 -0.219040 8.672776
-v 0.709071 -0.401347 8.672776
-v 0.599990 -0.401347 8.672776
-v 0.283392 -0.401347 8.672777
-v 0.499915 -0.401347 8.672777
-v -0.142286 -0.401347 8.672776
-v -0.407079 -0.219040 8.672776
-v -0.567965 0.024331 8.672776
-v -0.567965 0.450010 8.672777
-v -0.567965 0.875688 8.672776
-v -0.407079 1.119060 8.672776
-v -0.142286 1.301367 8.672776
-v 0.283392 1.301367 8.672777
-v 0.499915 1.301367 8.672777
-v 0.709071 1.301367 8.672776
-v 0.599990 1.301367 8.672776
-v 0.973863 1.119060 8.672776
-v 1.134749 0.875688 8.672776
-v 1.134749 1.133422 8.672776
-v 1.134749 3.017655 8.672776
-v 1.134749 3.017655 8.356745
-v 1.201806 3.017655 8.356745
-v 2.400114 0.571111 20.372412
-v 2.400114 0.675221 20.372412
-v 11.229562 0.675222 20.372412
-v 11.229562 0.571112 20.372412
-v 2.400114 0.779332 20.372412
-v 11.229562 0.779333 20.372412
-v 20.094322 0.571113 20.372412
-v 20.094322 0.675224 20.372412
-v 20.296698 0.675224 20.372412
-v 20.296698 0.571113 20.372412
-v 20.094322 0.779334 20.372307
-v 20.296698 0.779334 20.372412
-v 20.296698 0.675224 19.307692
-v 20.296698 0.571113 19.307692
-v 20.296694 0.779334 19.308559
-v 20.296698 0.675224 18.242973
-v 20.296698 0.571113 18.242973
-v 20.296694 0.779334 18.243343
-v 20.094322 0.675224 18.242973
-v 20.094322 0.571113 18.242973
-v 20.094322 0.779334 18.243343
-v 11.229562 0.571112 18.242973
-v 11.229562 0.675223 18.242973
-v 2.400114 0.675222 18.242973
-v 2.400114 0.571111 18.242973
-v 11.229562 0.779333 18.242973
-v 2.400114 0.779332 18.242973
-v 2.162425 0.571111 18.242973
-v 2.162425 0.675222 18.242973
-v 2.162425 0.675222 19.307692
-v 2.162425 0.571111 19.307692
-v 2.162425 0.779332 18.242973
-v 2.162425 0.779332 19.307692
-v 2.162426 0.779332 20.372412
-v 2.400114 0.779332 19.307692
-v 11.229562 0.779333 19.307692
-v 2.400114 0.571111 19.307692
-v 11.229562 0.571112 19.307692
-v 20.094322 0.571113 19.307692
-v 14.382567 0.779334 18.242973
-v 14.382567 0.675223 18.242973
-v 14.382567 0.571112 18.242973
-v 14.382567 0.571112 19.307692
-v 14.382567 0.571112 20.372412
-v 14.382567 0.675223 20.372412
-v 14.382567 0.779333 20.372412
-v 14.382567 0.779333 19.307692
-v 20.094322 0.779334 19.308559
-v 2.400114 0.571111 23.771978
-v 2.400114 0.675221 23.771978
-v 11.229560 0.675222 23.771978
-v 11.229560 0.571112 23.771978
-v 2.400114 0.779332 23.771978
-v 11.229560 0.779333 23.771978
-v 20.094322 0.571113 23.771978
-v 20.094322 0.675223 23.771978
-v 20.296694 0.675223 23.771978
-v 20.296694 0.571113 23.771978
-v 20.094322 0.779334 23.771978
-v 20.296694 0.779334 23.771978
-v 20.296694 0.675223 22.707262
-v 20.296694 0.571113 22.707262
-v 20.296694 0.779334 22.707262
-v 20.296694 0.675223 21.642542
-v 20.296694 0.571113 21.642542
-v 20.296694 0.779334 21.642542
-v 20.094322 0.675223 21.642542
-v 20.094322 0.571113 21.642542
-v 20.094322 0.779334 21.642542
-v 11.229560 0.571112 21.642542
-v 11.229560 0.675222 21.642542
-v 2.400114 0.675221 21.642542
-v 2.400114 0.571111 21.642542
-v 11.229560 0.779333 21.642542
-v 2.400114 0.779332 21.642542
-v 2.162426 0.675221 22.707262
-v 2.162426 0.571111 22.707262
-v 2.162426 0.779332 21.642542
-v 2.162426 0.779332 22.707262
-v 2.162426 0.675221 23.771978
-v 2.162426 0.571110 23.771978
-v 2.162426 0.779332 23.771978
-v 2.400114 0.779332 22.707262
-v 11.229560 0.779333 22.707262
-v 20.094322 0.918224 22.707262
-v 20.094322 0.918224 21.642542
-v 20.296694 0.918224 21.642542
-v 20.296694 0.918224 22.707262
-v 20.094322 0.918224 23.771978
-v 20.296694 0.918224 23.771978
-v 2.400114 0.571111 22.707262
-v 11.229560 0.571112 22.707262
-v 20.094322 0.571113 22.707262
-v 14.382564 0.779333 21.642542
-v 14.382564 0.675223 21.642542
-v 14.382564 0.571112 21.642542
-v 14.382564 0.571112 22.707262
-v 14.382564 0.571112 23.771978
-v 14.382564 0.675223 23.771978
-v 14.382564 0.779333 23.771978
-v 14.382564 0.779333 22.707262
-v 20.094322 0.779334 22.707262
-v 20.296694 0.918224 18.243713
-v 20.094322 0.918224 18.243713
-v 20.296694 0.918224 20.372208
-v 20.094322 0.918224 20.372208
-v 20.094322 0.918224 19.309429
-v 20.296694 0.918224 19.309429
-v 1.134749 2.345878 8.672776
-v 1.134749 1.652487 8.672776
-v 1.134749 1.652488 8.356745
-v 1.134749 2.345878 8.356745
-v 1.134749 2.345878 8.906758
-v 1.134749 1.652487 8.906758
-v 1.134749 1.652487 8.790135
-v 1.134749 2.345878 8.785320
-v 1.134749 1.652488 9.227408
-v 1.134749 2.345878 9.227408
-v 1.201807 1.652488 9.227408
-v 1.201807 2.345879 9.227408
-v 1.201807 1.652488 8.356745
-v 1.201807 2.345879 8.356745
-v 1.201806 -0.748390 8.356745
-v 1.134749 -0.748392 8.356745
-v 1.134749 -1.435081 8.356745
-v 1.201807 -1.435079 8.356745
-v 1.201806 -0.748390 9.227408
-v 1.201807 -1.435079 9.227408
-v 1.134749 -0.748392 9.227408
-v 1.134749 -1.435081 9.227408
-v 1.134749 -0.748392 8.906758
-v 1.134749 -1.435082 8.906758
-v 1.134749 -0.748392 8.790135
-v 1.134749 -1.435082 8.790135
-v 1.134749 -0.748392 8.672776
-v 1.134749 -1.435082 8.672776
-v 0.937660 7.649413 27.055984
-v 0.937660 7.649413 29.105240
-v 0.721138 7.649413 27.055984
-v 0.721138 7.649413 29.105240
-v 0.499914 5.476033 27.055984
-v 0.499914 5.476033 29.105240
-v 0.283392 5.476033 27.055984
-v 0.283392 5.476033 29.105240
-v 0.937660 7.619877 20.783482
-v 0.721137 7.619877 20.783482
-v 0.937660 7.619877 18.823378
-v 0.721137 7.619877 18.823378
-v 0.499914 5.581427 20.783482
-v 0.283392 5.581427 20.783482
-v 0.499914 5.581428 18.823378
-v 0.283392 5.581427 18.823378
-v 1.134749 0.875688 12.019503
-v 0.973863 1.119060 12.019503
-v 1.134749 0.450010 12.019503
-v 1.134749 0.024331 12.019503
-v 0.973863 -0.219040 12.019503
-v 0.709071 -0.401347 12.172389
-v 0.599990 -0.401347 12.172389
-v 0.283392 -0.401347 12.172389
-v 0.499915 -0.401347 12.172389
-v -0.142286 -0.401347 12.172389
-v -0.407079 -0.219040 12.019503
-v -0.567964 0.024331 12.019503
-v -0.567964 0.450010 12.019503
-v -0.567964 0.875688 12.019503
-v -0.407079 1.119060 12.019503
-v -0.142286 1.301366 12.019503
-v 0.283392 1.301367 12.019503
-v 0.499915 1.301367 12.019503
-v 0.709071 1.301367 12.019503
-v 0.599990 1.301367 12.019503
-v 0.554513 -1.427196 12.442060
-v 0.709001 -1.427196 12.442060
-v 0.709001 -1.427196 12.172389
-v 0.554513 -1.427196 12.172389
-v 0.283393 -1.274207 12.442060
-v 0.412780 -1.274207 12.442060
-v 0.412780 -1.274207 12.172389
-v 0.283393 -1.274207 12.172389
-v -0.136777 -1.274207 12.442060
-v -0.136777 -1.274207 12.172389
-v 0.709001 -1.274207 12.442060
-v 0.554513 -1.274207 12.442060
-v 1.484052 -0.401347 12.442060
-v 1.484052 -0.401347 12.172389
-v 1.484052 -1.274207 12.172389
-v 1.484052 -1.274207 12.442060
-v 0.554513 -1.274207 12.172389
-v 0.709001 -1.274207 12.172389
-v -0.805944 -0.401347 12.172389
-v -0.805944 -0.401347 12.442060
-v -0.799958 -1.274207 12.442060
-v -0.799958 -1.274207 12.172389
-v 0.554513 -1.274207 12.653718
-v 0.709001 -1.274207 12.653718
-v 0.709001 -1.427196 12.653718
-v 0.554513 -1.427196 12.653718
-v 0.412780 -1.427196 12.442060
-v 0.412780 -1.427196 12.172389
-v 0.709001 -1.274207 12.552493
-v 0.554513 -1.274207 12.552493
-v 0.709001 -1.427196 12.552493
-v 0.637735 -1.609147 12.482539
-v 0.557582 -1.609147 12.482539
-v 0.557582 -1.609147 12.550732
-v 0.637735 -1.609147 12.550732
-v 0.412780 -1.274207 12.552493
-v 0.412780 -1.427196 12.552493
-v 0.554513 -1.527090 12.442060
-v 0.709001 -1.527090 12.442060
-v 0.412780 -1.527090 12.552493
-v 0.412780 -1.527090 12.442060
-v 0.709001 -1.527090 12.653718
-v 0.554513 -1.527090 12.653718
-v 0.709001 -1.527090 12.552493
-v 0.545620 -1.673146 12.114636
-v 0.915556 -1.673146 12.246275
-v 0.104510 -1.673146 12.561010
-v 0.206225 -1.673146 12.246275
-v 0.915556 -1.673146 12.849502
-v 0.545620 -1.673146 12.981141
-v 1.017272 -1.673146 12.561010
-v 0.484046 -1.609147 12.550732
-v 0.484046 -1.609147 12.482539
-v 0.637735 -1.609147 12.613238
-v 0.557582 -1.609147 12.613238
-v 0.206225 -1.673146 12.849502
-v 0.484046 -1.609147 12.613238
-v 0.412780 -1.274207 12.653718
-v 0.412780 -1.427196 12.653718
-v 0.412780 -1.527090 12.653718
-v -0.567965 0.450011 0.337313
-v -0.567965 0.875689 0.337313
-v -0.567965 0.875689 -0.350863
-v -0.567965 0.450011 -0.350863
-v -1.610670 0.386734 0.357029
-v -1.610670 0.981275 0.357029
-v -1.610670 0.981275 -0.354651
-v -1.610670 0.386734 -0.354651
-v -2.924089 -12.674552 -0.024833
-v -2.924089 -12.674552 0.526422
-v 13.442554 -12.510528 -0.000001
-v 13.442554 -12.664490 0.534774
-v 13.977328 -12.736895 -0.000001
-v 13.977328 -12.664490 0.534774
-v 13.977328 -13.199265 0.534774
-v 13.977328 -13.661641 -0.000001
-v 13.977328 -13.734043 0.534774
-v 13.442554 -13.888003 -0.000001
-v 13.442554 -13.734043 0.534774
-v -2.935614 -13.742562 -0.022713
-v -2.924089 -13.742563 0.526416
-v -2.924089 -13.225971 0.526419
-v 13.442554 -13.199265 0.832429
-v 13.977328 -12.809298 0.534774
-v 13.977328 -13.199265 0.534774
-v 13.977328 -13.589234 0.534774
-v 14.187409 -12.956433 -0.000001
-v 14.187409 -12.956433 0.534774
-v 14.187409 -13.199265 0.534774
-v 14.187409 -13.442099 0.534774
-v 14.187409 -13.442099 -0.000001
-v 14.875766 -12.956433 -0.000001
-v 14.875766 -12.956433 0.534774
-v 14.875766 -13.199265 0.534774
-v 14.875766 -13.442099 0.534774
-v 14.875766 -13.442099 -0.000001
-v 15.232806 -12.956433 -0.000001
-v 15.232806 -12.956433 0.534774
-v 15.232806 -13.199265 0.534774
-v 15.232806 -13.199265 -0.000001
-v 15.232806 -13.442099 0.534774
-v 15.232806 -13.442099 -0.000001
-v 14.875766 -12.956433 0.833843
-v 14.875766 -13.199265 0.833843
-v 15.232806 -13.199265 0.833843
-v 15.232806 -12.956433 0.833843
-v 14.875766 -13.442099 0.833843
-v 15.232806 -13.442099 0.833843
-v 14.875766 -8.789302 0.534775
-v 15.232806 -8.789302 0.534775
-v 14.875766 -8.789302 0.833843
-v 15.232806 -8.789302 0.833843
-v 14.875766 -17.609238 0.534774
-v 15.232806 -17.609238 0.534774
-v 15.232806 -17.609238 0.833842
-v 14.875766 -17.609238 0.833842
-v 14.875766 -10.589252 0.833843
-v 14.875766 -10.589252 0.534774
-v 15.232806 -10.589252 0.534774
-v 15.232806 -10.589252 0.833843
-v 15.232806 -11.240461 0.833843
-v 14.875766 -11.240461 0.833843
-v 14.875766 -11.240461 0.534774
-v 15.232806 -11.240461 0.534774
-v 15.232806 -15.060581 0.833843
-v 15.232806 -15.060581 0.534774
-v 14.875764 -15.060581 0.534774
-v 14.875764 -15.060581 0.833843
-v 15.232806 -15.913557 0.833843
-v 15.232806 -15.913557 0.534774
-v 14.875764 -15.913557 0.534774
-v 14.875764 -15.913557 0.833843
-v 14.977250 -12.956433 0.833843
-v 15.131322 -12.956433 0.833843
-v 15.131322 -11.240461 0.833843
-v 14.977250 -11.240461 0.833843
-v 14.977250 -13.442099 0.833843
-v 15.131322 -13.442099 0.833843
-v 14.977246 -15.060581 0.833843
-v 15.131322 -15.060581 0.833843
-v 15.131322 -10.589252 0.833843
-v 14.977250 -10.589252 0.833843
-v 15.131322 -8.789302 0.833843
-v 14.977250 -8.789302 0.833843
-v 14.977246 -15.913557 0.833843
-v 15.131322 -15.913557 0.833843
-v 14.977250 -17.609238 0.833842
-v 15.131322 -17.609238 0.833842
-v 14.977250 -12.786880 8.114987
-v 15.131322 -12.786880 8.114987
-v 15.131322 -11.071037 8.093815
-v 14.977250 -11.071037 8.093815
-v 14.977250 -13.442099 8.104384
-v 15.131322 -13.442099 8.104384
-v 14.977246 -15.060581 8.104384
-v 15.131322 -15.060581 8.104384
-v 15.131322 -10.116888 8.190596
-v 14.977250 -10.116888 8.190596
-v 15.131322 -8.325019 8.020221
-v 14.977250 -8.325019 8.020221
-v 14.977246 -16.340508 8.206782
-v 15.131322 -16.340508 8.206782
-v 14.977250 -18.024162 8.005217
-v 15.131322 -18.024162 8.005217
-v 14.905099 -12.786880 8.114987
-v 15.203479 -12.786880 8.114987
-v 15.203479 -11.071037 8.093815
-v 14.905099 -11.071037 8.093815
-v 14.905099 -13.442099 8.104384
-v 15.203479 -13.442099 8.104384
-v 14.905097 -15.060581 8.104384
-v 15.203479 -15.060581 8.104384
-v 15.203479 -10.116888 8.190596
-v 14.905099 -10.116888 8.190596
-v 15.203479 -8.325019 8.020221
-v 14.905099 -8.325019 8.020221
-v 14.905097 -16.340508 8.206782
-v 15.203486 -16.340508 8.206782
-v 14.905103 -18.024162 8.005217
-v 15.203486 -18.024162 8.005217
-v 14.905099 -12.781251 8.571209
-v 15.203479 -12.781251 8.571209
-v 15.203479 -11.065410 8.550035
-v 14.905099 -11.065410 8.550035
-v 14.905099 -13.442099 8.560639
-v 15.203479 -13.442099 8.560639
-v 14.905097 -15.060581 8.560639
-v 15.203479 -15.060581 8.560639
-v 15.203479 -10.073702 8.644802
-v 14.905099 -10.073702 8.644802
-v 15.203479 -8.281833 8.474427
-v 14.905099 -8.281833 8.474427
-v 14.905097 -16.394737 8.659801
-v 15.203486 -16.394737 8.659801
-v 14.905103 -18.078396 8.458237
-v 15.203486 -18.078396 8.458237
-v 14.977250 -12.360950 0.833843
-v 14.977250 -11.835946 0.833843
-v 14.977250 -12.191441 8.107641
-v 14.977250 -11.666478 8.101163
-v 14.977250 -14.003751 0.833843
-v 14.977246 -14.498927 0.833843
-v 14.977246 -14.498927 8.104384
-v 14.977250 -14.003751 8.104384
-v 14.977250 -9.964626 0.833843
-v 14.977250 -9.413928 0.833843
-v 14.977250 -9.495066 8.131472
-v 14.977250 -8.946840 8.079345
-v 14.977246 -16.501999 0.833843
-v 14.977250 -17.020792 0.833843
-v 14.977250 -17.439890 8.075165
-v 14.977246 -16.924774 8.136833
-v 14.689975 -12.360950 0.833843
-v 14.689975 -11.835946 0.833843
-v 14.689975 -12.191441 8.107641
-v 14.689975 -11.666478 8.101163
-v 14.689975 -14.003747 0.833843
-v 14.689971 -14.498924 0.833843
-v 14.689971 -14.498924 8.104384
-v 14.689975 -14.003747 8.104384
-v 14.689975 -9.964626 0.833843
-v 14.689975 -9.413928 0.833843
-v 14.689975 -9.495066 8.131472
-v 14.689975 -8.946840 8.079345
-v 14.689971 -16.502003 0.833843
-v 14.689975 -17.020796 0.833843
-v 14.689975 -17.439894 8.075165
-v 14.689971 -16.924776 8.136833
-v -2.942585 -12.674549 -0.563176
-v 13.442554 -12.664490 -0.534777
-v 13.977328 -12.664490 -0.534777
-v 15.232806 -12.956433 -0.534777
-v 15.232806 -13.199265 -0.534777
-v 15.232806 -13.442099 -0.534777
-v 13.977328 -13.734043 -0.534777
-v 13.442554 -13.734043 -0.534777
-v -2.942580 -13.742560 -0.563185
-v -2.942583 -13.225968 -0.563181
-v 13.442554 -13.199265 -0.832432
-v 13.977328 -13.199265 -0.534777
-v 13.977328 -12.809298 -0.534777
-v 13.977328 -13.199265 -0.534777
-v 13.977328 -13.589234 -0.534777
-v 14.187409 -12.956433 -0.534777
-v 14.187409 -13.199265 -0.534777
-v 14.187409 -13.442099 -0.534777
-v 14.875766 -12.956433 -0.534777
-v 14.875766 -13.199265 -0.534777
-v 14.875766 -13.442099 -0.534777
-v 14.875766 -12.956433 -0.833846
-v 14.875766 -13.199265 -0.833846
-v 15.232806 -13.199265 -0.833846
-v 15.232806 -12.956433 -0.833846
-v 14.875766 -13.442099 -0.833846
-v 15.232806 -13.442099 -0.833846
-v 15.232806 -8.789302 -0.534777
-v 14.875766 -8.789302 -0.534777
-v 14.875766 -8.789302 -0.833845
-v 15.232806 -8.789302 -0.833845
-v 14.875766 -17.609238 -0.534777
-v 15.232806 -17.609238 -0.534777
-v 15.232806 -17.609238 -0.833846
-v 14.875766 -17.609238 -0.833846
-v 14.875766 -11.240461 -0.534777
-v 15.232806 -11.240461 -0.534777
-v 14.875766 -11.240461 -0.833845
-v 14.905099 -12.781250 -8.571211
-v 15.203479 -12.781250 -8.571211
-v 15.203479 -11.065409 -8.550037
-v 14.905099 -11.065409 -8.550037
-v 15.232806 -11.240461 -0.833845
-v 15.232806 -15.060581 -0.534777
-v 14.875764 -15.060581 -0.534777
-v 15.232806 -15.060581 -0.833846
-v 15.203479 -13.442098 -8.560641
-v 14.905099 -13.442098 -8.560641
-v 14.905097 -15.060580 -8.560641
-v 15.203479 -15.060580 -8.560641
-v 14.875764 -15.060581 -0.833846
-v 14.875766 -10.589252 -0.534777
-v 14.875766 -10.589252 -0.833845
-v 15.232806 -10.589252 -0.534777
-v 15.232806 -10.589252 -0.833845
-v 14.905099 -10.073701 -8.644804
-v 15.203479 -10.073701 -8.644804
-v 15.203479 -8.281832 -8.474429
-v 14.905099 -8.281832 -8.474429
-v 15.232806 -15.913557 -0.833846
-v 15.232806 -15.913557 -0.534777
-v 14.875764 -15.913557 -0.534777
-v 14.875764 -15.913557 -0.833846
-v 15.203486 -16.394735 -8.659805
-v 14.905097 -16.394735 -8.659805
-v 14.905103 -18.078394 -8.458241
-v 15.203486 -18.078394 -8.458241
-v 15.131322 -12.956433 -0.833846
-v 14.977250 -12.956433 -0.833846
-v 15.131322 -11.240461 -0.833845
-v 14.977250 -11.240461 -0.833845
-v 14.977250 -13.442099 -0.833846
-v 15.131322 -13.442099 -0.833846
-v 14.977246 -15.060581 -0.833846
-v 15.131322 -15.060581 -0.833846
-v 15.131322 -10.589252 -0.833845
-v 14.977250 -10.589252 -0.833845
-v 15.131322 -8.789302 -0.833845
-v 14.977250 -8.789302 -0.833845
-v 14.977246 -15.913557 -0.833846
-v 15.131322 -15.913557 -0.833846
-v 14.977250 -17.609238 -0.833846
-v 15.131322 -17.609238 -0.833846
-v 15.131322 -12.786879 -8.114989
-v 14.977250 -12.786879 -8.114989
-v 15.131322 -11.071036 -8.093817
-v 14.977250 -11.071036 -8.093817
-v 14.689975 -11.835946 -0.833845
-v 14.689975 -12.360950 -0.833846
-v 14.689975 -12.191440 -8.107643
-v 14.689975 -11.666477 -8.101165
-v 14.977250 -13.442098 -8.104386
-v 15.131322 -13.442098 -8.104386
-v 14.689975 -14.003747 -0.833846
-v 14.689971 -14.498924 -0.833846
-v 14.689971 -14.498923 -8.104386
-v 14.689975 -14.003746 -8.104386
-v 15.131322 -15.060580 -8.104386
-v 14.977246 -15.060580 -8.104386
-v 15.131322 -10.116887 -8.190598
-v 14.977250 -10.116887 -8.190598
-v 15.131322 -8.325018 -8.020223
-v 14.977250 -8.325018 -8.020223
-v 14.689975 -9.413928 -0.833845
-v 14.689975 -9.964626 -0.833845
-v 14.689975 -9.495065 -8.131474
-v 14.689975 -8.946839 -8.079347
-v 14.977246 -16.340506 -8.206784
-v 15.131322 -16.340506 -8.206784
-v 14.689971 -16.502003 -0.833846
-v 14.689975 -17.020796 -0.833846
-v 14.689975 -17.439892 -8.075169
-v 14.689971 -16.924774 -8.136837
-v 15.131322 -18.024160 -8.005220
-v 14.977250 -18.024160 -8.005220
-v 15.203479 -12.786879 -8.114989
-v 14.905099 -12.786879 -8.114989
-v 15.203479 -11.071036 -8.093817
-v 14.905099 -11.071036 -8.093817
-v 14.905099 -13.442098 -8.104386
-v 15.203479 -13.442098 -8.104386
-v 14.905097 -15.060580 -8.104386
-v 15.203479 -15.060580 -8.104386
-v 15.203479 -10.116887 -8.190598
-v 14.905099 -10.116887 -8.190598
-v 15.203479 -8.325018 -8.020223
-v 14.905099 -8.325018 -8.020223
-v 14.905097 -16.340506 -8.206784
-v 15.203486 -16.340506 -8.206784
-v 14.905103 -18.024160 -8.005220
-v 15.203486 -18.024160 -8.005220
-v 14.977250 -12.360950 -0.833846
-v 14.977250 -11.835946 -0.833845
-v 14.977250 -12.191440 -8.107643
-v 14.977250 -11.666477 -8.101165
-v 14.977246 -14.498927 -0.833846
-v 14.977250 -14.003751 -0.833846
-v 14.977246 -14.498926 -8.104386
-v 14.977250 -14.003750 -8.104386
-v 14.977250 -9.964626 -0.833845
-v 14.977250 -9.413928 -0.833845
-v 14.977250 -9.495065 -8.131474
-v 14.977250 -8.946839 -8.079347
-v 14.977250 -17.020792 -0.833846
-v 14.977246 -16.501999 -0.833846
-v 14.977250 -17.439888 -8.075169
-v 14.977246 -16.924772 -8.136837
-v -2.113228 -13.199276 0.832429
-v -2.113228 -12.664499 0.534774
-v -2.113228 -12.510539 -0.000001
-v -2.113228 -12.664499 -0.534777
-v -2.113228 -13.199276 -0.832431
-v -2.113228 -13.734052 -0.534777
-v -2.113228 -13.888014 -0.000001
-v -2.113228 -13.734052 0.534774
-v -3.927601 -13.796865 0.011647
-v -3.830018 -13.796864 0.288692
-v -3.587393 -13.796862 0.455452
-v -3.294612 -13.796864 0.448251
-v -3.061290 -13.796864 0.269836
-v -2.977399 -13.796862 -0.000001
-v -5.007541 -14.787398 -0.000001
-v -4.710554 -14.787398 0.914028
-v -3.933034 -14.787398 1.478929
-v -2.971967 -14.787402 1.478930
-v -2.194447 -14.787398 0.914028
-v -1.897461 -14.787398 -0.000001
-v -5.007541 -16.211174 -0.000001
-v -4.710556 -16.211174 0.914031
-v -3.933037 -16.211170 1.478929
-v -2.971968 -16.211174 1.478929
-v -2.194447 -16.211174 0.914026
-v -1.897459 -16.211174 -0.000001
-v -5.028159 -19.513569 -0.000002
-v -4.727237 -19.513565 1.181770
-v -3.939412 -19.513569 1.754156
-v -2.965599 -19.513569 1.754154
-v -2.177765 -19.513569 1.181761
-v -1.876841 -19.513569 -0.000002
-v -5.511664 -22.703224 -0.000002
-v -5.118406 -22.703220 1.236054
-v -4.088831 -22.703224 1.984077
-v -2.816191 -22.703224 1.984074
-v -1.786601 -22.703224 1.236035
-v -1.393334 -22.703224 -0.000002
-v -4.431327 -27.838896 -0.000002
-v -4.244390 -27.838900 0.391350
-v -3.754980 -27.838900 0.746927
-v -3.150030 -27.838900 0.746926
-v -2.660611 -27.838900 0.391342
-v -2.473669 -27.838896 -0.000002
-v -3.534389 -17.709658 1.719803
-v -3.370621 -17.709661 1.719803
-v -3.563780 -18.126120 1.786748
-v -3.341229 -18.126120 1.786747
-v -3.534389 -17.687191 1.859585
-v -3.370621 -17.687191 1.859586
-v -3.563780 -18.103649 1.926530
-v -3.341229 -18.103649 1.926529
-v -3.534365 -16.507442 2.239188
-v -3.370597 -16.507429 2.239187
-v -3.563800 -19.128782 2.249064
-v -3.341249 -19.128756 2.249060
-v -3.534365 -16.516912 10.684505
-v -3.370597 -16.516899 10.684505
-v -3.563800 -19.171793 10.709822
-v -3.341249 -19.171768 10.709823
-v -5.519253 -20.170036 -0.000002
-v -5.124544 -20.170033 1.236903
-v -4.091173 -20.170033 1.987686
-v -2.813845 -20.170036 1.987683
-v -1.780462 -20.170036 1.236888
-v -1.385746 -20.170033 -0.000002
-v -4.429674 -23.234221 -0.000002
-v -4.243053 -23.234221 0.581122
-v -3.754470 -23.234221 0.936097
-v -3.150540 -23.234221 0.936096
-v -2.661948 -23.234221 0.581113
-v -2.475323 -23.234221 -0.000002
-v -3.972225 -24.040497 -0.000002
-v -3.872967 -24.040497 0.435616
-v -3.613106 -24.040497 0.624416
-v -3.291897 -24.040497 0.624415
-v -3.032032 -24.040497 0.435612
-v -2.932772 -24.040497 -0.000002
-v -4.430962 -24.876295 -0.000002
-v -4.244094 -24.876297 0.433333
-v -3.754867 -24.876297 0.788777
-v -3.150143 -24.876297 0.788775
-v -2.660907 -24.876297 0.433324
-v -2.474035 -24.876295 -0.000002
-v -4.431147 -26.379904 -0.000002
-v -4.244244 -26.379908 0.412025
-v -3.754925 -26.379908 0.767537
-v -3.150086 -26.379908 0.767536
-v -2.660757 -26.379908 0.412017
-v -2.473849 -26.379904 -0.000002
-v -3.557476 -26.379881 0.767537
-v -3.347653 -26.379932 0.767536
-v -3.557376 -27.838873 0.746927
-v -3.347515 -27.838924 0.746926
-v -3.557468 -26.456675 6.204228
-v -3.347646 -26.456728 6.204228
-v -3.557368 -27.915668 6.183619
-v -3.347507 -27.915720 6.183618
-v -4.762257 -28.305780 -0.000002
-v -4.512117 -28.305784 0.585868
-v -3.857245 -28.305780 1.061656
-v -3.047770 -28.305780 1.061656
-v -2.392885 -28.305784 0.585853
-v -2.142739 -28.305780 -0.000002
-v -5.007548 -29.041300 -0.000003
-v -4.713654 -29.041309 0.763857
-v -3.452498 -29.041300 -0.000003
-v -3.936137 -29.041304 1.326147
-v -2.968882 -29.041300 1.326144
-v -2.191350 -29.041309 0.763839
-v -1.897447 -29.041300 -0.000003
-v -3.347515 -27.254871 0.750202
-v -3.557376 -27.254862 0.750202
-v -3.557476 -26.965038 0.752288
-v -3.347653 -26.965050 0.752288
-v -3.347653 -26.474892 1.034157
-v -3.347515 -27.933884 1.013548
-v -3.557375 -27.933832 1.013549
-v -3.557475 -26.474836 1.034158
-v -4.713654 -29.041309 -0.763862
-v -3.936137 -29.041304 -1.326152
-v -2.968882 -29.041300 -1.326149
-v -2.191350 -29.041309 -0.763845
-v -3.843710 -13.796864 -0.269848
-v -4.710554 -14.787398 -0.914031
-v -3.587393 -13.796862 -0.415157
-v -3.933034 -14.787398 -1.478932
-v -3.317609 -13.796862 -0.415157
-v -2.971967 -14.787402 -1.478932
-v -3.074980 -13.796862 -0.256581
-v -2.194447 -14.787398 -0.914031
-v -4.710556 -16.211174 -0.914034
-v -3.933037 -16.211170 -1.478932
-v -2.971968 -16.211174 -1.478932
-v -2.194447 -16.211174 -0.914029
-v -4.727237 -19.513565 -1.181773
-v -3.939412 -19.513569 -1.754159
-v -3.370597 -16.516899 -10.684509
-v -3.534366 -16.516912 -10.684508
-v -3.563800 -19.171793 -10.709826
-v -3.341249 -19.171768 -10.709828
-v -2.965599 -19.513569 -1.754157
-v -2.177765 -19.513569 -1.181764
-v -5.124544 -20.170033 -1.236907
-v -4.091173 -20.170033 -1.987689
-v -2.813845 -20.170036 -1.987686
-v -1.780462 -20.170036 -1.236892
-v -5.118406 -22.703220 -1.236058
-v -4.243053 -23.234221 -0.581126
-v -4.088831 -22.703224 -1.984081
-v -3.754470 -23.234221 -0.936101
-v -2.816191 -22.703224 -1.984078
-v -3.150540 -23.234221 -0.936100
-v -1.786601 -22.703224 -1.236039
-v -2.661948 -23.234221 -0.581117
-v -3.534389 -17.709658 -1.719806
-v -3.370621 -17.709661 -1.719807
-v -3.563780 -18.126120 -1.786751
-v -3.341229 -18.126120 -1.786750
-v -3.534389 -17.687191 -1.859588
-v -3.370621 -17.687191 -1.859589
-v -3.563780 -18.103649 -1.926533
-v -3.341229 -18.103649 -1.926532
-v -3.534366 -16.507442 -2.239191
-v -3.370597 -16.507429 -2.239191
-v -3.563800 -19.128782 -2.249067
-v -3.341249 -19.128756 -2.249065
-v -3.872967 -24.040497 -0.435621
-v -3.613106 -24.040497 -0.624420
-v -3.291897 -24.040497 -0.624419
-v -3.032032 -24.040497 -0.435616
-v -4.244094 -24.876297 -0.433337
-v -3.754867 -24.876297 -0.788781
-v -3.150143 -24.876297 -0.788780
-v -2.660907 -24.876297 -0.433329
-v -4.244244 -26.379908 -0.412030
-v -3.754925 -26.379908 -0.767541
-v -3.150086 -26.379908 -0.767540
-v -2.660757 -26.379908 -0.412022
-v -4.244390 -27.838900 -0.391355
-v -3.754980 -27.838900 -0.746932
-v -3.347646 -26.456728 -6.204233
-v -3.557468 -26.456675 -6.204233
-v -3.557368 -27.915668 -6.183624
-v -3.347507 -27.915720 -6.183623
-v -3.150030 -27.838900 -0.746931
-v -2.660611 -27.838900 -0.391347
-v -3.557476 -26.379881 -0.767541
-v -3.347653 -26.379932 -0.767540
-v -3.557376 -27.838873 -0.746932
-v -3.347515 -27.838924 -0.746931
-v -3.557476 -26.965038 -0.752293
-v -3.347653 -26.965050 -0.752292
-v -3.557376 -27.254862 -0.750207
-v -3.347515 -27.254871 -0.750206
-v -4.512117 -28.305784 -0.585873
-v -3.857245 -28.305780 -1.061661
-v -3.047770 -28.305780 -1.061661
-v -2.392885 -28.305784 -0.585858
-v -3.347515 -27.933884 -1.013552
-v -3.557375 -27.933832 -1.013553
-v -3.557475 -26.474836 -1.034163
-v -3.347653 -26.474892 -1.034162
-v -1.654676 3.672103 9.450353
-v -1.654676 3.173390 8.246353
-v -1.654676 3.672104 7.042353
-v -1.654676 4.876104 6.543640
-v -1.654676 6.080104 7.042353
-v -1.654676 6.578817 8.246354
-v -1.654676 6.080104 9.450354
-v -1.654676 4.876104 9.949066
-v -1.013241 3.672104 9.450353
-v -1.013241 3.173390 8.246353
-v -1.013241 3.672104 7.042353
-v -1.013241 4.876104 6.543640
-v -1.013241 6.080104 7.042353
-v -1.013241 6.578817 8.246354
-v -1.013241 6.080104 9.450354
-v -1.013241 4.876104 9.949066
-v -0.371813 3.672104 9.450353
-v -0.371813 3.173390 8.246353
-v -0.371813 3.672104 7.042353
-v -0.371813 4.876104 6.543640
-v -0.371813 6.080104 7.042353
-v -0.371813 6.578817 8.246354
-v -0.371813 6.080104 9.450354
-v -0.371813 4.876104 9.949066
-v 0.269622 3.672104 9.450353
-v 0.269622 3.173390 8.246353
-v 0.269622 3.672104 7.042353
-v 0.269622 4.876104 6.543640
-v 0.269622 6.080104 7.042353
-v 0.269622 6.578817 8.246354
-v 0.269622 6.080104 9.450354
-v 0.269622 4.876104 9.949066
-v -1.654676 4.876104 8.246353
-v 0.269622 4.876104 8.246353
-v -1.654676 5.757076 8.269782
-v -1.654676 5.524343 8.831650
-v -1.654676 4.962476 8.269781
-v -7.778719 -3.096066 -0.000000
-v -7.778723 -3.283003 0.391352
-v -7.778723 -3.772413 0.746929
-v -7.778723 -4.377363 0.746928
-v -7.778723 -4.866781 0.391344
-v -7.778719 -5.053724 -0.000000
-v -3.972052 -3.431493 0.219848
-v -3.985268 -3.431493 0.575616
-v -3.985267 -3.660457 0.575550
-v -3.985387 -4.387682 0.575482
-v -3.985476 -4.629086 0.575431
-v -3.972120 -4.629086 0.219577
-v -4.816118 -3.096431 -0.000000
-v -4.816121 -3.283299 0.433335
-v -4.816121 -3.772526 0.788778
-v -4.816121 -4.377250 0.788777
-v -4.816121 -4.866486 0.433326
-v -4.816118 -5.053358 -0.000000
-v -6.319727 -3.096246 -0.000000
-v -6.319730 -3.283149 0.412027
-v -6.319730 -3.772469 0.767539
-v -6.319730 -4.377307 0.767538
-v -6.319730 -4.866636 0.412019
-v -6.319726 -5.053545 -0.000000
-v -6.319704 -3.969917 0.767539
-v -6.319756 -4.179740 0.767538
-v -7.778696 -3.970017 0.746929
-v -7.778749 -4.179878 0.746928
-v -6.396498 -3.969926 6.204230
-v -6.396551 -4.179748 6.204230
-v -7.855491 -3.970025 6.183621
-v -7.855542 -4.179886 6.183620
-v -8.245604 -2.765136 -0.000000
-v -8.245607 -3.015275 0.585870
-v -8.245604 -3.670148 1.061658
-v -8.245604 -4.479622 1.061658
-v -8.245607 -5.134508 0.585855
-v -8.245604 -5.384654 -0.000000
-v -8.981123 -2.519844 -0.000000
-v -8.981133 -2.813739 0.763860
-v -8.981123 -4.074894 -0.000000
-v -8.981126 -3.591255 1.326149
-v -8.981123 -4.558511 1.326146
-v -8.981133 -5.336043 0.763842
-v -8.981123 -5.629946 -0.000000
-v -7.782130 -4.179878 1.007728
-v -7.782078 -3.970017 1.007729
-v -6.323086 -3.969918 1.028339
-v -6.323137 -4.179740 1.028338
-v -7.378605 -4.122077 0.758656
-v -7.378582 -4.027762 0.758656
-v -6.722883 -4.027718 0.767918
-v -6.722907 -4.122015 0.767918
-v -8.981133 -2.813738 -0.763860
-v -8.981126 -3.591255 -1.326149
-v -8.981123 -4.558510 -1.326146
-v -8.981133 -5.336042 -0.763842
-v -3.972045 -3.431493 -0.219878
-v -4.816121 -3.283299 -0.433335
-v -3.985066 -3.660457 -0.575666
-v -4.816121 -3.772526 -0.788779
-v -3.984947 -4.387682 -0.575734
-v -4.816121 -4.377250 -0.788778
-v -3.971977 -4.629086 -0.220148
-v -4.816121 -4.866486 -0.433327
-v -6.319730 -3.283149 -0.412028
-v -6.319730 -3.772468 -0.767539
-v -6.319730 -4.377307 -0.767538
-v -6.319730 -4.866636 -0.412020
-v -7.778723 -3.283003 -0.391353
-v -7.778723 -3.772413 -0.746930
-v -6.396551 -4.179747 -6.204231
-v -6.396498 -3.969924 -6.204231
-v -7.855491 -3.970024 -6.183622
-v -7.855542 -4.179885 -6.183621
-v -7.778723 -4.377363 -0.746929
-v -7.778723 -4.866781 -0.391345
-v -6.319704 -3.969917 -0.767539
-v -6.319756 -4.179740 -0.767538
-v -7.778696 -3.970017 -0.746930
-v -7.778749 -4.179878 -0.746929
-v -6.722883 -4.027718 -0.767919
-v -6.722907 -4.122015 -0.767919
-v -7.378582 -4.027762 -0.758657
-v -7.378605 -4.122077 -0.758656
-v -8.245607 -3.015275 -0.585871
-v -8.245604 -3.670147 -1.061659
-v -8.245604 -4.479622 -1.061659
-v -8.245607 -5.134508 -0.585856
-v -7.782078 -3.970017 -1.007730
-v -7.782130 -4.179878 -1.007729
-v -6.323086 -3.969918 -1.028339
-v -6.323137 -4.179740 -1.028338
-v -3.957825 4.552871 -7.401248
-v -3.645519 4.325967 -7.401248
-v -3.259487 4.325968 -7.401248
-v -2.947181 4.552871 -7.401248
-v -2.827892 4.920009 -7.401248
-v -2.947181 5.287146 -7.401248
-v -3.259488 5.514050 -7.401248
-v -3.645519 5.514050 -7.401248
-v -3.957825 5.287146 -7.401248
-v -4.077115 4.920009 -7.401248
-v -4.830028 3.919178 -5.125114
-v -3.978670 3.300631 -5.125114
-v -2.926335 3.300632 -5.125114
-v -2.074978 3.919179 -5.125114
-v -1.749789 4.920009 -5.125114
-v -2.074979 5.920839 -5.125114
-v -2.926336 6.539386 -5.125114
-v -3.978671 6.539386 -5.125114
-v -4.830028 5.920839 -5.125114
-v -5.155217 4.920009 -5.125114
-v -4.830028 3.919178 -1.960319
-v -3.978670 3.300631 -1.960319
-v -2.926335 3.300631 -1.960319
-v -2.074978 3.919178 -1.960319
-v -1.749789 4.920009 -1.960319
-v -2.074979 5.920839 -1.960319
-v -2.926336 6.539385 -1.960319
-v -3.978671 6.539385 -1.960319
-v -4.830028 5.920838 -1.960319
-v -5.155217 4.920008 -1.960319
-v -5.162907 3.174865 -1.718583
-v -3.452503 3.174865 -1.710404
-v -1.742099 3.174864 -1.710404
-v -1.742099 4.885270 -1.710404
-v -1.742099 6.595674 -1.710404
-v -3.452503 6.595673 -1.710404
-v -5.162908 6.595673 -1.710404
-v -5.155217 4.920008 -1.710404
-v -3.452503 4.920009 -7.401248
-v -4.830028 5.920839 -7.105429
-v -3.978671 6.539386 -7.105429
-v -2.926336 6.539386 -7.105429
-v -2.074979 5.920840 -7.105429
-v -1.749789 4.920009 -7.105429
-v -2.074978 3.919179 -7.105429
-v -2.926335 3.300632 -7.105429
-v -3.978670 3.300631 -7.105429
-v -4.830028 3.919178 -7.105429
-v -5.155217 4.920009 -7.105429
-v -3.605683 6.579287 -1.796116
-v -3.299323 6.579287 -1.796116
-v -1.839008 6.399213 -1.796116
-v -1.749789 4.895383 -1.796116
-v -1.839008 3.391552 -1.796116
-v -3.299323 3.211478 -1.796116
-v -3.605683 3.211478 -1.796116
-v -5.065998 3.391552 -1.796116
-v -5.155217 4.920008 -1.796116
-v -5.065998 6.399213 -1.796116
-v -11.580500 4.552870 0.497143
-v -11.580500 4.325966 0.184837
-v -11.580500 4.325966 -0.201195
-v -11.580500 4.552870 -0.513501
-v -11.580500 4.920007 -0.632790
-v -11.580500 5.287145 -0.513500
-v -11.580500 5.514048 -0.201194
-v -11.580500 5.514048 0.184837
-v -11.580500 5.287145 0.497143
-v -11.580500 4.920007 0.616433
-v -9.304365 3.919177 1.369346
-v -9.304365 3.300630 0.517989
-v -9.304365 3.300630 -0.534347
-v -9.304365 3.919178 -1.385703
-v -9.304365 4.920008 -1.710893
-v -9.304365 5.920838 -1.385703
-v -9.304365 6.539385 -0.534346
-v -9.304365 6.539384 0.517989
-v -9.304365 5.920837 1.369346
-v -9.304365 4.920007 1.694535
-v -5.381045 3.919178 1.369346
-v -5.381045 3.300631 0.517988
-v -5.381045 3.300631 -0.534347
-v -5.381045 3.919178 -1.385704
-v -5.381045 4.920008 -1.710893
-v -5.381045 5.920839 -1.385703
-v -5.381045 6.539385 -0.534346
-v -5.381045 6.539385 0.517989
-v -5.381045 5.920838 1.369346
-v -5.381045 4.920008 1.694535
-v -5.162907 3.174864 1.702714
-v -5.162907 3.174864 -0.008179
-v -5.162908 6.595673 -0.008179
-v -5.162908 6.595673 1.702225
-v -5.162907 4.920008 1.710405
-v -11.580500 4.920007 -0.008179
-v -11.284681 5.920837 1.369346
-v -11.284682 6.539384 0.517989
-v -11.284682 6.539384 -0.534346
-v -11.284681 5.920838 -1.385703
-v -11.284681 4.920007 -1.710893
-v -11.284681 3.919178 -1.385703
-v -11.284681 3.300630 -0.534347
-v -11.284681 3.300630 0.517989
-v -11.284681 3.919177 1.369346
-v -11.284681 4.920007 1.694535
-v -5.216842 6.579287 0.145001
-v -5.216842 6.579287 -0.161359
-v -5.216842 6.399213 -1.621674
-v -5.216842 4.895382 -1.710893
-v -5.216842 3.391552 -1.621674
-v -5.216842 3.211478 -0.161359
-v -5.216842 3.211478 0.145001
-v -5.216842 3.391551 1.605316
-v -5.216842 4.920008 1.694535
-v -5.216842 6.399212 1.605316
-v -3.452503 6.595673 1.702226
-v -1.742099 6.595673 0.000001
-v -1.742099 6.595673 1.702226
-v -1.742099 3.174865 0.008487
-v -1.742099 3.174865 1.702714
-v -3.452503 3.174865 -1.702714
-v -3.452503 3.174864 1.702714
-v -2.451672 -2.794919 1.377524
-v -1.833125 -2.794919 0.526167
-v -1.833125 -2.794919 -0.526168
-v -2.451672 -2.794919 -1.377525
-v -3.452502 -2.794919 -1.702714
-v -4.453332 -2.794919 -1.377525
-v -5.071879 -2.794919 -0.526168
-v -5.071879 -2.794919 0.526167
-v -4.453332 -2.794919 1.377524
-v -3.452502 -2.794919 1.702713
-v -2.451672 -1.192150 1.377524
-v -1.833125 -1.192150 0.526167
-v -1.833125 -1.192150 -0.526168
-v -2.451672 -1.192150 -1.377525
-v -3.452502 -1.192150 -1.702714
-v -4.453332 -1.192150 -1.377525
-v -5.071879 -1.192150 -0.526168
-v -5.071879 -1.192151 0.526167
-v -4.453332 -1.192151 1.377524
-v -3.452502 -1.192150 1.702714
-v -2.451673 2.898659 1.377525
-v -1.833125 2.898659 0.526168
-v -1.833126 2.898659 -0.526168
-v -2.451673 2.898659 -1.377524
-v -3.452503 2.898659 -1.702714
-v -4.453333 2.898659 -1.377524
-v -5.071880 2.898659 -0.526167
-v -5.071880 2.898659 0.526168
-v -4.453333 2.898659 1.377525
-v -3.452503 2.898659 1.702714
-v -3.172542 -3.388221 0.385331
-v -2.999517 -3.388221 0.147183
-v -2.999517 -3.388221 -0.147184
-v -3.172542 -3.388221 -0.385332
-v -3.452502 -3.388221 -0.476297
-v -3.732462 -3.388221 -0.385332
-v -3.905487 -3.388221 -0.147184
-v -3.905487 -3.388221 0.147184
-v -3.732462 -3.388221 0.385332
-v -3.452502 -3.388221 0.476296
-v -3.172714 -4.678638 0.385457
-v -2.999583 -4.678638 0.147386
-v -2.999451 -4.678638 -0.146982
-v -3.172370 -4.678638 -0.385207
-v -3.452289 -4.678638 -0.476297
-v -3.732290 -4.678638 -0.385457
-v -3.905421 -4.678638 -0.147386
-v -3.905552 -4.678638 0.146981
-v -3.732634 -4.678638 0.385206
-v -3.452715 -4.678638 0.476296
-v -2.888790 -5.314968 1.600358
-v -2.055783 -5.314969 0.963375
-v -1.756274 -5.314970 -0.041585
-v -2.104667 -5.314972 -1.030660
-v -2.967887 -5.314970 -1.626060
-v -4.016212 -5.314967 -1.600359
-v -4.849221 -5.314968 -0.963376
-v -5.148730 -5.314970 0.041583
-v -4.800337 -5.314970 1.030659
-v -3.937117 -5.314969 1.626058
-v -2.888789 -7.551289 1.600359
-v -2.055784 -7.551289 0.963377
-v -1.756276 -7.551291 -0.041581
-v -2.104670 -7.551291 -1.030658
-v -2.967892 -7.551290 -1.626062
-v -4.016215 -7.551287 -1.600362
-v -4.849219 -7.551289 -0.963380
-v -5.148728 -7.551291 0.041581
-v -4.800335 -7.551291 1.030660
-v -3.937115 -7.551289 1.626060
-v -2.888789 -9.698491 1.600359
-v -2.055785 -9.698492 0.963380
-v -1.756278 -9.698494 -0.041577
-v -2.104673 -9.698494 -1.030657
-v -2.967897 -9.698493 -1.626063
-v -4.016218 -9.698489 -1.600363
-v -4.849218 -9.698491 -0.963383
-v -5.148726 -9.698494 0.041579
-v -4.800333 -9.698493 1.030660
-v -3.937112 -9.698492 1.626059
-v -2.888788 -11.683494 1.600363
-v -2.055786 -11.683495 0.963383
-v -1.756278 -11.683496 -0.041576
-v -2.104675 -11.683497 -1.030655
-v -2.967902 -11.683496 -1.626064
-v -4.016220 -11.683493 -1.600368
-v -4.849217 -11.683494 -0.963388
-v -5.148725 -11.683496 0.041577
-v -4.800331 -11.683496 1.030660
-v -3.937111 -11.683495 1.626060
-v -3.294610 -12.625381 0.448254
-v -3.061290 -12.625381 0.269840
-v -2.977399 -12.625380 -0.011645
-v -3.074984 -12.625378 -0.288684
-v -3.316768 -12.625380 -0.455453
-v -3.610398 -12.625378 -0.448255
-v -3.843717 -12.625381 -0.269841
-v -3.927608 -12.625381 0.011644
-v -3.830023 -12.625381 0.288682
-v -3.588239 -12.625380 0.455452
-v -2.088918 3.008635 1.547703
-v -3.452503 3.008634 1.702714
-v -4.816088 3.008634 1.547702
-v -5.118416 3.008634 0.257176
-v -5.118416 3.008634 -0.257175
-v -4.816088 3.008635 -1.547702
-v -3.452503 3.008635 -1.702714
-v -2.088918 3.008635 -1.547702
-v -1.786590 3.008635 -0.257175
-v -1.786590 3.008635 0.257176
-v -2.947181 4.552870 9.887227
-v -3.259487 4.325966 9.887227
-v -3.645519 4.325966 9.887227
-v -3.957825 4.552870 9.887227
-v -4.077115 4.920007 9.887227
-v -3.957825 5.287145 9.887227
-v -3.645519 5.514048 9.887228
-v -3.259487 5.514048 9.887228
-v -2.947181 5.287145 9.887227
-v -2.827892 4.920007 9.887227
-v -2.074978 3.919178 5.909592
-v -2.926335 3.300630 5.909592
-v -3.978671 3.300631 5.909592
-v -4.830028 3.919178 5.909592
-v -5.155217 4.920007 5.909592
-v -4.830028 5.920838 5.909592
-v -3.978671 6.539385 5.909592
-v -2.926336 6.539385 5.909592
-v -2.074979 5.920838 5.909592
-v -1.749789 4.920008 5.909592
-v -2.074978 3.919178 1.986271
-v -2.926336 3.300631 1.986271
-v -3.978671 3.300631 1.986271
-v -4.830028 3.919178 1.986271
-v -5.155217 4.920008 1.986271
-v -4.830028 5.920838 1.986271
-v -3.978671 6.539385 1.986272
-v -2.926336 6.539385 1.986272
-v -2.074979 5.920838 1.986271
-v -1.749789 4.920008 1.986271
-v -1.749789 4.920008 1.711201
-v -3.452503 4.920007 9.887227
-v -2.074979 5.920838 9.591409
-v -2.926336 6.539384 9.591409
-v -3.978671 6.539384 9.591409
-v -4.830028 5.920838 9.591409
-v -5.155217 4.920007 9.591408
-v -4.830028 3.919177 9.591408
-v -3.978671 3.300630 9.591408
-v -2.926335 3.300630 9.591408
-v -2.074978 3.919177 9.591408
-v -1.749789 4.920008 9.591408
-v -3.299324 6.579287 1.822068
-v -3.605683 6.579287 1.822068
-v -5.065998 6.399212 1.822068
-v -5.155217 4.895382 1.822068
-v -5.065998 3.391551 1.822068
-v -3.605683 3.211478 1.822068
-v -3.299323 3.211478 1.822068
-v -1.839008 3.391552 1.822068
-v -1.749789 4.920008 1.822068
-v -1.839008 6.399213 1.822068
-v 4.703668 4.552872 -0.496834
-v 4.703668 4.325968 -0.184528
-v 4.703668 4.325968 0.201503
-v 4.703668 4.552872 0.513809
-v 4.703668 4.920009 0.633099
-v 4.703668 5.287147 0.513809
-v 4.703668 5.514050 0.201503
-v 4.703668 5.514050 -0.184528
-v 4.703668 5.287147 -0.496834
-v 4.703668 4.920009 -0.616124
-v 2.427534 3.919178 -1.369037
-v 2.427534 3.300632 -0.517680
-v 2.427534 3.300632 0.534655
-v 2.427534 3.919179 1.386012
-v 2.427534 4.920009 1.711201
-v 2.427534 5.920839 1.386012
-v 2.427533 6.539386 0.534655
-v 2.427533 6.539386 -0.517680
-v 2.427534 5.920839 -1.369037
-v 2.427534 4.920009 -1.694226
-v -1.495787 3.919178 -1.369037
-v -1.495787 3.300631 -0.517680
-v -1.495787 3.300631 0.534655
-v -1.495787 3.919178 1.386012
-v -1.495787 4.920008 1.711201
-v -1.495787 5.920839 1.386012
-v -1.495787 6.539385 0.534655
-v -1.495787 6.539386 -0.517680
-v -1.495787 5.920839 -1.369037
-v -1.495787 4.920009 -1.694226
-v 4.703668 4.920009 0.008487
-v 4.407850 5.920839 -1.369037
-v 4.407850 6.539386 -0.517680
-v 4.407850 6.539386 0.534655
-v 4.407850 5.920840 1.386012
-v 4.407850 4.920009 1.711201
-v 4.407850 3.919179 1.386012
-v 4.407850 3.300632 0.534655
-v 4.407850 3.300632 -0.517680
-v 4.407850 3.919179 -1.369037
-v 4.407850 4.920009 -1.694226
-v -1.659990 6.579287 -0.144692
-v -1.659990 6.579287 0.161667
-v -1.659990 6.399213 1.621983
-v -1.659990 4.895382 1.711201
-v -1.659990 3.391552 1.621982
-v -1.659990 3.211478 0.161667
-v -1.659990 3.211478 -0.144693
-v -1.659990 3.391552 -1.605008
-v -1.659990 4.920009 -1.694226
-v -1.659990 6.399213 -1.605007
-v -4.581180 6.595673 -1.136865
-v -5.036086 6.595673 -0.005026
-v -3.451570 6.595673 -1.590101
-v -4.583845 6.595673 1.128057
-v -3.453437 6.595673 1.583944
-v -1.868921 6.595673 -0.001132
-v -2.322494 6.595673 -1.134222
-v -2.322494 6.595673 1.130713
-v -4.160037 6.865136 -0.723460
-v -4.425473 6.865136 -0.003880
-v -3.451925 6.865136 -0.991332
-v -4.162000 6.865136 0.716411
-v -3.453082 6.865136 0.985980
-v -2.479533 6.865136 -0.001472
-v -2.744127 6.865136 -0.721767
-v -2.743849 6.865136 0.718113
-v -3.947885 6.996768 -0.507514
-v -4.032388 6.996768 -0.002862
-v -3.452143 6.996768 -0.592020
-v -3.949403 6.996768 0.502015
-v -3.452863 6.996768 0.587699
-v -2.872618 6.996768 -0.001459
-v -2.956501 6.996768 -0.506339
-v -2.956224 6.996768 0.503196
-v -3.832004 7.643464 -0.389193
-v -3.979092 7.643464 -0.002695
-v -3.452175 7.643464 -0.537747
-v -3.833200 7.643464 0.384173
-v -3.452832 7.643464 0.533628
-v -2.925915 7.643464 -0.001423
-v -3.072622 7.643464 -0.388294
-v -3.072380 7.643464 0.385078
-v -3.832003 8.287648 -0.389192
-v -3.979091 8.287648 -0.002694
-v -3.452503 8.287647 0.000001
-v -3.452175 8.287648 -0.537746
-v -3.833199 8.287648 0.384173
-v -3.452832 8.287648 0.533627
-v -2.925915 8.287648 -0.001424
-v -3.072623 8.287648 -0.388293
-v -3.072381 8.287648 0.385076
-v -3.937115 -7.551289 1.626060
-v -2.888789 -7.551289 1.600359
-v -3.937112 -9.698492 1.626059
-v -2.888789 -9.698491 1.600359
-v -3.406940 -7.551282 -1.615299
-v -3.577137 -7.551295 -1.611126
-v -3.406974 -9.698484 -1.615299
-v -3.577171 -9.698498 -1.611126
-v -3.498052 -7.551289 1.615296
-v -3.327854 -7.551289 1.611123
-v -3.498048 -9.698492 1.615295
-v -3.327851 -9.698491 1.611123
-v -3.549598 -7.551278 -7.434207
-v -3.719795 -7.551291 -7.430035
-v -3.549632 -9.698481 -7.434208
-v -3.719829 -9.698493 -7.430035
-v -3.355394 -7.551290 7.434206
-v -3.185197 -7.551289 7.430032
-v -3.355391 -9.698493 7.434204
-v -3.185194 -9.698492 7.430033
-v -2.218560 -7.055443 0.851103
-v -1.953956 -7.055445 -0.036736
-v -2.261748 -7.055445 -0.910544
-v -3.024368 -7.055444 -1.436558
-v -3.950519 -7.055441 -1.413852
-v -4.686444 -7.055442 -0.851105
-v -4.951047 -7.055445 0.036735
-v -4.643257 -7.055444 0.910545
-v -3.880638 -7.055443 1.436556
-v -2.954485 -7.055442 1.413850
-v -2.055784 -7.237567 0.963377
-v -1.756276 -7.237568 -0.041581
-v -2.104670 -7.237568 -1.030658
-v -2.967891 -7.237567 -1.626062
-v -4.016215 -7.237564 -1.600361
-v -4.849220 -7.237566 -0.963379
-v -5.148728 -7.237568 0.041581
-v -4.800335 -7.237567 1.030660
-v -3.937115 -7.237567 1.626060
-v -2.888790 -7.237566 1.600358
-v -2.055784 -6.836927 0.963376
-v -1.756275 -6.836929 -0.041582
-v -2.104669 -6.836929 -1.030658
-v -2.967890 -6.836927 -1.626061
-v -4.016214 -6.836924 -1.600361
-v -4.849220 -6.836926 -0.963378
-v -5.148728 -6.836929 0.041582
-v -4.800335 -6.836928 1.030659
-v -3.937115 -6.836927 1.626060
-v -2.888790 -6.836926 1.600358
-v -2.451672 1.007413 1.377525
-v -3.452502 1.007413 1.702714
-v -4.453333 1.007412 1.377524
-v -5.071879 1.007412 0.526168
-v -5.071880 1.007413 -0.526167
-v -4.453333 1.007413 -1.377524
-v -3.452503 1.007413 -1.702714
-v -2.451673 1.007413 -1.377524
-v -1.833125 1.007413 -0.526168
-v -1.833125 1.007413 0.526167
-v -2.920146 -4.629086 0.575784
-v -2.933027 -4.629086 0.220147
-v -2.932884 -4.629086 -0.219578
-v -2.919528 -4.629086 -0.575432
-v -3.452208 -4.629086 -0.590285
-v -3.452796 -4.629086 0.590284
-v -2.919853 -3.431493 0.575616
-v -2.932959 -3.431493 0.219877
-v -2.932952 -3.431493 -0.219848
-v -2.919821 -3.431493 -0.575599
-v -3.452487 -3.431493 -0.590285
-v -3.985183 -3.431493 0.575598
-v -3.452517 -3.431493 0.590285
-v -3.665772 -12.674549 -0.586765
-v -3.980918 -12.674552 -0.526416
-v -3.969392 -12.674553 0.022720
-v -3.962422 -12.674552 0.563182
-v -3.635842 -12.674551 0.596188
-v -3.239236 -12.674552 0.586766
-v -3.269165 -12.674551 -0.596187
-v -3.269165 -13.742562 -0.596197
-v -3.665772 -13.742560 -0.586769
-v -3.980909 -13.742563 -0.526428
-v -3.969385 -13.742565 0.022725
-v -3.962415 -13.742563 0.563200
-v -3.635842 -13.742562 0.596188
-v -3.239239 -13.742563 0.586762
-v -3.496025 -8.796081 1.627274
-v -3.496028 -8.453699 1.627275
-v -3.325831 -8.453699 1.623194
-v -3.325828 -8.796080 1.623195
-v -3.321171 -9.698491 1.883604
-v -3.491368 -9.698491 1.887775
-v -3.491371 -7.551289 1.887777
-v -3.321174 -7.551289 1.883603
-v -3.408058 -8.796080 -1.633972
-v -3.408024 -8.453698 -1.633972
-v -3.578221 -8.453700 -1.629892
-v -3.578254 -8.796082 -1.629893
-v -3.586246 -9.698498 -1.916168
-v -3.416050 -9.698484 -1.920340
-v -3.416016 -7.551282 -1.920340
-v -3.586213 -7.551295 -1.916167
-v -3.452598 -3.660457 0.590285
-v -2.919938 -3.660457 0.575665
-v -2.932979 -3.660457 0.219955
-v -2.932932 -3.660457 -0.219770
-v -2.919737 -3.660457 -0.575551
-v -3.452406 -3.660457 -0.590285
-v -3.452711 -4.387682 0.590285
-v -2.920057 -4.387682 0.575733
-v -2.933006 -4.387682 0.220065
-v -2.932905 -4.387682 -0.219660
-v -2.919617 -4.387682 -0.575483
-v -3.452293 -4.387682 -0.590285
-v -3.985183 -3.431493 0.575598
-v -4.001576 -4.229453 0.329184
-v -4.001621 -4.375394 0.311565
-v -3.994886 -4.384643 0.110682
-v -3.994815 -4.375394 -0.132493
-v -4.001354 -4.229453 -0.329386
-v -4.001415 -3.832827 -0.329352
-v -3.994849 -3.693160 -0.132357
-v -3.994852 -3.683911 0.110818
-v -4.001516 -3.693160 0.311659
-v -4.001516 -3.832827 0.329218
-v -5.796675 6.539385 -0.534346
-v -5.796675 5.920839 -1.385703
-v -5.796674 4.920008 -1.710893
-v -5.796674 3.919178 -1.385704
-v -5.796674 3.300631 -0.534347
-v -5.796674 3.300631 0.517988
-v -5.796674 3.919177 1.369346
-v -5.796674 4.920008 1.694535
-v -5.796675 5.920838 1.369346
-v -5.796675 6.539385 0.517989
-v -5.400309 5.778811 -0.287221
-v -5.400309 5.450778 -0.738720
-v -5.400309 4.920008 -0.911177
-v -5.400309 4.389239 -0.738720
-v -5.400309 4.061206 -0.287221
-v -5.400309 4.061205 0.270863
-v -5.400309 4.389238 0.722362
-v -5.400309 4.920008 0.894819
-v -5.400309 5.450777 0.722362
-v -5.400309 5.778810 0.270863
-v -4.830028 5.920838 -2.288950
-v -3.978671 6.539385 -2.288950
-v -2.926336 6.539386 -2.288950
-v -2.074979 5.920839 -2.288950
-v -1.749789 4.920009 -2.288950
-v -2.074978 3.919179 -2.288951
-v -2.926335 3.300631 -2.288951
-v -3.978670 3.300631 -2.288951
-v -4.830028 3.919178 -2.288951
-v -5.155217 4.920008 -2.288950
-v -4.084959 5.379514 -1.993850
-v -3.694080 5.663505 -1.993850
-v -3.210927 5.663505 -1.993850
-v -2.820047 5.379515 -1.993850
-v -2.670744 4.920009 -1.993850
-v -2.820047 4.460503 -1.993851
-v -3.210926 4.176512 -1.993851
-v -3.694079 4.176512 -1.993851
-v -4.084959 4.460502 -1.993851
-v -4.234262 4.920008 -1.993850
-v -4.830028 5.920838 2.391631
-v -5.155217 4.920008 2.391631
-v -4.830028 3.919178 2.391631
-v -3.978671 3.300631 2.391631
-v -2.926336 3.300631 2.391631
-v -2.074978 3.919178 2.391631
-v -1.749789 4.920008 2.391631
-v -2.074979 5.920838 2.391631
-v -2.926336 6.539385 2.391631
-v -3.978671 6.539385 2.391631
-v -4.109008 5.396987 1.987019
-v -4.263988 4.920008 1.987019
-v -4.109008 4.443029 1.987018
-v -3.703266 4.148240 1.987018
-v -3.201741 4.148240 1.987018
-v -2.795998 4.443029 1.987018
-v -2.641018 4.920008 1.987019
-v -2.795998 5.396987 1.987019
-v -3.201741 5.691775 1.987019
-v -3.703266 5.691776 1.987019
-v -1.131984 5.920839 -1.369037
-v -1.131984 6.539386 -0.517680
-v -1.131984 6.539385 0.534655
-v -1.131984 5.920839 1.386012
-v -1.131984 4.920008 1.711201
-v -1.131984 3.919178 1.386012
-v -1.131984 3.300631 0.534655
-v -1.131984 3.300631 -0.517680
-v -1.131984 3.919178 -1.369037
-v -1.131984 4.920009 -1.694226
-v -1.488951 5.490069 -0.776133
-v -1.488951 5.842386 -0.291211
-v -1.488951 5.842385 0.308186
-v -1.488951 5.490068 0.793108
-v -1.488951 4.920008 0.978332
-v -1.488951 4.349948 0.793108
-v -1.488951 3.997632 0.308186
-v -1.488951 3.997632 -0.291211
-v -1.488951 4.349948 -0.776133
-v -1.488951 4.920009 -0.961357
-v -3.452503 2.530598 1.702714
-v -4.453333 2.530598 1.377525
-v -5.071880 2.530598 0.526168
-v -5.071880 2.530598 -0.526167
-v -4.453333 2.530598 -1.377524
-v -3.452503 2.530598 -1.702714
-v -2.451673 2.530598 -1.377524
-v -1.833126 2.530598 -0.526168
-v -1.833125 2.530598 0.526168
-v -2.451673 2.530598 1.377525
-v -3.452503 2.880706 0.807230
-v -3.926981 2.880706 0.653063
-v -4.220224 2.880706 0.249448
-v -4.220224 2.880706 -0.249448
-v -3.926981 2.880706 -0.653063
-v -3.452503 2.880706 -0.807230
-v -2.978025 2.880706 -0.653063
-v -2.684781 2.880706 -0.249448
-v -2.684781 2.880706 0.249448
-v -2.978025 2.880706 0.653063
-v -2.074979 5.920838 7.719259
-v -2.926336 6.539385 7.719259
-v -3.978671 6.539384 7.719259
-v -4.830028 5.920838 7.719259
-v -5.155217 4.920007 7.719259
-v -4.830028 3.919177 7.719259
-v -3.978671 3.300630 7.719259
-v -2.926335 3.300630 7.719259
-v -2.074978 3.919177 7.719259
-v -1.749789 4.920008 7.719259
-v -2.074979 5.920837 8.765801
-v -2.926336 6.539385 8.765801
-v -3.978671 6.539384 8.765801
-v -4.830028 5.920838 8.765801
-v -5.155217 4.920007 8.765800
-v -4.830028 3.919177 8.765800
-v -3.978671 3.300630 8.765800
-v -2.926335 3.300630 8.765800
-v -2.074978 3.919177 8.765800
-v -1.749789 4.920007 8.765800
-v -1.773486 4.966765 8.707236
-v -1.930660 5.450499 8.707236
-v -1.773486 4.966764 8.201406
-v -1.930660 5.450499 8.201406
-v -3.269165 -13.225970 -0.596193
-v -3.665772 -13.225968 -0.586767
-v -3.980913 -13.225971 -0.526423
-v -3.969388 -13.225972 0.022723
-v -3.962419 -13.225971 0.563191
-v -3.635842 -13.225970 0.596188
-v -3.239237 -13.225971 0.586764
-v 8.708556 -13.199268 0.832429
-v 8.708556 -12.664494 0.534774
-v 8.708556 -12.510531 -0.000001
-v 8.708556 -12.664493 -0.534777
-v 8.708556 -13.199267 -0.832431
-v 8.708556 -13.734045 -0.534777
-v 8.708556 -13.888007 -0.000001
-v 8.708556 -13.734046 0.534774
-v 3.087406 -13.199271 0.832429
-v 3.087406 -12.664495 0.534774
-v 3.087406 -12.510535 -0.000001
-v 3.087406 -12.664495 -0.534777
-v 3.087406 -13.199271 -0.832431
-v 3.087406 -13.734049 -0.534777
-v 3.087406 -13.888011 -0.000001
-v 3.087406 -13.734049 0.534774
-v 8.436390 -12.408905 0.727682
-v 8.436390 -12.181362 -0.000001
-v 8.436390 -12.408904 -0.727685
-v 8.436390 -13.199265 -1.132712
-v 8.436390 -13.989630 -0.727685
-v 8.436390 -14.217177 -0.000001
-v 8.436390 -13.989631 0.727682
-v 8.436390 -13.199266 1.132709
-v 3.400564 -12.408908 0.727682
-v 3.400564 -12.181365 -0.000001
-v 3.400564 -12.408908 -0.727685
-v 3.400564 -13.199270 -1.132712
-v 3.400564 -13.989635 -0.727685
-v 3.400564 -14.217182 -0.000001
-v 3.400564 -13.989635 0.727682
-v 3.400564 -13.199270 1.132709
-v -1.833125 0.386734 0.363817
-v -1.833125 0.386734 -0.363817
-v -1.833125 0.981275 -0.363817
-v -1.833125 0.981275 0.363817
-v -0.635774 -1.192150 0.981227
-v -0.635775 -1.192150 -0.981228
-v -0.635775 0.386735 -0.678467
-v -0.635775 0.386734 0.678466
-vt 0.375000 0.000000
-vt 0.500000 0.000000
-vt 0.500000 0.125000
-vt 0.375000 0.125000
-vt 0.625000 0.000000
-vt 0.625000 0.125000
-vt 0.500000 0.250000
-vt 0.375000 0.250000
-vt 0.625000 0.250000
-vt 0.375000 0.500000
-vt 0.500000 0.500000
-vt 0.500000 0.625000
-vt 0.375000 0.625000
-vt 0.625000 0.500000
-vt 0.625000 0.625000
-vt 0.500000 0.750000
-vt 0.375000 0.750000
-vt 0.625000 0.750000
-vt 0.500000 0.875000
-vt 0.375000 0.875000
-vt 0.625000 0.875000
-vt 0.500000 1.000000
-vt 0.375000 1.000000
-vt 0.625000 1.000000
-vt 0.750000 0.000000
-vt 0.875000 0.000000
-vt 0.875000 0.125000
-vt 0.750000 0.125000
-vt 0.812500 0.250000
-vt 0.125000 0.000000
-vt 0.250000 0.000000
-vt 0.250000 0.125000
-vt 0.125000 0.125000
-vt 0.187500 0.250000
-vt 0.875000 0.250000
-vt 0.750000 0.250000
-vt 0.250000 0.250000
-vt 0.125000 0.250000
-vt 0.863384 0.125000
-vt 0.863384 0.093209
-vt 0.873244 0.093209
-vt 0.873244 0.125000
-vt 0.805064 0.125000
-vt 0.805064 0.093209
-vt 0.812500 0.093209
-vt 0.812500 0.125000
-vt 0.375000 0.003277
-vt 0.500000 0.003277
-vt 0.625000 0.003277
-vt 0.500000 0.746723
-vt 0.375000 0.746723
-vt 0.625000 0.746723
-vt 0.750000 0.003277
-vt 0.875000 0.003277
-vt 0.125000 0.003277
-vt 0.250000 0.003277
-vt 0.500000 0.502790
-vt 0.625000 0.502790
-vt 0.625000 0.581532
-vt 0.500000 0.581532
-vt 0.375000 0.502790
-vt 0.375000 0.581532
-vt 0.125000 0.168468
-vt 0.250000 0.168468
-vt 0.250000 0.247210
-vt 0.125000 0.247210
-vt 0.375000 0.168468
-vt 0.375000 0.247210
-vt 0.500000 0.168468
-vt 0.500000 0.247210
-vt 0.625000 0.168468
-vt 0.625000 0.247210
-vt 0.750000 0.168468
-vt 0.750000 0.247210
-vt 0.875000 0.168468
-vt 0.875000 0.247210
-vt 0.451716 0.304853
-vt 0.548284 0.304853
-vt 0.656250 0.156250
-vt 0.626409 0.064409
-vt 0.343750 0.156250
-vt 0.373591 0.248091
-vt 0.500000 0.375000
-vt 0.375000 0.375000
-vt 0.625000 0.375000
-vt 0.375000 0.414831
-vt 0.437500 0.414831
-vt 0.437500 0.429007
-vt 0.375000 0.429007
-vt 0.500000 0.414831
-vt 0.500000 0.429007
-vt 0.562500 0.414831
-vt 0.562500 0.429007
-vt 0.625000 0.414831
-vt 0.625000 0.429007
-vt 0.375000 0.498244
-vt 0.437500 0.498244
-vt 0.437500 0.500000
-vt 0.500000 0.498244
-vt 0.562500 0.498244
-vt 0.625000 0.498244
-vt 0.562500 0.500000
-vt 0.437500 0.562500
-vt 0.375000 0.562500
-vt 0.500000 0.562500
-vt 0.562500 0.562500
-vt 0.625000 0.562500
-vt 0.437500 0.625000
-vt 0.562500 0.625000
-vt 0.437500 0.656791
-vt 0.375000 0.656791
-vt 0.500000 0.656791
-vt 0.562500 0.656791
-vt 0.625000 0.656791
-vt 0.375000 0.687500
-vt 0.437500 0.687500
-vt 0.437500 0.750000
-vt 0.500000 0.687500
-vt 0.562500 0.687500
-vt 0.562500 0.750000
-vt 0.625000 0.687500
-vt 0.437500 0.751756
-vt 0.375000 0.751756
-vt 0.500000 0.751756
-vt 0.625000 0.751756
-vt 0.562500 0.751756
-vt 0.375000 0.820993
-vt 0.437500 0.820993
-vt 0.437500 0.835169
-vt 0.375000 0.835169
-vt 0.500000 0.820993
-vt 0.500000 0.835169
-vt 0.562500 0.820993
-vt 0.562500 0.835169
-vt 0.625000 0.820993
-vt 0.625000 0.835169
-vt 0.873244 0.000000
-vt 0.875000 0.062500
-vt 0.873244 0.062500
-vt 0.789831 0.062500
-vt 0.789831 0.000000
-vt 0.804007 0.000000
-vt 0.804007 0.062500
-vt 0.875000 0.093209
-vt 0.789831 0.093209
-vt 0.804007 0.093209
-vt 0.804007 0.125000
-vt 0.789831 0.125000
-vt 0.873244 0.187500
-vt 0.875000 0.187500
-vt 0.804007 0.187500
-vt 0.789831 0.187500
-vt 0.873244 0.250000
-vt 0.804007 0.250000
-vt 0.789831 0.250000
-vt 0.126756 0.000000
-vt 0.126756 0.062500
-vt 0.125000 0.062500
-vt 0.195993 0.000000
-vt 0.210169 0.000000
-vt 0.210169 0.062500
-vt 0.195993 0.062500
-vt 0.125000 0.093209
-vt 0.126756 0.093209
-vt 0.126756 0.125000
-vt 0.195993 0.093209
-vt 0.210169 0.093209
-vt 0.210169 0.125000
-vt 0.195993 0.125000
-vt 0.126756 0.187500
-vt 0.125000 0.187500
-vt 0.210169 0.187500
-vt 0.195993 0.187500
-vt 0.126756 0.250000
-vt 0.210169 0.250000
-vt 0.195993 0.250000
-vt 0.814379 0.093209
-vt 0.814379 0.125000
-vt 0.812500 0.000000
-vt 0.814379 0.000000
-vt 0.814379 0.062500
-vt 0.812500 0.062500
-vt 0.562500 0.810621
-vt 0.625000 0.810621
-vt 0.625000 0.812500
-vt 0.562500 0.812500
-vt 0.437500 0.810621
-vt 0.500000 0.810621
-vt 0.500000 0.812500
-vt 0.437500 0.812500
-vt 0.375000 0.810621
-vt 0.375000 0.812500
-vt 0.185621 0.062500
-vt 0.185621 0.000000
-vt 0.187500 0.000000
-vt 0.187500 0.062500
-vt 0.185621 0.125000
-vt 0.185621 0.093209
-vt 0.187500 0.093209
-vt 0.187500 0.125000
-vt 0.185621 0.187500
-vt 0.187500 0.187500
-vt 0.185621 0.250000
-vt 0.375000 0.437500
-vt 0.437500 0.437500
-vt 0.437500 0.439379
-vt 0.375000 0.439379
-vt 0.500000 0.437500
-vt 0.500000 0.439379
-vt 0.562500 0.437500
-vt 0.625000 0.437500
-vt 0.625000 0.439379
-vt 0.562500 0.439379
-vt 0.812500 0.187500
-vt 0.814379 0.187500
-vt 0.814379 0.250000
-vt 0.804007 0.078516
-vt 0.789831 0.078516
-vt 0.814379 0.078516
-vt 0.812500 0.078516
-vt 0.875000 0.078516
-vt 0.873244 0.078516
-vt 0.562500 0.671484
-vt 0.625000 0.671484
-vt 0.500000 0.671484
-vt 0.437500 0.671484
-vt 0.375000 0.671484
-vt 0.126756 0.078516
-vt 0.125000 0.078516
-vt 0.187500 0.078516
-vt 0.185621 0.078516
-vt 0.210169 0.078516
-vt 0.195993 0.078516
-vt 0.562500 0.488384
-vt 0.625000 0.488384
-vt 0.500000 0.488384
-vt 0.437500 0.488384
-vt 0.375000 0.488384
-vt 0.136616 0.187500
-vt 0.136616 0.250000
-vt 0.136616 0.125000
-vt 0.136616 0.093209
-vt 0.136616 0.062500
-vt 0.136616 0.078516
-vt 0.136616 0.000000
-vt 0.437500 0.761616
-vt 0.375000 0.761616
-vt 0.500000 0.761616
-vt 0.562500 0.761616
-vt 0.625000 0.761616
-vt 0.863384 0.062500
-vt 0.863384 0.000000
-vt 0.863384 0.078516
-vt 0.863384 0.187500
-vt 0.863384 0.250000
-vt 0.562500 0.430064
-vt 0.625000 0.430064
-vt 0.500000 0.430064
-vt 0.437500 0.430064
-vt 0.375000 0.430064
-vt 0.194936 0.187500
-vt 0.194936 0.250000
-vt 0.194936 0.125000
-vt 0.194936 0.093209
-vt 0.194936 0.062500
-vt 0.194936 0.078516
-vt 0.194936 0.000000
-vt 0.437500 0.819936
-vt 0.375000 0.819936
-vt 0.500000 0.819936
-vt 0.562500 0.819936
-vt 0.625000 0.819936
-vt 0.805064 0.062500
-vt 0.805064 0.000000
-vt 0.805064 0.078516
-vt 0.805064 0.187500
-vt 0.805064 0.250000
-vt 0.500000 0.851246
-vt 0.562500 0.851246
-vt 0.562500 0.875000
-vt 0.437500 0.851246
-vt 0.437500 0.875000
-vt 0.375000 0.851246
-vt 0.226246 0.062500
-vt 0.226246 0.000000
-vt 0.250000 0.070508
-vt 0.226246 0.078516
-vt 0.226246 0.125000
-vt 0.226246 0.093209
-vt 0.250000 0.093209
-vt 0.226246 0.187500
-vt 0.250000 0.187500
-vt 0.226246 0.250000
-vt 0.437500 0.375000
-vt 0.437500 0.398754
-vt 0.375000 0.398754
-vt 0.500000 0.398754
-vt 0.562500 0.375000
-vt 0.625000 0.398754
-vt 0.562500 0.398754
-vt 0.750000 0.187500
-vt 0.773754 0.187500
-vt 0.773754 0.250000
-vt 0.773754 0.125000
-vt 0.750000 0.078075
-vt 0.773754 0.093209
-vt 0.773754 0.062500
-vt 0.773754 0.078516
-vt 0.773754 0.000000
-vt 0.625000 0.851246
-vt 0.437500 0.847943
-vt 0.500000 0.847943
-vt 0.500000 0.849160
-vt 0.437500 0.849160
-vt 0.375000 0.847943
-vt 0.375000 0.849160
-vt 0.222943 0.062500
-vt 0.222943 0.000000
-vt 0.224160 0.000000
-vt 0.224160 0.062500
-vt 0.222943 0.078516
-vt 0.224160 0.078516
-vt 0.222943 0.125000
-vt 0.222943 0.093209
-vt 0.224160 0.093209
-vt 0.224160 0.125000
-vt 0.222943 0.187500
-vt 0.224160 0.187500
-vt 0.222943 0.250000
-vt 0.224160 0.250000
-vt 0.375000 0.400840
-vt 0.437500 0.400840
-vt 0.437500 0.402057
-vt 0.375000 0.402057
-vt 0.500000 0.400840
-vt 0.500000 0.402057
-vt 0.562500 0.400840
-vt 0.562500 0.402057
-vt 0.625000 0.400840
-vt 0.625000 0.402057
-vt 0.775840 0.187500
-vt 0.777057 0.187500
-vt 0.777057 0.250000
-vt 0.775840 0.250000
-vt 0.775840 0.125000
-vt 0.777057 0.125000
-vt 0.775840 0.093209
-vt 0.777057 0.093209
-vt 0.775840 0.062500
-vt 0.777057 0.062500
-vt 0.777057 0.078516
-vt 0.775840 0.078516
-vt 0.775840 0.000000
-vt 0.777057 0.000000
-vt 0.562500 0.847943
-vt 0.625000 0.847943
-vt 0.625000 0.849160
-vt 0.562500 0.849160
-vt 0.562500 0.849381
-vt 0.562500 0.849602
-vt 0.437500 0.849602
-vt 0.375000 0.849602
-vt 0.224602 0.000000
-vt 0.224602 0.062500
-vt 0.224602 0.078516
-vt 0.224602 0.093209
-vt 0.224602 0.125000
-vt 0.224602 0.187500
-vt 0.224602 0.250000
-vt 0.375000 0.400398
-vt 0.437500 0.400398
-vt 0.500000 0.400398
-vt 0.562500 0.400398
-vt 0.625000 0.400398
-vt 0.775398 0.187500
-vt 0.775398 0.250000
-vt 0.775398 0.125000
-vt 0.775398 0.093209
-vt 0.775398 0.062500
-vt 0.775398 0.078516
-vt 0.775398 0.000000
-vt 0.625000 0.849602
-vt 0.562500 0.850047
-vt 0.500000 0.850047
-vt 0.437500 0.850047
-vt 0.375000 0.850047
-vt 0.225047 0.062500
-vt 0.225047 0.000000
-vt 0.225047 0.078516
-vt 0.225047 0.125000
-vt 0.225047 0.093209
-vt 0.225047 0.187500
-vt 0.225047 0.250000
-vt 0.437500 0.399953
-vt 0.375000 0.399953
-vt 0.500000 0.399953
-vt 0.562500 0.399953
-vt 0.625000 0.399953
-vt 0.774953 0.187500
-vt 0.774953 0.250000
-vt 0.774953 0.125000
-vt 0.774953 0.093209
-vt 0.774953 0.062500
-vt 0.774953 0.078516
-vt 0.774953 0.000000
-vt 0.625000 0.850047
-vt 0.562500 0.837352
-vt 0.625000 0.837352
-vt 0.500000 0.837352
-vt 0.437500 0.837352
-vt 0.375000 0.837352
-vt 0.212352 0.062500
-vt 0.212352 0.000000
-vt 0.212352 0.078516
-vt 0.212352 0.125000
-vt 0.212352 0.093209
-vt 0.212352 0.187500
-vt 0.212352 0.250000
-vt 0.437500 0.412648
-vt 0.375000 0.412648
-vt 0.500000 0.412648
-vt 0.562500 0.412648
-vt 0.625000 0.412648
-vt 0.787648 0.187500
-vt 0.787648 0.250000
-vt 0.787648 0.125000
-vt 0.787648 0.093209
-vt 0.787648 0.062500
-vt 0.787648 0.078516
-vt 0.787648 0.000000
-vt 0.250000 0.078075
-vt 0.625000 0.000699
-vt 0.500000 0.000699
-vt 0.500000 0.749301
-vt 0.625000 0.749301
-vt 0.875000 0.000699
-vt 0.750000 0.000699
-vt 0.750000 0.042255
-vt 0.625000 0.042255
-vt 0.500000 0.042255
-vt 0.875000 0.042255
-vt 0.500000 0.707745
-vt 0.625000 0.707745
-vt 0.626409 0.248091
-vt 0.375000 0.312500
-vt 0.406250 0.312500
-vt 0.406250 0.437813
-vt 0.375000 0.437813
-vt 0.437500 0.312500
-vt 0.437500 0.437813
-vt 0.468750 0.312500
-vt 0.468750 0.437813
-vt 0.500000 0.312500
-vt 0.500000 0.437813
-vt 0.531250 0.312500
-vt 0.531250 0.437813
-vt 0.562500 0.312500
-vt 0.562500 0.437813
-vt 0.593750 0.312500
-vt 0.593750 0.437813
-vt 0.625000 0.312500
-vt 0.625000 0.437813
-vt 0.406250 0.563127
-vt 0.375000 0.563127
-vt 0.437500 0.563127
-vt 0.468750 0.563127
-vt 0.500000 0.563127
-vt 0.531250 0.563127
-vt 0.562500 0.563127
-vt 0.593750 0.563127
-vt 0.625000 0.563127
-vt 0.406250 0.688440
-vt 0.375000 0.688440
-vt 0.437500 0.688440
-vt 0.468750 0.688440
-vt 0.500000 0.688440
-vt 0.531250 0.688440
-vt 0.562500 0.688440
-vt 0.593750 0.688440
-vt 0.625000 0.688440
-vt 0.610485 0.045765
-vt 0.500000 0.150000
-vt 0.389515 0.045765
-vt 0.343750 0.156250
-vt 0.389515 0.266735
-vt 0.610485 0.266735
-vt 0.610485 0.954235
-vt 0.500000 0.837500
-vt 0.389515 0.954235
-vt 0.343750 0.843750
-vt 0.389515 0.733265
-vt 0.610485 0.733265
-vt 0.656250 0.843750
-vt 0.400000 0.312500
-vt 0.400000 0.335203
-vt 0.375000 0.335203
-vt 0.425000 0.312500
-vt 0.425000 0.335203
-vt 0.450000 0.312500
-vt 0.450000 0.335203
-vt 0.475000 0.312500
-vt 0.475000 0.335203
-vt 0.500000 0.335203
-vt 0.525000 0.312500
-vt 0.525000 0.335203
-vt 0.550000 0.312500
-vt 0.550000 0.335203
-vt 0.575000 0.312500
-vt 0.575000 0.335203
-vt 0.600000 0.312500
-vt 0.600000 0.335203
-vt 0.625000 0.335203
-vt 0.400000 0.437813
-vt 0.400000 0.552630
-vt 0.375000 0.552630
-vt 0.425000 0.437813
-vt 0.425000 0.552630
-vt 0.450000 0.437813
-vt 0.450000 0.552630
-vt 0.475000 0.437813
-vt 0.475000 0.552630
-vt 0.500000 0.552630
-vt 0.525000 0.437813
-vt 0.525000 0.552630
-vt 0.550000 0.437813
-vt 0.550000 0.552630
-vt 0.575000 0.437813
-vt 0.575000 0.552630
-vt 0.600000 0.437813
-vt 0.600000 0.552630
-vt 0.625000 0.552630
-vt 0.400000 0.563127
-vt 0.400000 0.651958
-vt 0.375000 0.651958
-vt 0.425000 0.563127
-vt 0.425000 0.651958
-vt 0.450000 0.563127
-vt 0.450000 0.651958
-vt 0.475000 0.563127
-vt 0.475000 0.651958
-vt 0.500000 0.651958
-vt 0.525000 0.563127
-vt 0.525000 0.651958
-vt 0.550000 0.563127
-vt 0.550000 0.651958
-vt 0.575000 0.563127
-vt 0.575000 0.651958
-vt 0.600000 0.563127
-vt 0.600000 0.651958
-vt 0.625000 0.651958
-vt 0.548284 0.007647
-vt 0.451716 0.007647
-vt 0.373591 0.064409
-vt 0.537500 0.688440
-vt 0.475000 0.688440
-vt 0.450000 0.688440
-vt 0.412500 0.688440
-vt 0.600000 0.688440
-vt 0.575000 0.688440
-vt 0.400000 0.549851
-vt 0.375000 0.549851
-vt 0.425000 0.549851
-vt 0.450000 0.549851
-vt 0.475000 0.549851
-vt 0.500000 0.549851
-vt 0.525000 0.549851
-vt 0.550000 0.549851
-vt 0.575000 0.549851
-vt 0.600000 0.549851
-vt 0.625000 0.549851
-vt 0.400000 0.553417
-vt 0.375000 0.553417
-vt 0.450000 0.553417
-vt 0.425000 0.553417
-vt 0.475000 0.553417
-vt 0.500000 0.553417
-vt 0.525000 0.553417
-vt 0.550000 0.553417
-vt 0.575000 0.553417
-vt 0.600000 0.553417
-vt 0.625000 0.553417
-vt 0.400000 0.627190
-vt 0.375000 0.627190
-vt 0.425000 0.627190
-vt 0.450000 0.627190
-vt 0.475000 0.627190
-vt 0.500000 0.627190
-vt 0.525000 0.627190
-vt 0.550000 0.627190
-vt 0.575000 0.627190
-vt 0.600000 0.627190
-vt 0.625000 0.627190
-vt 0.400000 0.550179
-vt 0.375000 0.550179
-vt 0.425000 0.550179
-vt 0.450000 0.550179
-vt 0.475000 0.550179
-vt 0.500000 0.550179
-vt 0.525000 0.550179
-vt 0.550000 0.550179
-vt 0.575000 0.550179
-vt 0.600000 0.550179
-vt 0.625000 0.550179
-vt 0.575000 0.358212
-vt 0.550000 0.358212
-vt 0.525000 0.358212
-vt 0.500000 0.358212
-vt 0.475000 0.358212
-vt 0.450000 0.358212
-vt 0.425000 0.358212
-vt 0.400000 0.358212
-vt 0.375000 0.358212
-vt 0.625000 0.358212
-vt 0.600000 0.358212
-vt 0.400000 0.551506
-vt 0.375000 0.551506
-vt 0.425000 0.551506
-vt 0.450000 0.551506
-vt 0.475000 0.551506
-vt 0.500000 0.551506
-vt 0.525000 0.551506
-vt 0.550000 0.551506
-vt 0.575000 0.551506
-vt 0.600000 0.551506
-vt 0.625000 0.551506
-vt 0.625000 0.561237
-vt 0.600000 0.561237
-vt 0.575000 0.561237
-vt 0.550000 0.561237
-vt 0.525000 0.561237
-vt 0.500000 0.561237
-vt 0.475000 0.561237
-vt 0.450000 0.561237
-vt 0.425000 0.561237
-vt 0.400000 0.561237
-vt 0.375000 0.561237
-vt 0.525000 0.557124
-vt 0.500000 0.557124
-vt 0.475000 0.557124
-vt 0.450000 0.557124
-vt 0.425000 0.557124
-vt 0.400000 0.557124
-vt 0.375000 0.557124
-vt 0.625000 0.557124
-vt 0.600000 0.557124
-vt 0.575000 0.557124
-vt 0.550000 0.557124
-vt 0.575000 0.558250
-vt 0.550000 0.558250
-vt 0.525000 0.558250
-vt 0.500000 0.558250
-vt 0.475000 0.558250
-vt 0.450000 0.558250
-vt 0.425000 0.558250
-vt 0.400000 0.558250
-vt 0.375000 0.558250
-vt 0.625000 0.558250
-vt 0.600000 0.558250
-vt 0.500000 0.556170
-vt 0.475000 0.556170
-vt 0.450000 0.556170
-vt 0.425000 0.556170
-vt 0.400000 0.556170
-vt 0.375000 0.556170
-vt 0.625000 0.556170
-vt 0.600000 0.556170
-vt 0.575000 0.556170
-vt 0.550000 0.556170
-vt 0.525000 0.556170
-vt 0.600000 0.562207
-vt 0.575000 0.562207
-vt 0.550000 0.562207
-vt 0.525000 0.562207
-vt 0.500000 0.562207
-vt 0.475000 0.562207
-vt 0.450000 0.562207
-vt 0.425000 0.562207
-vt 0.400000 0.562207
-vt 0.375000 0.562207
-vt 0.625000 0.562207
-vt 0.550000 0.387379
-vt 0.575000 0.387379
-vt 0.525000 0.387379
-vt 0.500000 0.387379
-vt 0.475000 0.387379
-vt 0.450000 0.387379
-vt 0.425000 0.387379
-vt 0.400000 0.387379
-vt 0.375000 0.387379
-vt 0.600000 0.387379
-vt 0.625000 0.387379
-vt 0.600000 0.372795
-vt 0.625000 0.087172
-vt 0.750000 0.087172
-vt 0.500000 0.087172
-vt 0.875000 0.087172
-vt 0.500000 0.662828
-vt 0.625000 0.662828
-vt 0.750000 0.046608
-vt 0.625000 0.046608
-vt 0.500000 0.046608
-vt 0.875000 0.046608
-vt 0.500000 0.703392
-vt 0.625000 0.703392
-vt 0.500000 0.083147
-vt 0.625000 0.083147
-vt 0.750000 0.083147
-vt 0.875000 0.083147
-vt 0.500000 0.666853
-vt 0.625000 0.666853
-usemtl ISSGray2
-s 1
-f 1/1 2/2 5/3 4/4
-f 2/2 3/5 6/6 5/3
-f 4/4 5/3 8/7 7/8
-f 5/3 6/6 9/9 8/7
-f 7/10 11/11 13/12 12/13
-f 11/11 10/14 14/15 13/12
-f 12/13 13/12 16/16 15/17
-f 13/12 14/15 17/18 16/16
-f 15/17 16/16 19/19 18/20
-f 16/16 17/18 20/21 19/19
-f 18/20 19/19 2/22 1/23
-f 19/19 20/21 3/24 2/22
-f 20/25 17/26 14/27 21/28
-f 3/5 20/25 21/28 6/6
-f 21/28 14/27 10/29
-f 6/6 21/28 10/29 9/9
-f 15/30 18/31 22/32 12/33
-f 18/31 1/1 4/4 22/32
-f 12/33 22/32 7/34
-f 22/32 4/4 7/8
-f 23/1 24/2 27/3 26/4
-f 24/2 25/5 28/6 27/3
-f 26/4 27/3 30/7 29/8
-f 27/3 28/6 31/9 30/7
-f 34/10 35/11 38/12 37/13
-f 35/11 36/14 39/15 38/12
-f 37/13 38/12 41/16 40/17
-f 38/12 39/15 42/18 41/16
-f 40/17 41/16 44/19 43/20
-f 41/16 42/18 45/21 44/19
-f 43/20 44/19 24/22 23/23
-f 44/19 45/21 25/24 24/22
-f 45/25 42/26 39/27 46/28
-f 25/5 45/25 46/28 28/6
-f 46/28 39/27 36/35 33/36
-f 28/6 46/28 33/36 31/9
-f 40/30 43/31 47/32 37/33
-f 43/31 23/1 26/4 47/32
-f 37/33 47/32 32/37 34/38
-f 47/32 26/4 29/8 32/37
-f 48/1 49/2 52/3 51/4
-f 49/2 50/5 53/6 52/3
-f 51/4 52/3 55/7 54/8
-f 52/3 53/6 56/9 55/7
-f 59/10 60/11 63/12 62/13
-f 60/11 61/14 64/15 63/12
-f 62/13 63/12 66/16 65/17
-f 63/12 64/15 67/18 66/16
-f 65/17 66/16 69/19 68/20
-f 66/16 67/18 70/21 69/19
-f 68/20 69/19 49/22 48/23
-f 69/19 70/21 50/24 49/22
-f 70/25 67/26 64/27 71/28
-f 50/5 70/25 71/28 53/6
-f 71/28 64/27 61/35 58/36
-f 53/6 71/28 58/36 56/9
-f 65/30 68/31 72/32 62/33
-f 68/31 48/1 51/4 72/32
-f 62/33 72/32 57/37 59/38
-f 72/32 51/4 54/8 57/37
-f 546/39 545/40 547/41 548/42
-f 550/43 549/44 551/45 552/46
-f 507/39 506/40 861/40 862/39
-f 506/40 483/41 860/41 861/40
-f 483/41 466/42 863/42 860/41
-f 466/42 507/39 862/39 863/42
-f 525/43 524/44 874/44 875/43
-f 524/44 482/45 873/45 874/44
-f 482/45 456/46 872/46 873/45
-f 456/46 525/43 875/43 872/46
-f 853/40 852/41 547/41 545/40
-f 854/39 853/40 545/40 546/39
-f 855/42 854/39 546/39 548/42
-f 852/41 855/42 548/42 547/41
-f 857/40 856/41 852/41 853/40
-f 858/39 857/40 853/40 854/39
-f 859/42 858/39 854/39 855/42
-f 856/41 859/42 855/42 852/41
-f 861/40 860/41 856/41 857/40
-f 862/39 861/40 857/40 858/39
-f 863/42 862/39 858/39 859/42
-f 860/41 863/42 859/42 856/41
-f 865/45 864/46 552/46 551/45
-f 866/44 865/45 551/45 549/44
-f 867/43 866/44 549/44 550/43
-f 864/46 867/43 550/43 552/46
-f 869/45 868/46 864/46 865/45
-f 870/44 869/45 865/45 866/44
-f 871/43 870/44 866/44 867/43
-f 868/46 871/43 867/43 864/46
-f 873/45 872/46 868/46 869/45
-f 874/44 873/45 869/45 870/44
-f 875/43 874/44 870/44 871/43
-f 872/46 875/43 871/43 868/46
-f 1003/1 1006/4 1005/3 1004/2
-f 1004/2 1005/3 1008/6 1007/5
-f 1006/4 1010/37 1009/7 1005/3
-f 1005/3 1009/7 1011/9 1008/6
-f 1010/10 1014/13 1013/12 1012/11
-f 1012/11 1013/12 1016/15 1015/14
-f 1014/13 1018/17 1017/16 1013/12
-f 1013/12 1017/16 1019/18 1016/15
-f 1018/17 1021/20 1020/19 1017/16
-f 1017/16 1020/19 1022/21 1019/18
-f 1021/20 1003/23 1004/22 1020/19
-f 1020/19 1004/22 1007/24 1022/21
-f 1022/25 1023/28 1016/27 1019/26
-f 1007/5 1008/6 1023/28 1022/25
-f 1023/28 1015/29 1016/27
-f 1008/6 1011/9 1015/29 1023/28
-f 1018/30 1014/33 1024/32 1021/31
-f 1021/31 1024/32 1006/4 1003/1
-f 1014/33 1010/37 1024/32
-f 1024/32 1010/37 1006/4
-f 1025/1 1028/4 1027/3 1026/2
-f 1026/2 1027/3 1030/6 1029/5
-f 1028/4 1032/8 1031/7 1027/3
-f 1027/3 1031/7 1033/9 1030/6
-f 1034/10 1037/13 1036/12 1035/11
-f 1035/11 1036/12 1039/15 1038/14
-f 1037/13 1041/17 1040/16 1036/12
-f 1036/12 1040/16 1042/18 1039/15
-f 1041/17 1044/20 1043/19 1040/16
-f 1040/16 1043/19 1045/21 1042/18
-f 1044/20 1025/23 1026/22 1043/19
-f 1043/19 1026/22 1029/24 1045/21
-f 1045/25 1046/28 1039/27 1042/26
-f 1029/5 1030/6 1046/28 1045/25
-f 1046/28 1047/36 1038/35 1039/27
-f 1030/6 1033/9 1047/36 1046/28
-f 1041/30 1037/33 1048/32 1044/31
-f 1044/31 1048/32 1028/4 1025/1
-f 1037/33 1034/38 1049/37 1048/32
-f 1048/32 1049/37 1032/8 1028/4
-f 1050/1 1053/4 1052/3 1051/2
-f 1051/2 1052/3 1055/6 1054/5
-f 1053/4 1057/8 1056/7 1052/3
-f 1052/3 1056/7 1058/9 1055/6
-f 1059/10 1062/13 1061/12 1060/11
-f 1060/11 1061/12 1064/15 1063/14
-f 1062/13 1066/17 1065/16 1061/12
-f 1061/12 1065/16 1067/18 1064/15
-f 1066/17 1069/20 1068/19 1065/16
-f 1065/16 1068/19 1070/21 1067/18
-f 1069/20 1050/23 1051/22 1068/19
-f 1068/19 1051/22 1054/24 1070/21
-f 1070/25 1071/28 1064/27 1067/26
-f 1054/5 1055/6 1071/28 1070/25
-f 1071/28 1072/36 1063/35 1064/27
-f 1055/6 1058/9 1072/36 1071/28
-f 1066/30 1062/33 1073/32 1069/31
-f 1069/31 1073/32 1053/4 1050/1
-f 1062/33 1059/38 1074/37 1073/32
-f 1073/32 1074/37 1057/8 1053/4
-f 1563/39 1566/42 1565/41 1564/40
-f 1586/43 1589/46 1588/45 1587/44
-f 1568/39 1594/39 1593/40 1592/40
-f 1592/40 1593/40 1595/41 1474/41
-f 1474/41 1595/41 1596/42 1475/42
-f 1475/42 1596/42 1594/39 1568/39
-f 1591/43 1599/43 1598/44 1597/44
-f 1597/44 1598/44 1600/45 1495/45
-f 1495/45 1600/45 1601/46 1498/46
-f 1498/46 1601/46 1599/43 1591/43
-f 1893/40 1564/40 1565/41 1894/41
-f 1895/39 1563/39 1564/40 1893/40
-f 1896/42 1566/42 1563/39 1895/39
-f 1894/41 1565/41 1566/42 1896/42
-f 1897/40 1893/40 1894/41 1898/41
-f 1899/39 1895/39 1893/40 1897/40
-f 1900/42 1896/42 1895/39 1899/39
-f 1898/41 1894/41 1896/42 1900/42
-f 1593/40 1897/40 1898/41 1595/41
-f 1594/39 1899/39 1897/40 1593/40
-f 1596/42 1900/42 1899/39 1594/39
-f 1595/41 1898/41 1900/42 1596/42
-f 1901/45 1588/45 1589/46 1902/46
-f 1903/44 1587/44 1588/45 1901/45
-f 1904/43 1586/43 1587/44 1903/44
-f 1902/46 1589/46 1586/43 1904/43
-f 1905/45 1901/45 1902/46 1906/46
-f 1907/44 1903/44 1901/45 1905/45
-f 1908/43 1904/43 1903/44 1907/44
-f 1906/46 1902/46 1904/43 1908/43
-f 1600/45 1905/45 1906/46 1601/46
-f 1598/44 1907/44 1905/45 1600/45
-f 1599/43 1908/43 1907/44 1598/44
-f 1601/46 1906/46 1908/43 1599/43
-usemtl ISSSolarPanels
-f 111/47 112/48 77/3 76/4
-f 112/48 113/49 78/6 77/3
-f 88/13 89/12 108/50 109/51
-f 89/12 90/15 107/52 108/50
-f 114/53 107/54 90/27 97/28
-f 113/49 114/53 97/28 78/6
-f 109/55 110/56 98/32 88/33
-f 110/56 111/47 76/4 98/32
-f 100/57 99/58 115/59 116/60
-f 101/61 100/57 116/60 117/62
-f 117/63 118/64 102/65 101/66
-f 118/64 119/67 103/68 102/65
-f 119/67 120/69 104/70 103/68
-f 120/69 121/71 105/72 104/70
-f 121/71 122/73 106/74 105/72
-f 122/73 115/75 99/76 106/74
-f 116/60 115/59 90/15 89/12
-f 117/62 116/60 89/12 88/13
-f 88/33 98/32 118/64 117/63
-f 98/32 76/4 119/67 118/64
-f 76/4 77/3 120/69 119/67
-f 77/3 78/6 121/71 120/69
-f 78/6 97/28 122/73 121/71
-f 97/28 90/27 115/75 122/73
-f 161/47 162/48 127/3 126/4
-f 162/48 163/49 128/6 127/3
-f 138/13 139/12 158/50 159/51
-f 139/12 140/15 157/52 158/50
-f 164/53 157/54 140/27 147/28
-f 163/49 164/53 147/28 128/6
-f 159/55 160/56 148/32 138/33
-f 160/56 161/47 126/4 148/32
-f 150/57 149/58 165/59 166/60
-f 151/61 150/57 166/60 167/62
-f 167/63 168/64 152/65 151/66
-f 168/64 169/67 153/68 152/65
-f 169/67 170/69 154/70 153/68
-f 170/69 171/71 155/72 154/70
-f 171/71 172/73 156/74 155/72
-f 172/73 165/75 149/76 156/74
-f 166/60 165/59 140/15 139/12
-f 167/62 166/60 139/12 138/13
-f 138/33 148/32 168/64 167/63
-f 148/32 126/4 169/67 168/64
-f 126/4 127/3 170/69 169/67
-f 127/3 128/6 171/71 170/69
-f 128/6 147/28 172/73 171/71
-f 147/28 140/27 165/75 172/73
-f 223/47 224/48 189/3 188/4
-f 224/48 225/49 190/6 189/3
-f 200/13 201/12 220/50 221/51
-f 201/12 202/15 219/52 220/50
-f 226/53 219/54 202/27 209/28
-f 225/49 226/53 209/28 190/6
-f 221/55 222/56 210/32 200/33
-f 222/56 223/47 188/4 210/32
-f 212/57 211/58 227/59 228/60
-f 213/61 212/57 228/60 229/62
-f 229/63 230/64 214/65 213/66
-f 230/64 231/67 215/68 214/65
-f 231/67 232/69 216/70 215/68
-f 232/69 233/71 217/72 216/70
-f 233/71 234/73 218/74 217/72
-f 234/73 227/75 211/76 218/74
-f 228/60 227/59 202/15 201/12
-f 229/62 228/60 201/12 200/13
-f 200/33 210/32 230/64 229/63
-f 210/32 188/4 231/67 230/64
-f 188/4 189/3 232/69 231/67
-f 189/3 190/6 233/71 232/69
-f 190/6 209/28 234/73 233/71
-f 209/28 202/27 227/75 234/73
-f 273/47 274/48 239/3 238/4
-f 274/48 275/49 240/6 239/3
-f 250/13 251/12 270/50 271/51
-f 251/12 252/15 269/52 270/50
-f 276/53 269/54 252/27 259/28
-f 275/49 276/53 259/28 240/6
-f 271/55 272/56 260/32 250/33
-f 272/56 273/47 238/4 260/32
-f 262/57 261/58 277/59 278/60
-f 263/61 262/57 278/60 279/62
-f 279/63 280/64 264/65 263/66
-f 280/64 281/67 265/68 264/65
-f 281/67 282/69 266/70 265/68
-f 282/69 283/71 267/72 266/70
-f 283/71 284/73 268/74 267/72
-f 284/73 277/75 261/76 268/74
-f 278/60 277/59 252/15 251/12
-f 279/62 278/60 251/12 250/13
-f 250/33 260/32 280/64 279/63
-f 260/32 238/4 281/67 280/64
-f 238/4 239/3 282/69 281/67
-f 239/3 240/6 283/71 282/69
-f 240/6 259/28 284/73 283/71
-f 259/28 252/27 277/75 284/73
-f 335/47 336/48 301/3 300/4
-f 336/48 337/49 302/6 301/3
-f 312/13 313/12 332/50 333/51
-f 313/12 314/15 331/52 332/50
-f 338/53 331/54 314/27 321/28
-f 337/49 338/53 321/28 302/6
-f 333/55 334/56 322/32 312/33
-f 334/56 335/47 300/4 322/32
-f 324/57 323/58 339/59 340/60
-f 325/61 324/57 340/60 341/62
-f 341/63 342/64 326/65 325/66
-f 342/64 343/67 327/68 326/65
-f 343/67 344/69 328/70 327/68
-f 344/69 345/71 329/72 328/70
-f 345/71 346/73 330/74 329/72
-f 346/73 339/75 323/76 330/74
-f 340/60 339/59 314/15 313/12
-f 341/62 340/60 313/12 312/13
-f 312/33 322/32 342/64 341/63
-f 322/32 300/4 343/67 342/64
-f 300/4 301/3 344/69 343/67
-f 301/3 302/6 345/71 344/69
-f 302/6 321/28 346/73 345/71
-f 321/28 314/27 339/75 346/73
-f 385/47 386/48 351/3 350/4
-f 386/48 387/49 352/6 351/3
-f 362/13 363/12 382/50 383/51
-f 363/12 364/15 381/52 382/50
-f 388/53 381/54 364/27 371/28
-f 387/49 388/53 371/28 352/6
-f 383/55 384/56 372/32 362/33
-f 384/56 385/47 350/4 372/32
-f 374/57 373/58 389/59 390/60
-f 375/61 374/57 390/60 391/62
-f 391/63 392/64 376/65 375/66
-f 392/64 393/67 377/68 376/65
-f 393/67 394/69 378/70 377/68
-f 394/69 395/71 379/72 378/70
-f 395/71 396/73 380/74 379/72
-f 396/73 389/75 373/76 380/74
-f 390/60 389/59 364/15 363/12
-f 391/62 390/60 363/12 362/13
-f 362/33 372/32 392/64 391/63
-f 372/32 350/4 393/67 392/64
-f 350/4 351/3 394/69 393/67
-f 351/3 352/6 395/71 394/69
-f 352/6 371/28 396/73 395/71
-f 371/28 364/27 389/75 396/73
-f 715/47 716/48 681/3 680/4
-f 716/48 717/49 682/6 681/3
-f 692/13 693/12 712/50 713/51
-f 693/12 694/15 711/52 712/50
-f 718/53 711/54 694/27 701/28
-f 717/49 718/53 701/28 682/6
-f 713/55 714/56 702/32 692/33
-f 714/56 715/47 680/4 702/32
-f 704/57 703/58 719/59 720/60
-f 705/61 704/57 720/60 721/62
-f 721/63 722/64 706/65 705/66
-f 722/64 723/67 707/68 706/65
-f 723/67 724/69 708/70 707/68
-f 724/69 725/71 709/72 708/70
-f 725/71 726/73 710/74 709/72
-f 726/73 719/75 703/76 710/74
-f 720/60 719/59 694/15 693/12
-f 721/62 720/60 693/12 692/13
-f 692/33 702/32 722/64 721/63
-f 702/32 680/4 723/67 722/64
-f 680/4 681/3 724/69 723/67
-f 681/3 682/6 725/71 724/69
-f 682/6 701/28 726/73 725/71
-f 701/28 694/27 719/75 726/73
-f 763/47 764/48 731/3 730/4
-f 764/48 765/49 732/6 731/3
-f 742/13 743/12 760/50 761/51
-f 743/12 744/15 759/52 760/50
-f 766/53 759/54 744/27 749/28
-f 765/49 766/53 749/28 732/6
-f 761/55 762/56 750/32 742/33
-f 762/56 763/47 730/4 750/32
-f 752/57 751/58 767/59 768/60
-f 753/61 752/57 768/60 769/62
-f 769/63 770/64 754/65 753/66
-f 770/64 771/67 755/68 754/65
-f 771/67 772/69 756/70 755/68
-f 772/69 773/71 757/72 756/70
-f 773/71 774/73 758/74 757/72
-f 774/73 767/75 751/76 758/74
-f 768/60 767/59 744/15 743/12
-f 769/62 768/60 743/12 742/13
-f 742/33 750/32 770/64 769/63
-f 750/32 730/4 771/67 770/64
-f 730/4 731/3 772/69 771/67
-f 731/3 732/6 773/71 772/69
-f 732/6 749/28 774/73 773/71
-f 749/28 744/27 767/75 774/73
-f 1075/47 1078/4 1077/3 1076/48
-f 1076/48 1077/3 1080/6 1079/49
-f 1096/13 1099/51 1098/50 1097/12
-f 1097/12 1098/50 1101/52 1100/15
-f 1111/53 1112/28 1100/27 1101/54
-f 1079/49 1080/6 1112/28 1111/53
-f 1099/55 1096/33 1114/32 1113/56
-f 1113/56 1114/32 1078/4 1075/47
-f 1093/57 1117/60 1116/59 1095/58
-f 1094/61 1118/62 1117/60 1093/57
-f 1118/63 1094/66 1115/65 1119/64
-f 1119/64 1115/65 1081/68 1120/67
-f 1120/67 1081/68 1082/70 1121/69
-f 1121/69 1082/70 1085/72 1122/71
-f 1122/71 1085/72 1124/74 1123/73
-f 1123/73 1124/74 1095/76 1116/75
-f 1117/60 1097/12 1100/15 1116/59
-f 1118/62 1096/13 1097/12 1117/60
-f 1096/33 1118/63 1119/64 1114/32
-f 1114/32 1119/64 1120/67 1078/4
-f 1078/4 1120/67 1121/69 1077/3
-f 1077/3 1121/69 1122/71 1080/6
-f 1080/6 1122/71 1123/73 1112/28
-f 1112/28 1123/73 1116/75 1100/27
-f 1125/47 1128/4 1127/3 1126/48
-f 1126/48 1127/3 1130/6 1129/49
-f 1146/13 1149/51 1148/50 1147/12
-f 1147/12 1148/50 1151/52 1150/15
-f 1161/53 1162/28 1150/27 1151/54
-f 1129/49 1130/6 1162/28 1161/53
-f 1149/55 1146/33 1170/32 1169/56
-f 1169/56 1170/32 1128/4 1125/47
-f 1143/57 1173/60 1172/59 1145/58
-f 1144/61 1174/62 1173/60 1143/57
-f 1174/63 1144/66 1171/65 1175/64
-f 1175/64 1171/65 1131/68 1176/67
-f 1176/67 1131/68 1132/70 1177/69
-f 1177/69 1132/70 1135/72 1178/71
-f 1178/71 1135/72 1180/74 1179/73
-f 1179/73 1180/74 1145/76 1172/75
-f 1173/60 1147/12 1150/15 1172/59
-f 1174/62 1146/13 1147/12 1173/60
-f 1146/33 1174/63 1175/64 1170/32
-f 1170/32 1175/64 1176/67 1128/4
-f 1128/4 1176/67 1177/69 1127/3
-f 1127/3 1177/69 1178/71 1130/6
-f 1130/6 1178/71 1179/73 1162/28
-f 1162/28 1179/73 1172/75 1150/27
-f 1187/47 1190/4 1189/3 1188/48
-f 1188/48 1189/3 1192/6 1191/49
-f 1208/13 1211/51 1210/50 1209/12
-f 1209/12 1210/50 1213/52 1212/15
-f 1223/53 1224/28 1212/27 1213/54
-f 1191/49 1192/6 1224/28 1223/53
-f 1211/55 1208/33 1226/32 1225/56
-f 1225/56 1226/32 1190/4 1187/47
-f 1205/57 1229/60 1228/59 1207/58
-f 1206/61 1230/62 1229/60 1205/57
-f 1230/63 1206/66 1227/65 1231/64
-f 1231/64 1227/65 1193/68 1232/67
-f 1232/67 1193/68 1194/70 1233/69
-f 1233/69 1194/70 1197/72 1234/71
-f 1234/71 1197/72 1236/74 1235/73
-f 1235/73 1236/74 1207/76 1228/75
-f 1229/60 1209/12 1212/15 1228/59
-f 1230/62 1208/13 1209/12 1229/60
-f 1208/33 1230/63 1231/64 1226/32
-f 1226/32 1231/64 1232/67 1190/4
-f 1190/4 1232/67 1233/69 1189/3
-f 1189/3 1233/69 1234/71 1192/6
-f 1192/6 1234/71 1235/73 1224/28
-f 1224/28 1235/73 1228/75 1212/27
-f 1237/47 1240/4 1239/3 1238/48
-f 1238/48 1239/3 1242/6 1241/49
-f 1258/13 1261/51 1260/50 1259/12
-f 1259/12 1260/50 1263/52 1262/15
-f 1273/53 1274/28 1262/27 1263/54
-f 1241/49 1242/6 1274/28 1273/53
-f 1261/55 1258/33 1282/32 1281/56
-f 1281/56 1282/32 1240/4 1237/47
-f 1255/57 1285/60 1284/59 1257/58
-f 1256/61 1286/62 1285/60 1255/57
-f 1286/63 1256/66 1283/65 1287/64
-f 1287/64 1283/65 1243/68 1288/67
-f 1288/67 1243/68 1244/70 1289/69
-f 1289/69 1244/70 1247/72 1290/71
-f 1290/71 1247/72 1292/74 1291/73
-f 1291/73 1292/74 1257/76 1284/75
-f 1285/60 1259/12 1262/15 1284/59
-f 1286/62 1258/13 1259/12 1285/60
-f 1258/33 1286/63 1287/64 1282/32
-f 1282/32 1287/64 1288/67 1240/4
-f 1240/4 1288/67 1289/69 1239/3
-f 1239/3 1289/69 1290/71 1242/6
-f 1242/6 1290/71 1291/73 1274/28
-f 1274/28 1291/73 1284/75 1262/27
-f 1299/47 1302/4 1301/3 1300/48
-f 1300/48 1301/3 1304/6 1303/49
-f 1320/13 1323/51 1322/50 1321/12
-f 1321/12 1322/50 1325/52 1324/15
-f 1335/53 1336/28 1324/27 1325/54
-f 1303/49 1304/6 1336/28 1335/53
-f 1323/55 1320/33 1338/32 1337/56
-f 1337/56 1338/32 1302/4 1299/47
-f 1317/57 1341/60 1340/59 1319/58
-f 1318/61 1342/62 1341/60 1317/57
-f 1342/63 1318/66 1339/65 1343/64
-f 1343/64 1339/65 1305/68 1344/67
-f 1344/67 1305/68 1306/70 1345/69
-f 1345/69 1306/70 1309/72 1346/71
-f 1346/71 1309/72 1348/74 1347/73
-f 1347/73 1348/74 1319/76 1340/75
-f 1341/60 1321/12 1324/15 1340/59
-f 1342/62 1320/13 1321/12 1341/60
-f 1320/33 1342/63 1343/64 1338/32
-f 1338/32 1343/64 1344/67 1302/4
-f 1302/4 1344/67 1345/69 1301/3
-f 1301/3 1345/69 1346/71 1304/6
-f 1304/6 1346/71 1347/73 1336/28
-f 1336/28 1347/73 1340/75 1324/27
-f 1349/47 1352/4 1351/3 1350/48
-f 1350/48 1351/3 1354/6 1353/49
-f 1370/13 1373/51 1372/50 1371/12
-f 1371/12 1372/50 1375/52 1374/15
-f 1385/53 1386/28 1374/27 1375/54
-f 1353/49 1354/6 1386/28 1385/53
-f 1373/55 1370/33 1394/32 1393/56
-f 1393/56 1394/32 1352/4 1349/47
-f 1367/57 1397/60 1396/59 1369/58
-f 1368/61 1398/62 1397/60 1367/57
-f 1398/63 1368/66 1395/65 1399/64
-f 1399/64 1395/65 1355/68 1400/67
-f 1400/67 1355/68 1356/70 1401/69
-f 1401/69 1356/70 1359/72 1402/71
-f 1402/71 1359/72 1404/74 1403/73
-f 1403/73 1404/74 1369/76 1396/75
-f 1397/60 1371/12 1374/15 1396/59
-f 1398/62 1370/13 1371/12 1397/60
-f 1370/33 1398/63 1399/64 1394/32
-f 1394/32 1399/64 1400/67 1352/4
-f 1352/4 1400/67 1401/69 1351/3
-f 1351/3 1401/69 1402/71 1354/6
-f 1354/6 1402/71 1403/73 1386/28
-f 1386/28 1403/73 1396/75 1374/27
-f 1757/47 1760/4 1759/3 1758/48
-f 1758/48 1759/3 1762/6 1761/49
-f 1778/13 1781/51 1780/50 1779/12
-f 1779/12 1780/50 1783/52 1782/15
-f 1791/53 1792/28 1782/27 1783/54
-f 1761/49 1762/6 1792/28 1791/53
-f 1781/55 1778/33 1794/32 1793/56
-f 1793/56 1794/32 1760/4 1757/47
-f 1775/57 1797/60 1796/59 1777/58
-f 1776/61 1798/62 1797/60 1775/57
-f 1798/63 1776/66 1795/65 1799/64
-f 1799/64 1795/65 1763/68 1800/67
-f 1800/67 1763/68 1764/70 1801/69
-f 1801/69 1764/70 1767/72 1802/71
-f 1802/71 1767/72 1804/74 1803/73
-f 1803/73 1804/74 1777/76 1796/75
-f 1797/60 1779/12 1782/15 1796/59
-f 1798/62 1778/13 1779/12 1797/60
-f 1778/33 1798/63 1799/64 1794/32
-f 1794/32 1799/64 1800/67 1760/4
-f 1760/4 1800/67 1801/69 1759/3
-f 1759/3 1801/69 1802/71 1762/6
-f 1762/6 1802/71 1803/73 1792/28
-f 1792/28 1803/73 1796/75 1782/27
-f 1805/47 1808/4 1807/3 1806/48
-f 1806/48 1807/3 1810/6 1809/49
-f 1826/13 1829/51 1828/50 1827/12
-f 1827/12 1828/50 1831/52 1830/15
-f 1839/53 1840/28 1830/27 1831/54
-f 1809/49 1810/6 1840/28 1839/53
-f 1829/55 1826/33 1848/32 1847/56
-f 1847/56 1848/32 1808/4 1805/47
-f 1823/57 1851/60 1850/59 1825/58
-f 1824/61 1852/62 1851/60 1823/57
-f 1852/63 1824/66 1849/65 1853/64
-f 1853/64 1849/65 1811/68 1854/67
-f 1854/67 1811/68 1812/70 1855/69
-f 1855/69 1812/70 1815/72 1856/71
-f 1856/71 1815/72 1858/74 1857/73
-f 1857/73 1858/74 1825/76 1850/75
-f 1851/60 1827/12 1830/15 1850/59
-f 1852/62 1826/13 1827/12 1851/60
-f 1826/33 1852/63 1853/64 1848/32
-f 1848/32 1853/64 1854/67 1808/4
-f 1808/4 1854/67 1855/69 1807/3
-f 1807/3 1855/69 1856/71 1810/6
-f 1810/6 1856/71 1857/73 1840/28
-f 1840/28 1857/73 1850/75 1830/27
-f 2062/9 2063/9 2079/9 2078/9
-f 2068/14 2066/14 2082/14 2084/14
-f 2069/9 2071/9 2087/9 2085/9
-f 2076/14 2074/14 2090/14 2092/14
-f 2224/9 2240/9 2242/9 2226/9
-f 2231/14 2254/14 2249/14 2229/14
-f 2232/9 2256/9 2258/9 2234/9
-f 2239/14 2270/14 2265/14 2237/14
-f 2356/77 2358/77 2362/77 2360/77
-f 2359/78 2357/78 2361/78 2363/78
-f 2420/78 2419/78 2399/78 2401/78
-f 2422/77 2421/77 2400/77 2398/77
-f 2467/77 2442/77 2443/77 2469/77
-f 2470/78 2444/78 2441/78 2468/78
-f 2503/78 2488/78 2485/78 2506/78
-f 2505/77 2486/77 2487/77 2504/77
-f 2591/77 2590/77 2574/77 2572/77
-f 2589/78 2592/78 2573/78 2575/78
-f 2635/77 2616/77 2617/77 2633/77
-f 2634/78 2618/78 2615/78 2636/78
-f 3106/79 3105/79 3031/79 3029/79
-f 3104/80 3107/80 3030/80 3032/80
-f 3114/81 3113/81 3027/81 3025/81
-f 3112/82 3115/82 3026/82 3028/82
-usemtl ISSMetal1
-f 103/68 104/70 80/7 79/8
-f 104/70 105/72 81/9 80/7
-f 79/8 80/7 83/83 82/84
-f 80/7 81/9 84/85 83/83
-f 82/84 83/83 86/11 85/10
-f 83/83 84/85 87/14 86/11
-f 85/10 86/11 100/57 101/61
-f 86/11 87/14 99/58 100/57
-f 91/17 92/16 95/19 94/20
-f 92/16 93/18 96/21 95/19
-f 94/20 95/19 74/22 73/23
-f 95/19 96/21 75/24 74/22
-f 101/66 102/65 82/37 85/38
-f 102/65 103/68 79/8 82/37
-f 108/50 107/52 93/18 92/16
-f 109/51 108/50 92/16 91/17
-f 91/30 94/31 110/56 109/55
-f 94/31 73/1 111/47 110/56
-f 75/5 96/25 114/53 113/49
-f 96/25 93/26 107/54 114/53
-f 153/68 154/70 130/7 129/8
-f 154/70 155/72 131/9 130/7
-f 129/8 130/7 133/83 132/84
-f 130/7 131/9 134/85 133/83
-f 132/84 133/83 136/11 135/10
-f 133/83 134/85 137/14 136/11
-f 135/10 136/11 150/57 151/61
-f 136/11 137/14 149/58 150/57
-f 141/17 142/16 145/19 144/20
-f 142/16 143/18 146/21 145/19
-f 144/20 145/19 124/22 123/23
-f 145/19 146/21 125/24 124/22
-f 173/74 174/76 175/35 176/36
-f 177/72 173/74 176/36 178/9
-f 151/66 152/65 132/37 135/38
-f 152/65 153/68 129/8 132/37
-f 141/30 144/31 160/56 159/55
-f 144/31 123/1 161/47 160/56
-f 123/1 124/2 162/48 161/47
-f 124/2 125/5 163/49 162/48
-f 125/5 146/25 164/53 163/49
-f 146/25 143/26 157/54 164/53
-f 156/74 149/76 174/76 173/74
-f 99/76 87/35 179/35 180/76
-f 137/35 134/36 176/36 175/35
-f 155/72 156/74 173/74 177/72
-f 134/36 131/9 178/9 176/36
-f 131/9 155/72 177/72 178/9
-f 149/76 137/35 81/35 105/76
-f 137/35 175/35 182/35 81/35
-f 175/35 174/76 181/76 182/35
-f 174/76 149/76 105/76 181/76
-f 181/76 105/76 106/76 183/76
-f 182/35 181/76 183/76 184/35
-f 81/35 182/35 184/35 84/35
-f 183/76 106/76 99/76 180/76
-f 184/35 183/76 180/76 179/35
-f 84/35 184/35 179/35 87/35
-f 158/50 157/52 113/52 112/50
-f 157/52 143/18 75/18 113/52
-f 143/18 142/16 74/16 75/18
-f 159/51 158/50 112/50 111/51
-f 141/17 159/51 111/51 73/17
-f 215/68 216/70 192/7 191/8
-f 216/70 217/72 193/9 192/7
-f 191/8 192/7 195/83 194/84
-f 192/7 193/9 196/85 195/83
-f 194/84 195/83 198/11 197/10
-f 195/83 196/85 199/14 198/11
-f 197/10 198/11 212/57 213/61
-f 198/11 199/14 211/58 212/57
-f 203/17 204/16 207/19 206/20
-f 204/16 205/18 208/21 207/19
-f 206/20 207/19 186/22 185/23
-f 207/19 208/21 187/24 186/22
-f 213/66 214/65 194/37 197/38
-f 214/65 215/68 191/8 194/37
-f 220/50 219/52 205/18 204/16
-f 221/51 220/50 204/16 203/17
-f 203/30 206/31 222/56 221/55
-f 206/31 185/1 223/47 222/56
-f 187/5 208/25 226/53 225/49
-f 208/25 205/26 219/54 226/53
-f 265/68 266/70 242/7 241/8
-f 266/70 267/72 243/9 242/7
-f 241/8 242/7 245/83 244/84
-f 242/7 243/9 246/85 245/83
-f 244/84 245/83 248/11 247/10
-f 245/83 246/85 249/14 248/11
-f 247/10 248/11 262/57 263/61
-f 248/11 249/14 261/58 262/57
-f 253/17 254/16 257/19 256/20
-f 254/16 255/18 258/21 257/19
-f 256/20 257/19 236/22 235/23
-f 257/19 258/21 237/24 236/22
-f 285/74 286/76 287/35 288/36
-f 289/72 285/74 288/36 290/9
-f 263/66 264/65 244/37 247/38
-f 264/65 265/68 241/8 244/37
-f 253/30 256/31 272/56 271/55
-f 256/31 235/1 273/47 272/56
-f 235/1 236/2 274/48 273/47
-f 236/2 237/5 275/49 274/48
-f 237/5 258/25 276/53 275/49
-f 258/25 255/26 269/54 276/53
-f 268/74 261/76 286/76 285/74
-f 211/76 199/35 291/35 292/76
-f 249/35 246/36 288/36 287/35
-f 267/72 268/74 285/74 289/72
-f 246/36 243/9 290/9 288/36
-f 243/9 267/72 289/72 290/9
-f 261/76 249/35 193/35 217/76
-f 249/35 287/35 294/35 193/35
-f 287/35 286/76 293/76 294/35
-f 286/76 261/76 217/76 293/76
-f 293/76 217/76 218/76 295/76
-f 294/35 293/76 295/76 296/35
-f 193/35 294/35 296/35 196/35
-f 295/76 218/76 211/76 292/76
-f 296/35 295/76 292/76 291/35
-f 196/35 296/35 291/35 199/35
-f 270/50 269/52 225/52 224/50
-f 269/52 255/18 187/18 225/52
-f 255/18 254/16 186/16 187/18
-f 271/51 270/50 224/50 223/51
-f 253/17 271/51 223/51 185/17
-f 327/68 328/70 304/7 303/8
-f 328/70 329/72 305/9 304/7
-f 303/8 304/7 307/83 306/84
-f 304/7 305/9 308/85 307/83
-f 306/84 307/83 310/11 309/10
-f 307/83 308/85 311/14 310/11
-f 309/10 310/11 324/57 325/61
-f 310/11 311/14 323/58 324/57
-f 315/17 316/16 319/19 318/20
-f 316/16 317/18 320/21 319/19
-f 318/20 319/19 298/22 297/23
-f 319/19 320/21 299/24 298/22
-f 325/66 326/65 306/37 309/38
-f 326/65 327/68 303/8 306/37
-f 332/50 331/52 317/18 316/16
-f 333/51 332/50 316/16 315/17
-f 315/30 318/31 334/56 333/55
-f 318/31 297/1 335/47 334/56
-f 299/5 320/25 338/53 337/49
-f 320/25 317/26 331/54 338/53
-f 377/68 378/70 354/7 353/8
-f 378/70 379/72 355/9 354/7
-f 353/8 354/7 357/83 356/84
-f 354/7 355/9 358/85 357/83
-f 356/84 357/83 360/11 359/10
-f 357/83 358/85 361/14 360/11
-f 359/10 360/11 374/57 375/61
-f 360/11 361/14 373/58 374/57
-f 365/17 366/16 369/19 368/20
-f 366/16 367/18 370/21 369/19
-f 368/20 369/19 348/22 347/23
-f 369/19 370/21 349/24 348/22
-f 397/74 398/76 399/35 400/36
-f 401/72 397/74 400/36 402/9
-f 375/66 376/65 356/37 359/38
-f 376/65 377/68 353/8 356/37
-f 365/30 368/31 384/56 383/55
-f 368/31 347/1 385/47 384/56
-f 347/1 348/2 386/48 385/47
-f 348/2 349/5 387/49 386/48
-f 349/5 370/25 388/53 387/49
-f 370/25 367/26 381/54 388/53
-f 380/74 373/76 398/76 397/74
-f 323/76 311/35 403/35 404/76
-f 361/35 358/36 400/36 399/35
-f 379/72 380/74 397/74 401/72
-f 358/36 355/9 402/9 400/36
-f 355/9 379/72 401/72 402/9
-f 373/76 361/35 305/35 329/76
-f 361/35 399/35 406/35 305/35
-f 399/35 398/76 405/76 406/35
-f 398/76 373/76 329/76 405/76
-f 405/76 329/76 330/76 407/76
-f 406/35 405/76 407/76 408/35
-f 305/35 406/35 408/35 308/35
-f 407/76 330/76 323/76 404/76
-f 408/35 407/76 404/76 403/35
-f 308/35 408/35 403/35 311/35
-f 382/50 381/52 337/52 336/50
-f 381/52 367/18 299/18 337/52
-f 367/18 366/16 298/16 299/18
-f 383/51 382/50 336/50 335/51
-f 365/17 383/51 335/51 297/17
-f 903/86 904/87 564/88 565/89
-f 904/87 905/90 563/91 564/88
-f 905/90 906/92 562/93 563/91
-f 906/92 907/94 561/95 562/93
-f 476/96 477/97 420/98 419/10
-f 477/97 478/99 421/11 420/98
-f 479/100 480/101 423/14 422/102
-f 419/10 420/98 425/103 424/104
-f 420/98 421/11 426/105 425/103
-f 421/11 422/102 427/106 426/105
-f 422/102 423/14 428/107 427/106
-f 424/104 425/103 430/108 429/13
-f 425/103 426/105 431/12 430/108
-f 426/105 427/106 432/109 431/12
-f 427/106 428/107 433/15 432/109
-f 429/13 430/108 487/110 488/111
-f 430/108 431/12 486/112 487/110
-f 431/12 432/109 485/113 486/112
-f 432/109 433/15 484/114 485/113
-f 434/115 435/116 440/117 439/17
-f 435/116 436/118 441/16 440/117
-f 436/118 437/119 442/120 441/16
-f 437/119 438/121 443/18 442/120
-f 439/17 440/117 471/122 472/123
-f 440/117 441/16 470/124 471/122
-f 442/120 443/18 468/125 469/126
-f 570/127 571/128 897/129 898/130
-f 571/128 572/131 896/132 897/129
-f 572/131 573/133 895/134 896/132
-f 573/133 574/135 894/136 895/134
-f 468/137 443/26 438/138 467/139
-f 911/140 894/141 574/142 575/143
-f 483/41 484/144 433/27 466/42
-f 910/145 576/146 577/147 909/148
-f 481/149 466/42 433/27 428/150
-f 909/148 577/147 578/151 908/152
-f 481/149 428/150 423/35 480/153
-f 908/152 578/151 561/154 907/155
-f 439/30 472/156 473/157 434/158
-f 570/159 898/160 899/161 569/162
-f 488/163 489/164 474/165 429/33
-f 568/166 900/167 901/168 567/169
-f 429/33 474/165 475/170 424/171
-f 567/169 901/168 902/172 566/173
-f 424/171 475/170 476/174 419/38
-f 566/173 902/172 903/175 565/176
-f 482/45 542/177 543/178 456/46
-f 448/179 540/180 541/181 454/182
-f 539/183 540/184 448/185 447/186
-f 537/187 538/188 446/189 445/190
-f 536/191 537/187 445/190 444/192
-f 535/193 536/194 444/195 460/196
-f 533/197 534/198 490/199 462/200
-f 532/201 533/197 462/200 464/202
-f 531/203 532/201 464/202 414/34
-f 414/204 415/205 530/206 531/207
-f 415/205 416/208 529/209 530/206
-f 417/210 418/211 527/212 528/213
-f 458/214 544/215 527/216 418/29
-f 456/46 543/178 544/215 458/214
-f 911/140 575/143 995/217 996/218
-f 454/182 541/181 992/219 993/220
-f 467/139 438/138 989/221 990/222
-f 988/223 989/224 438/121 437/119
-f 987/225 988/223 437/119 436/118
-f 986/226 987/225 436/118 435/116
-f 985/227 986/226 435/116 434/115
-f 434/158 473/157 984/228 985/229
-f 981/230 982/231 535/193 460/196
-f 569/162 899/161 978/232 979/233
-f 492/234 491/235 480/101 479/100
-f 493/236 492/234 479/100 478/99
-f 494/237 493/236 478/99 477/97
-f 495/238 494/237 477/97 476/96
-f 476/174 475/170 496/239 495/240
-f 475/170 474/165 497/241 496/239
-f 474/165 489/164 498/242 497/241
-f 499/243 983/244 984/228 473/157
-f 473/157 472/156 500/245 499/243
-f 472/123 471/122 501/246 500/247
-f 471/122 470/124 502/248 501/246
-f 470/124 469/126 503/249 502/248
-f 469/126 468/125 504/250 503/249
-f 505/251 504/252 468/137 467/139
-f 991/253 505/251 467/139 990/222
-f 508/254 507/39 466/42 481/149
-f 491/255 508/254 481/149 480/153
-f 510/256 509/257 418/211 417/210
-f 511/258 510/256 417/210 416/208
-f 512/259 511/258 416/208 415/205
-f 513/260 512/259 415/205 414/204
-f 464/202 514/261 513/262 414/34
-f 462/200 515/263 514/261 464/202
-f 490/199 516/264 515/263 462/200
-f 460/196 517/265 980/266 981/230
-f 444/195 518/267 517/265 460/196
-f 444/192 445/190 519/268 518/269
-f 445/190 446/189 520/270 519/268
-f 446/189 447/186 521/271 520/270
-f 447/186 448/185 522/272 521/271
-f 523/273 522/274 448/179 454/182
-f 994/275 523/273 454/182 993/220
-f 526/276 525/43 456/46 458/214
-f 509/277 526/276 458/214 418/29
-f 528/213 527/212 491/235 492/234
-f 529/209 528/213 492/234 493/236
-f 530/206 529/209 493/236 494/237
-f 531/207 530/206 494/237 495/238
-f 495/240 496/239 532/201 531/203
-f 496/239 497/241 533/197 532/201
-f 497/241 498/242 534/198 533/197
-f 535/193 982/231 983/244 499/243
-f 499/243 500/245 536/194 535/193
-f 500/247 501/246 537/187 536/191
-f 501/246 502/248 538/188 537/187
-f 502/248 503/249 539/183 538/188
-f 503/249 504/250 540/184 539/183
-f 541/181 540/180 504/252 505/251
-f 992/219 541/181 505/251 991/253
-f 543/178 542/177 506/40 507/39
-f 544/215 543/178 507/39 508/254
-f 527/216 544/215 508/254 491/255
-f 478/99 479/100 554/100 553/99
-f 479/100 422/102 555/102 554/100
-f 422/102 421/11 556/11 555/102
-f 421/11 478/99 553/99 556/11
-f 416/208 417/210 558/210 557/208
-f 417/210 528/213 559/213 558/210
-f 528/213 529/209 560/209 559/213
-f 529/209 416/208 557/208 560/209
-f 553/99 554/100 142/100 141/99
-f 554/100 555/102 74/102 142/100
-f 555/102 556/11 73/11 74/102
-f 556/11 553/99 141/99 73/11
-f 557/208 558/210 254/210 253/208
-f 558/210 559/213 186/213 254/210
-f 559/213 560/209 185/209 186/213
-f 560/209 557/208 253/208 185/209
-f 562/93 561/95 509/257 510/256
-f 563/91 562/93 510/256 511/258
-f 564/88 563/91 511/258 512/259
-f 565/89 564/88 512/259 513/260
-f 514/261 566/173 565/176 513/262
-f 515/263 567/169 566/173 514/261
-f 516/264 568/166 567/169 515/263
-f 517/265 569/162 979/233 980/266
-f 518/267 570/159 569/162 517/265
-f 518/269 519/268 571/128 570/127
-f 519/268 520/270 572/131 571/128
-f 520/270 521/271 573/133 572/131
-f 521/271 522/272 574/135 573/133
-f 575/143 574/142 522/274 523/273
-f 995/217 575/143 523/273 994/275
-f 577/147 576/146 524/44 525/43
-f 578/151 577/147 525/43 526/276
-f 561/154 578/151 526/276 509/277
-f 441/16 442/120 580/120 579/16
-f 442/120 469/126 581/126 580/120
-f 469/126 470/124 582/124 581/126
-f 470/124 441/16 579/16 582/124
-f 538/188 539/183 584/183 583/188
-f 539/183 447/186 585/186 584/183
-f 447/186 446/189 586/189 585/186
-f 446/189 538/188 583/188 586/189
-f 579/16 580/120 366/120 365/16
-f 580/120 581/126 298/126 366/120
-f 581/126 582/124 297/124 298/126
-f 582/124 579/16 365/16 297/124
-f 583/188 584/183 588/183 587/188
-f 584/183 585/186 589/186 588/183
-f 585/186 586/189 590/189 589/186
-f 586/189 583/188 587/188 590/189
-f 592/278 591/279 452/280 451/19
-f 593/281 592/278 451/19 450/282
-f 594/283 593/281 450/282 449/20
-f 595/284 594/285 449/31 461/286
-f 958/287 595/284 461/286
-f 597/288 596/289 461/290 463/32
-f 598/291 597/288 463/32 465/292
-f 599/293 598/291 465/292 409/37
-f 409/84 410/294 600/295 599/296
-f 410/294 411/83 601/297 600/295
-f 412/298 413/85 603/299 602/300
-f 459/301 604/302 603/303 413/36
-f 457/28 605/304 604/302 459/301
-f 455/305 606/306 605/304 457/28
-f 455/305 607/307 1002/308
-f 453/25 608/309 607/307 455/305
-f 591/279 608/310 453/21 452/280
-f 628/311 627/312 35/313 34/314
-f 611/315 610/311 642/314 643/316
-f 612/317 611/318 643/319 644/320
-f 962/321 612/317 644/320 961/322
-f 614/323 613/324 645/325 646/326
-f 615/327 614/323 646/326 647/328
-f 616/329 615/327 647/328 648/330
-f 648/331 649/332 617/333 616/334
-f 649/332 650/335 618/336 617/333
-f 650/335 651/337 619/338 618/336
-f 651/337 652/339 620/340 619/338
-f 653/341 621/342 620/343 652/344
-f 654/345 622/346 621/342 653/341
-f 655/347 623/348 622/346 654/345
-f 656/349 624/350 998/351 999/352
-f 657/353 625/354 624/350 656/349
-f 626/355 625/356 657/357 658/358
-f 627/312 631/355 36/358 35/313
-f 610/311 609/312 627/312 628/311
-f 592/278 593/281 630/281 629/278
-f 641/314 633/311 635/311 59/314
-f 609/312 626/355 631/355 627/312
-f 637/355 659/358 10/359 640/355
-f 591/279 592/278 629/278 632/279
-f 642/314 610/311 811/311 812/314
-f 610/311 628/311 810/311 811/311
-f 628/311 34/314 809/314 810/311
-f 630/281 593/281 814/281 807/281
-f 626/355 658/358 802/358 803/355
-f 591/279 632/279 799/279 800/279
-f 36/358 631/355 804/355 805/358
-f 631/355 626/355 803/355 804/355
-f 33/360 36/358 805/358
-f 809/314 34/314 32/361
-f 815/361 641/314 59/314 57/361
-f 818/361 642/314 812/314 817/361
-f 643/316 642/314 818/361 819/362
-f 644/320 643/319 819/363 820/364
-f 961/322 644/320 820/364 960/365
-f 646/326 645/325 821/366 822/367
-f 647/328 646/326 822/367 823/368
-f 648/330 647/328 823/368 824/369
-f 824/370 825/371 649/332 648/331
-f 825/371 826/372 650/335 649/332
-f 826/372 827/373 651/337 650/335
-f 827/373 828/374 652/339 651/337
-f 829/375 653/341 652/344 828/376
-f 830/377 654/345 653/341 829/375
-f 831/378 655/347 654/345 830/377
-f 832/379 656/349 999/352 1000/380
-f 833/381 657/353 656/349 832/379
-f 658/358 657/357 833/382 834/360
-f 802/358 658/358 834/360 835/360
-f 10/359 659/358 837/360
-f 632/279 31/383 806/383 799/279
-f 30/384 31/383 632/279 629/278
-f 29/385 30/384 629/278 630/281
-f 808/385 29/385 630/281 807/281
-f 634/281 660/385 54/385 636/281
-f 593/281 661/385 813/385 814/281
-f 662/386 661/385 593/281 594/283
-f 663/387 662/388 594/285 595/284
-f 959/389 663/387 595/284 958/287
-f 665/390 664/391 596/289 597/288
-f 666/392 665/390 597/288 598/291
-f 667/393 666/392 598/291 599/293
-f 599/296 600/295 668/394 667/395
-f 600/295 601/297 669/396 668/394
-f 601/297 602/300 670/397 669/396
-f 602/300 603/299 671/398 670/397
-f 604/302 672/399 671/400 603/303
-f 605/304 673/401 672/399 604/302
-f 606/306 674/402 673/401 605/304
-f 607/307 675/403 1001/404 1002/308
-f 608/309 676/405 675/403 607/307
-f 677/383 676/406 608/310 591/279
-f 801/383 677/383 591/279 800/279
-f 9/383 678/383 638/279 639/279
-f 707/68 708/70 684/7 683/8
-f 708/70 709/72 685/9 684/7
-f 683/8 684/7 687/83 686/84
-f 684/7 685/9 688/85 687/83
-f 686/84 687/83 690/11 689/10
-f 687/83 688/85 691/14 690/11
-f 689/10 690/11 704/57 705/61
-f 690/11 691/14 703/58 704/57
-f 695/17 696/16 699/19 698/20
-f 696/16 697/18 700/21 699/19
-f 698/20 699/19 589/22 590/23
-f 699/19 700/21 679/24 589/22
-f 705/66 706/65 686/37 689/38
-f 706/65 707/68 683/8 686/37
-f 712/50 711/52 697/18 696/16
-f 713/51 712/50 696/16 695/17
-f 695/30 698/31 714/56 713/55
-f 698/31 590/1 715/47 714/56
-f 679/5 700/25 718/53 717/49
-f 700/25 697/26 711/54 718/53
-f 755/68 756/70 734/7 733/8
-f 756/70 757/72 735/9 734/7
-f 733/8 734/7 737/83 736/84
-f 734/7 735/9 738/85 737/83
-f 736/84 737/83 740/11 739/10
-f 737/83 738/85 741/14 740/11
-f 739/10 740/11 752/57 753/61
-f 740/11 741/14 751/58 752/57
-f 587/17 588/16 747/19 746/20
-f 588/16 745/18 748/21 747/19
-f 746/20 747/19 728/22 727/23
-f 747/19 748/21 729/24 728/22
-f 775/74 776/76 777/35 778/36
-f 779/72 775/74 778/36 780/9
-f 753/66 754/65 736/37 739/38
-f 754/65 755/68 733/8 736/37
-f 587/30 746/31 762/56 761/55
-f 746/31 727/1 763/47 762/56
-f 727/1 728/2 764/48 763/47
-f 728/2 729/5 765/49 764/48
-f 729/5 748/25 766/53 765/49
-f 748/25 745/26 759/54 766/53
-f 758/74 751/76 776/76 775/74
-f 703/76 691/35 781/35 782/76
-f 741/35 738/36 778/36 777/35
-f 757/72 758/74 775/74 779/72
-f 738/36 735/9 780/9 778/36
-f 735/9 757/72 779/72 780/9
-f 751/76 741/35 685/35 709/76
-f 741/35 777/35 784/35 685/35
-f 777/35 776/76 783/76 784/35
-f 776/76 751/76 709/76 783/76
-f 783/76 709/76 710/76 785/76
-f 784/35 783/76 785/76 786/35
-f 685/35 784/35 786/35 688/35
-f 785/76 710/76 703/76 782/76
-f 786/35 785/76 782/76 781/35
-f 688/35 786/35 781/35 691/35
-f 760/50 759/52 717/52 716/50
-f 759/52 745/18 679/18 717/52
-f 745/18 588/16 589/16 679/18
-f 761/51 760/50 716/50 715/51
-f 587/17 761/51 715/51 590/17
-f 849/383 788/383 787/279 848/279
-f 851/358 789/358 836/360 850/360
-f 790/355 789/358 851/358 845/355
-f 791/355 790/355 845/355 846/355
-f 7/359 791/355 846/355 11/358
-f 792/279 7/383 8/383 847/279
-f 787/279 792/279 847/279 848/279
-f 794/281 793/281 842/281 843/281
-f 55/385 56/385 794/281 843/281
-f 795/311 61/314 60/314 844/311
-f 796/311 795/311 844/311 838/311
-f 797/314 796/311 838/311 839/314
-f 816/361 797/314 839/314 840/361
-f 793/281 798/385 841/385 842/281
-f 800/279 799/279 792/279 787/279
-f 788/383 801/383 800/279 787/279
-f 789/358 802/358 835/360 836/360
-f 803/355 802/358 789/358 790/355
-f 804/355 803/355 790/355 791/355
-f 805/358 804/355 791/355 7/359
-f 33/360 805/358 7/359
-f 799/279 806/383 7/383 792/279
-f 56/385 808/385 807/281 794/281
-f 61/314 809/314 32/361 58/361
-f 810/311 809/314 61/314 795/311
-f 811/311 810/311 795/311 796/311
-f 812/314 811/311 796/311 797/314
-f 817/361 812/314 797/314 816/361
-f 814/281 813/385 798/385 793/281
-f 807/281 814/281 793/281 794/281
-f 806/383 33/360 7/359
-f 31/383 33/360 806/383
-f 32/361 29/385 808/385
-f 58/361 32/361 808/385 56/385
-f 660/385 815/361 57/361 54/385
-f 798/385 816/361 840/361 841/385
-f 813/385 817/361 816/361 798/385
-f 661/385 818/361 817/361 813/385
-f 819/362 818/361 661/385 662/386
-f 820/364 819/363 662/388 663/387
-f 960/365 820/364 663/387 959/389
-f 822/367 821/366 664/391 665/390
-f 823/368 822/367 665/390 666/392
-f 824/369 823/368 666/392 667/393
-f 667/395 668/394 825/371 824/370
-f 668/394 669/396 826/372 825/371
-f 669/396 670/397 827/373 826/372
-f 670/397 671/398 828/374 827/373
-f 672/399 829/375 828/376 671/400
-f 673/401 830/377 829/375 672/399
-f 674/402 831/378 830/377 673/401
-f 675/403 832/379 1000/380 1001/404
-f 676/405 833/381 832/379 675/403
-f 834/360 833/382 676/406 677/383
-f 835/360 834/360 677/383 801/383
-f 836/360 835/360 801/383 788/383
-f 850/360 836/360 788/383 849/383
-f 10/359 837/360 678/383 9/383
-f 839/314 838/311 633/311 641/314
-f 840/361 839/314 641/314 815/361
-f 841/385 840/361 815/361 660/385
-f 842/281 841/385 660/385 634/281
-f 843/281 842/281 634/281 636/281
-f 54/385 55/385 843/281 636/281
-f 844/311 60/314 59/314 635/311
-f 838/311 844/311 635/311 633/311
-f 846/355 845/355 637/355 640/355
-f 11/358 846/355 640/355 10/359
-f 847/279 8/383 9/383 639/279
-f 848/279 847/279 639/279 638/279
-f 678/383 849/383 848/279 638/279
-f 837/360 850/360 849/383 678/383
-f 659/358 851/358 850/360 837/360
-f 845/355 851/358 659/358 637/355
-f 877/407 876/408 625/356 626/355
-f 878/409 877/407 626/355 609/312
-f 879/410 878/409 609/312 610/311
-f 880/411 879/410 610/311 611/315
-f 881/412 880/413 611/318 612/317
-f 963/414 881/412 612/317 962/321
-f 883/415 882/416 613/324 614/323
-f 884/417 883/415 614/323 615/327
-f 885/418 884/417 615/327 616/329
-f 616/334 617/333 886/419 885/420
-f 617/333 618/336 887/421 886/419
-f 618/336 619/338 888/422 887/421
-f 619/338 620/340 889/423 888/422
-f 621/342 890/424 889/425 620/343
-f 622/346 891/426 890/424 621/342
-f 623/348 892/427 891/426 622/346
-f 624/350 893/428 997/429 998/351
-f 625/354 876/430 893/428 624/350
-f 895/134 894/136 876/408 877/407
-f 896/132 895/134 877/407 878/409
-f 897/129 896/132 878/409 879/410
-f 898/130 897/129 879/410 880/411
-f 899/161 898/160 880/413 881/412
-f 966/232 928/161 930/412 965/414
-f 916/168 913/167 915/416 917/415
-f 918/172 916/168 917/415 919/417
-f 903/175 902/172 884/417 885/418
-f 885/420 886/419 904/87 903/86
-f 886/419 887/421 905/90 904/87
-f 887/421 888/422 906/92 905/90
-f 888/422 889/423 907/94 906/92
-f 890/424 908/152 907/155 889/425
-f 891/426 909/148 908/152 890/424
-f 892/427 910/145 909/148 891/426
-f 893/428 911/140 996/218 997/429
-f 893/428 876/430 894/141 911/140
-f 978/232 899/161 912/161 977/232
-f 920/161 921/412 922/412 923/161
-f 881/412 963/414 964/414 914/412
-f 901/168 900/167 913/167 916/168
-f 882/416 883/415 917/415 915/416
-f 902/172 901/168 916/168 918/172
-f 883/415 884/417 919/417 917/415
-f 925/417 924/172 926/172 927/417
-f 899/161 881/412 921/412 920/161
-f 881/412 914/412 922/412 921/412
-f 914/412 912/161 923/161 922/412
-f 912/161 899/161 920/161 923/161
-f 884/417 902/172 924/172 925/417
-f 902/172 918/172 926/172 924/172
-f 918/172 919/417 927/417 926/172
-f 919/417 884/417 925/417 927/417
-f 975/232 932/161 934/161 974/232
-f 912/161 914/412 930/412 928/161
-f 914/412 964/414 965/414 930/412
-f 915/416 913/167 929/167 931/416
-f 977/232 912/161 954/161 976/232
-f 912/161 928/161 953/161 954/161
-f 944/161 969/232 970/232 950/161
-f 929/167 913/167 955/167 956/167
-f 928/161 966/232 967/232 936/161
-f 929/167 956/167 957/167 937/167
-f 974/232 934/161 939/161 973/232
-f 953/161 928/161 936/161 952/161
-f 936/161 967/232 968/232 940/161
-f 937/167 957/167 948/167 941/167
-f 973/232 939/161 943/161 972/232
-f 952/161 936/161 940/161 951/161
-f 940/161 968/232 969/232 944/161
-f 941/167 948/167 949/167 945/167
-f 972/232 943/161 947/161 971/232
-f 951/161 940/161 944/161 950/161
-f 948/167 942/167 946/167 949/167
-f 950/161 970/232 971/232 947/161
-f 943/161 951/161 950/161 947/161
-f 939/161 952/161 951/161 943/161
-f 934/161 953/161 952/161 939/161
-f 954/161 953/161 934/161 932/161
-f 976/232 954/161 932/161 975/232
-f 956/167 955/167 933/167 935/167
-f 957/167 956/167 935/167 938/167
-f 948/167 957/167 938/167 942/167
-f 596/289 958/287 461/286
-f 664/391 959/389 958/287 596/289
-f 821/366 960/365 959/389 664/391
-f 645/325 961/322 960/365 821/366
-f 613/324 962/321 961/322 645/325
-f 882/416 963/414 962/321 613/324
-f 964/414 963/414 882/416 915/416
-f 965/414 964/414 915/416 931/416
-f 929/167 966/232 965/414 931/416
-f 967/232 966/232 929/167 937/167
-f 968/232 967/232 937/167 941/167
-f 969/232 968/232 941/167 945/167
-f 970/232 969/232 945/167 949/167
-f 971/232 970/232 949/167 946/167
-f 942/167 972/232 971/232 946/167
-f 938/167 973/232 972/232 942/167
-f 935/167 974/232 973/232 938/167
-f 933/167 975/232 974/232 935/167
-f 955/167 976/232 975/232 933/167
-f 913/167 977/232 976/232 955/167
-f 900/167 978/232 977/232 913/167
-f 979/233 978/232 900/167 568/166
-f 980/266 979/233 568/166 516/264
-f 981/230 980/266 516/264 490/199
-f 490/199 534/198 982/231 981/230
-f 983/244 982/231 534/198 498/242
-f 984/228 983/244 498/242 489/164
-f 985/229 984/228 489/164 488/163
-f 488/111 487/110 986/226 985/227
-f 487/110 486/112 987/225 986/226
-f 486/112 485/113 988/223 987/225
-f 485/113 484/114 989/224 988/223
-f 990/222 989/221 484/144 483/41
-f 506/40 991/253 990/222 483/41
-f 542/177 992/219 991/253 506/40
-f 993/220 992/219 542/177 482/45
-f 524/44 994/275 993/220 482/45
-f 576/146 995/217 994/275 524/44
-f 996/218 995/217 576/146 910/145
-f 997/429 996/218 910/145 892/427
-f 998/351 997/429 892/427 623/348
-f 999/352 998/351 623/348 655/347
-f 1000/380 999/352 655/347 831/378
-f 1001/404 1000/380 831/378 674/402
-f 1002/308 1001/404 674/402 606/306
-f 455/305 1002/308 606/306
-f 1081/68 1084/8 1083/7 1082/70
-f 1082/70 1083/7 1086/9 1085/72
-f 1084/8 1088/84 1087/83 1083/7
-f 1083/7 1087/83 1089/85 1086/9
-f 1088/84 1091/10 1090/11 1087/83
-f 1087/83 1090/11 1092/14 1089/85
-f 1091/10 1094/61 1093/57 1090/11
-f 1090/11 1093/57 1095/58 1092/14
-f 1102/17 1105/20 1104/19 1103/16
-f 1103/16 1104/19 1107/21 1106/18
-f 1105/20 1109/23 1108/22 1104/19
-f 1104/19 1108/22 1110/24 1107/21
-f 1094/66 1091/38 1088/37 1115/65
-f 1115/65 1088/37 1084/8 1081/68
-f 1098/50 1103/16 1106/18 1101/52
-f 1099/51 1102/17 1103/16 1098/50
-f 1102/30 1099/55 1113/56 1105/31
-f 1105/31 1113/56 1075/47 1109/1
-f 1110/5 1079/49 1111/53 1107/25
-f 1107/25 1111/53 1101/54 1106/26
-f 1131/68 1134/8 1133/7 1132/70
-f 1132/70 1133/7 1136/9 1135/72
-f 1134/8 1138/84 1137/83 1133/7
-f 1133/7 1137/83 1139/85 1136/9
-f 1138/84 1141/10 1140/11 1137/83
-f 1137/83 1140/11 1142/14 1139/85
-f 1141/10 1144/61 1143/57 1140/11
-f 1140/11 1143/57 1145/58 1142/14
-f 1152/17 1155/20 1154/19 1153/16
-f 1153/16 1154/19 1157/21 1156/18
-f 1155/20 1159/23 1158/22 1154/19
-f 1154/19 1158/22 1160/24 1157/21
-f 1163/74 1166/36 1165/35 1164/76
-f 1167/72 1168/9 1166/36 1163/74
-f 1144/66 1141/38 1138/37 1171/65
-f 1171/65 1138/37 1134/8 1131/68
-f 1152/30 1149/55 1169/56 1155/31
-f 1155/31 1169/56 1125/47 1159/1
-f 1159/1 1125/47 1126/48 1158/2
-f 1158/2 1126/48 1129/49 1160/5
-f 1160/5 1129/49 1161/53 1157/25
-f 1157/25 1161/53 1151/54 1156/26
-f 1180/74 1163/74 1164/76 1145/76
-f 1095/76 1182/76 1181/35 1092/35
-f 1142/35 1165/35 1166/36 1139/36
-f 1135/72 1167/72 1163/74 1180/74
-f 1139/36 1166/36 1168/9 1136/9
-f 1136/9 1168/9 1167/72 1135/72
-f 1145/76 1085/76 1086/35 1142/35
-f 1142/35 1086/35 1183/35 1165/35
-f 1165/35 1183/35 1184/76 1164/76
-f 1164/76 1184/76 1085/76 1145/76
-f 1184/76 1185/76 1124/76 1085/76
-f 1183/35 1186/35 1185/76 1184/76
-f 1086/35 1089/35 1186/35 1183/35
-f 1185/76 1182/76 1095/76 1124/76
-f 1186/35 1181/35 1182/76 1185/76
-f 1089/35 1092/35 1181/35 1186/35
-f 1148/50 1076/50 1079/52 1151/52
-f 1151/52 1079/52 1110/18 1156/18
-f 1156/18 1110/18 1108/16 1153/16
-f 1149/51 1075/51 1076/50 1148/50
-f 1152/17 1109/17 1075/51 1149/51
-f 1193/68 1196/8 1195/7 1194/70
-f 1194/70 1195/7 1198/9 1197/72
-f 1196/8 1200/84 1199/83 1195/7
-f 1195/7 1199/83 1201/85 1198/9
-f 1200/84 1203/10 1202/11 1199/83
-f 1199/83 1202/11 1204/14 1201/85
-f 1203/10 1206/61 1205/57 1202/11
-f 1202/11 1205/57 1207/58 1204/14
-f 1214/17 1217/20 1216/19 1215/16
-f 1215/16 1216/19 1219/21 1218/18
-f 1217/20 1221/23 1220/22 1216/19
-f 1216/19 1220/22 1222/24 1219/21
-f 1206/66 1203/38 1200/37 1227/65
-f 1227/65 1200/37 1196/8 1193/68
-f 1210/50 1215/16 1218/18 1213/52
-f 1211/51 1214/17 1215/16 1210/50
-f 1214/30 1211/55 1225/56 1217/31
-f 1217/31 1225/56 1187/47 1221/1
-f 1222/5 1191/49 1223/53 1219/25
-f 1219/25 1223/53 1213/54 1218/26
-f 1243/68 1246/8 1245/7 1244/70
-f 1244/70 1245/7 1248/9 1247/72
-f 1246/8 1250/84 1249/83 1245/7
-f 1245/7 1249/83 1251/85 1248/9
-f 1250/84 1253/10 1252/11 1249/83
-f 1249/83 1252/11 1254/14 1251/85
-f 1253/10 1256/61 1255/57 1252/11
-f 1252/11 1255/57 1257/58 1254/14
-f 1264/17 1267/20 1266/19 1265/16
-f 1265/16 1266/19 1269/21 1268/18
-f 1267/20 1271/23 1270/22 1266/19
-f 1266/19 1270/22 1272/24 1269/21
-f 1275/74 1278/36 1277/35 1276/76
-f 1279/72 1280/9 1278/36 1275/74
-f 1256/66 1253/38 1250/37 1283/65
-f 1283/65 1250/37 1246/8 1243/68
-f 1264/30 1261/55 1281/56 1267/31
-f 1267/31 1281/56 1237/47 1271/1
-f 1271/1 1237/47 1238/48 1270/2
-f 1270/2 1238/48 1241/49 1272/5
-f 1272/5 1241/49 1273/53 1269/25
-f 1269/25 1273/53 1263/54 1268/26
-f 1292/74 1275/74 1276/76 1257/76
-f 1207/76 1294/76 1293/35 1204/35
-f 1254/35 1277/35 1278/36 1251/36
-f 1247/72 1279/72 1275/74 1292/74
-f 1251/36 1278/36 1280/9 1248/9
-f 1248/9 1280/9 1279/72 1247/72
-f 1257/76 1197/76 1198/35 1254/35
-f 1254/35 1198/35 1295/35 1277/35
-f 1277/35 1295/35 1296/76 1276/76
-f 1276/76 1296/76 1197/76 1257/76
-f 1296/76 1297/76 1236/76 1197/76
-f 1295/35 1298/35 1297/76 1296/76
-f 1198/35 1201/35 1298/35 1295/35
-f 1297/76 1294/76 1207/76 1236/76
-f 1298/35 1293/35 1294/76 1297/76
-f 1201/35 1204/35 1293/35 1298/35
-f 1260/50 1188/50 1191/52 1263/52
-f 1263/52 1191/52 1222/18 1268/18
-f 1268/18 1222/18 1220/16 1265/16
-f 1261/51 1187/51 1188/50 1260/50
-f 1264/17 1221/17 1187/51 1261/51
-f 1305/68 1308/8 1307/7 1306/70
-f 1306/70 1307/7 1310/9 1309/72
-f 1308/8 1312/84 1311/83 1307/7
-f 1307/7 1311/83 1313/85 1310/9
-f 1312/84 1315/10 1314/11 1311/83
-f 1311/83 1314/11 1316/14 1313/85
-f 1315/10 1318/61 1317/57 1314/11
-f 1314/11 1317/57 1319/58 1316/14
-f 1326/17 1329/20 1328/19 1327/16
-f 1327/16 1328/19 1331/21 1330/18
-f 1329/20 1333/23 1332/22 1328/19
-f 1328/19 1332/22 1334/24 1331/21
-f 1318/66 1315/38 1312/37 1339/65
-f 1339/65 1312/37 1308/8 1305/68
-f 1322/50 1327/16 1330/18 1325/52
-f 1323/51 1326/17 1327/16 1322/50
-f 1326/30 1323/55 1337/56 1329/31
-f 1329/31 1337/56 1299/47 1333/1
-f 1334/5 1303/49 1335/53 1331/25
-f 1331/25 1335/53 1325/54 1330/26
-f 1355/68 1358/8 1357/7 1356/70
-f 1356/70 1357/7 1360/9 1359/72
-f 1358/8 1362/84 1361/83 1357/7
-f 1357/7 1361/83 1363/85 1360/9
-f 1362/84 1365/10 1364/11 1361/83
-f 1361/83 1364/11 1366/14 1363/85
-f 1365/10 1368/61 1367/57 1364/11
-f 1364/11 1367/57 1369/58 1366/14
-f 1376/17 1379/20 1378/19 1377/16
-f 1377/16 1378/19 1381/21 1380/18
-f 1379/20 1383/23 1382/22 1378/19
-f 1378/19 1382/22 1384/24 1381/21
-f 1387/74 1390/36 1389/35 1388/76
-f 1391/72 1392/9 1390/36 1387/74
-f 1368/66 1365/38 1362/37 1395/65
-f 1395/65 1362/37 1358/8 1355/68
-f 1376/30 1373/55 1393/56 1379/31
-f 1379/31 1393/56 1349/47 1383/1
-f 1383/1 1349/47 1350/48 1382/2
-f 1382/2 1350/48 1353/49 1384/5
-f 1384/5 1353/49 1385/53 1381/25
-f 1381/25 1385/53 1375/54 1380/26
-f 1404/74 1387/74 1388/76 1369/76
-f 1319/76 1406/76 1405/35 1316/35
-f 1366/35 1389/35 1390/36 1363/36
-f 1359/72 1391/72 1387/74 1404/74
-f 1363/36 1390/36 1392/9 1360/9
-f 1360/9 1392/9 1391/72 1359/72
-f 1369/76 1309/76 1310/35 1366/35
-f 1366/35 1310/35 1407/35 1389/35
-f 1389/35 1407/35 1408/76 1388/76
-f 1388/76 1408/76 1309/76 1369/76
-f 1408/76 1409/76 1348/76 1309/76
-f 1407/35 1410/35 1409/76 1408/76
-f 1310/35 1313/35 1410/35 1407/35
-f 1409/76 1406/76 1319/76 1348/76
-f 1410/35 1405/35 1406/76 1409/76
-f 1313/35 1316/35 1405/35 1410/35
-f 1372/50 1300/50 1303/52 1375/52
-f 1375/52 1303/52 1334/18 1380/18
-f 1380/18 1334/18 1332/16 1377/16
-f 1373/51 1299/51 1300/50 1372/50
-f 1376/17 1333/17 1299/51 1373/51
-f 1411/86 1414/89 1413/88 1412/87
-f 1412/87 1413/88 1416/91 1415/90
-f 1415/90 1416/91 1418/93 1417/92
-f 1417/92 1418/93 1420/95 1419/94
-f 1421/96 1424/10 1423/98 1422/97
-f 1422/97 1423/98 1426/11 1425/99
-f 1427/100 1430/102 1429/14 1428/101
-f 1424/10 1432/104 1431/103 1423/98
-f 1423/98 1431/103 1433/105 1426/11
-f 1426/11 1433/105 1434/106 1430/102
-f 1430/102 1434/106 1435/107 1429/14
-f 1432/104 1437/13 1436/108 1431/103
-f 1431/103 1436/108 1438/12 1433/105
-f 1433/105 1438/12 1439/109 1434/106
-f 1434/106 1439/109 1440/15 1435/107
-f 1437/13 1442/111 1441/110 1436/108
-f 1436/108 1441/110 1443/112 1438/12
-f 1438/12 1443/112 1444/113 1439/109
-f 1439/109 1444/113 1445/114 1440/15
-f 1446/115 1449/17 1448/117 1447/116
-f 1447/116 1448/117 1451/16 1450/118
-f 1450/118 1451/16 1453/120 1452/119
-f 1452/119 1453/120 1455/18 1454/121
-f 1449/17 1457/123 1456/122 1448/117
-f 1448/117 1456/122 1458/124 1451/16
-f 1453/120 1460/126 1459/125 1455/18
-f 1461/127 1464/130 1463/129 1462/128
-f 1462/128 1463/129 1466/132 1465/131
-f 1465/131 1466/132 1468/134 1467/133
-f 1467/133 1468/134 1470/136 1469/135
-f 1459/137 1471/139 1454/138 1455/26
-f 1472/140 1473/143 1469/142 1470/141
-f 1474/41 1475/42 1440/27 1445/144
-f 1476/145 1479/148 1478/147 1477/146
-f 1480/149 1435/150 1440/27 1475/42
-f 1479/148 1482/152 1481/151 1478/147
-f 1480/149 1428/153 1429/35 1435/150
-f 1482/152 1419/155 1420/154 1481/151
-f 1449/30 1446/158 1483/157 1457/156
-f 1461/159 1485/162 1484/161 1464/160
-f 1442/163 1437/33 1487/165 1486/164
-f 1488/166 1491/169 1490/168 1489/167
-f 1437/33 1432/171 1492/170 1487/165
-f 1491/169 1494/173 1493/172 1490/168
-f 1432/171 1424/38 1421/174 1492/170
-f 1494/173 1414/176 1411/175 1493/172
-f 1495/45 1498/46 1497/178 1496/177
-f 1499/179 1502/182 1501/181 1500/180
-f 1503/183 1504/186 1499/185 1500/184
-f 1505/187 1508/190 1507/189 1506/188
-f 1509/191 1510/192 1508/190 1505/187
-f 1511/193 1512/196 1510/195 1509/194
-f 1513/197 1516/200 1515/199 1514/198
-f 1517/201 1518/202 1516/200 1513/197
-f 1519/203 1520/34 1518/202 1517/201
-f 1520/204 1519/207 1522/206 1521/205
-f 1521/205 1522/206 1524/209 1523/208
-f 1525/210 1528/213 1527/212 1526/211
-f 1529/214 1526/29 1527/216 1530/215
-f 1498/46 1529/214 1530/215 1497/178
-f 1472/140 1532/218 1531/217 1473/143
-f 1502/182 1534/220 1533/219 1501/181
-f 1471/139 1536/222 1535/221 1454/138
-f 1537/223 1452/119 1454/121 1535/224
-f 1538/225 1450/118 1452/119 1537/223
-f 1539/226 1447/116 1450/118 1538/225
-f 1540/227 1446/115 1447/116 1539/226
-f 1446/158 1540/229 1541/228 1483/157
-f 1542/230 1512/196 1511/193 1543/231
-f 1485/162 1545/233 1544/232 1484/161
-f 1546/234 1427/100 1428/101 1547/235
-f 1548/236 1425/99 1427/100 1546/234
-f 1549/237 1422/97 1425/99 1548/236
-f 1550/238 1421/96 1422/97 1549/237
-f 1421/174 1550/240 1551/239 1492/170
-f 1492/170 1551/239 1552/241 1487/165
-f 1487/165 1552/241 1553/242 1486/164
-f 1554/243 1483/157 1541/228 1555/244
-f 1483/157 1554/243 1556/245 1457/156
-f 1457/123 1556/247 1557/246 1456/122
-f 1456/122 1557/246 1558/248 1458/124
-f 1458/124 1558/248 1559/249 1460/126
-f 1460/126 1559/249 1560/250 1459/125
-f 1561/251 1471/139 1459/137 1560/252
-f 1562/253 1536/222 1471/139 1561/251
-f 1567/254 1480/149 1475/42 1568/39
-f 1547/255 1428/153 1480/149 1567/254
-f 1569/256 1525/210 1526/211 1570/257
-f 1571/258 1523/208 1525/210 1569/256
-f 1572/259 1521/205 1523/208 1571/258
-f 1573/260 1520/204 1521/205 1572/259
-f 1518/202 1520/34 1573/262 1574/261
-f 1516/200 1518/202 1574/261 1575/263
-f 1515/199 1516/200 1575/263 1576/264
-f 1512/196 1542/230 1578/266 1577/265
-f 1510/195 1512/196 1577/265 1579/267
-f 1510/192 1579/269 1580/268 1508/190
-f 1508/190 1580/268 1581/270 1507/189
-f 1507/189 1581/270 1582/271 1504/186
-f 1504/186 1582/271 1583/272 1499/185
-f 1584/273 1502/182 1499/179 1583/274
-f 1585/275 1534/220 1502/182 1584/273
-f 1590/276 1529/214 1498/46 1591/43
-f 1570/277 1526/29 1529/214 1590/276
-f 1528/213 1546/234 1547/235 1527/212
-f 1524/209 1548/236 1546/234 1528/213
-f 1522/206 1549/237 1548/236 1524/209
-f 1519/207 1550/238 1549/237 1522/206
-f 1550/240 1519/203 1517/201 1551/239
-f 1551/239 1517/201 1513/197 1552/241
-f 1552/241 1513/197 1514/198 1553/242
-f 1511/193 1554/243 1555/244 1543/231
-f 1554/243 1511/193 1509/194 1556/245
-f 1556/247 1509/191 1505/187 1557/246
-f 1557/246 1505/187 1506/188 1558/248
-f 1558/248 1506/188 1503/183 1559/249
-f 1559/249 1503/183 1500/184 1560/250
-f 1501/181 1561/251 1560/252 1500/180
-f 1533/219 1562/253 1561/251 1501/181
-f 1497/178 1568/39 1592/40 1496/177
-f 1530/215 1567/254 1568/39 1497/178
-f 1527/216 1547/255 1567/254 1530/215
-f 1425/99 1603/99 1602/100 1427/100
-f 1427/100 1602/100 1604/102 1430/102
-f 1430/102 1604/102 1605/11 1426/11
-f 1426/11 1605/11 1603/99 1425/99
-f 1523/208 1607/208 1606/210 1525/210
-f 1525/210 1606/210 1608/213 1528/213
-f 1528/213 1608/213 1609/209 1524/209
-f 1524/209 1609/209 1607/208 1523/208
-f 1603/99 1152/99 1153/100 1602/100
-f 1602/100 1153/100 1108/102 1604/102
-f 1604/102 1108/102 1109/11 1605/11
-f 1605/11 1109/11 1152/99 1603/99
-f 1607/208 1264/208 1265/210 1606/210
-f 1606/210 1265/210 1220/213 1608/213
-f 1608/213 1220/213 1221/209 1609/209
-f 1609/209 1221/209 1264/208 1607/208
-f 1418/93 1569/256 1570/257 1420/95
-f 1416/91 1571/258 1569/256 1418/93
-f 1413/88 1572/259 1571/258 1416/91
-f 1414/89 1573/260 1572/259 1413/88
-f 1574/261 1573/262 1414/176 1494/173
-f 1575/263 1574/261 1494/173 1491/169
-f 1576/264 1575/263 1491/169 1488/166
-f 1577/265 1578/266 1545/233 1485/162
-f 1579/267 1577/265 1485/162 1461/159
-f 1579/269 1461/127 1462/128 1580/268
-f 1580/268 1462/128 1465/131 1581/270
-f 1581/270 1465/131 1467/133 1582/271
-f 1582/271 1467/133 1469/135 1583/272
-f 1473/143 1584/273 1583/274 1469/142
-f 1531/217 1585/275 1584/273 1473/143
-f 1478/147 1591/43 1597/44 1477/146
-f 1481/151 1590/276 1591/43 1478/147
-f 1420/154 1570/277 1590/276 1481/151
-f 1451/16 1611/16 1610/120 1453/120
-f 1453/120 1610/120 1612/126 1460/126
-f 1460/126 1612/126 1613/124 1458/124
-f 1458/124 1613/124 1611/16 1451/16
-f 1506/188 1615/188 1614/183 1503/183
-f 1503/183 1614/183 1616/186 1504/186
-f 1504/186 1616/186 1617/189 1507/189
-f 1507/189 1617/189 1615/188 1506/188
-f 1611/16 1376/16 1377/120 1610/120
-f 1610/120 1377/120 1332/126 1612/126
-f 1612/126 1332/126 1333/124 1613/124
-f 1613/124 1333/124 1376/16 1611/16
-f 1615/188 1619/188 1618/183 1614/183
-f 1614/183 1618/183 1620/186 1616/186
-f 1616/186 1620/186 1621/189 1617/189
-f 1617/189 1621/189 1619/188 1615/188
-f 1622/278 451/19 452/280 1623/279
-f 1624/281 450/282 451/19 1622/278
-f 1625/283 449/20 450/282 1624/281
-f 1626/284 461/431 449/31 1625/285
-f 1627/287 461/431 1626/284
-f 1628/288 463/32 461/431 1629/289
-f 1630/291 465/292 463/32 1628/288
-f 1631/293 409/37 465/292 1630/291
-f 409/84 1631/296 1632/295 410/294
-f 410/294 1632/295 1633/297 411/83
-f 411/83 1633/297 1634/300 412/298
-f 412/298 1634/300 1635/299 413/85
-f 459/301 413/36 1635/303 1636/302
-f 457/28 459/301 1636/302 1637/304
-f 455/305 457/28 1637/304 1638/306
-f 455/305 1640/308 1639/307
-f 453/25 455/305 1639/307 1641/309
-f 1623/279 452/280 453/21 1641/310
-f 1642/311 1034/314 1035/313 1643/312
-f 1644/315 1647/316 1646/314 1645/311
-f 1648/317 1649/320 1647/319 1644/318
-f 1650/321 1651/322 1649/320 1648/317
-f 1652/323 1655/326 1654/325 1653/324
-f 1656/327 1657/328 1655/326 1652/323
-f 1658/329 1659/330 1657/328 1656/327
-f 1659/331 1658/334 1661/333 1660/332
-f 1660/332 1661/333 1663/336 1662/335
-f 1662/335 1663/336 1665/338 1664/337
-f 1664/337 1665/338 1667/340 1666/339
-f 1668/341 1666/344 1667/343 1669/342
-f 1670/345 1668/341 1669/342 1671/346
-f 1672/347 1670/345 1671/346 1673/348
-f 1674/349 1677/352 1676/351 1675/350
-f 1678/353 1674/349 1675/350 1679/354
-f 1680/355 1681/358 1678/357 1679/356
-f 1643/312 1035/313 1038/358 1682/355
-f 1645/311 1642/311 1643/312 1683/312
-f 1622/278 1685/278 1684/281 1624/281
-f 1686/314 1059/314 1688/311 1687/311
-f 1683/312 1643/312 1682/355 1680/355
-f 1689/355 1691/355 1015/359 1690/358
-f 1623/279 1692/279 1685/278 1622/278
-f 1646/314 1694/314 1693/311 1645/311
-f 1645/311 1693/311 1695/311 1642/311
-f 1642/311 1695/311 1696/314 1034/314
-f 1684/281 1698/281 1697/281 1624/281
-f 1680/355 1700/355 1699/358 1681/358
-f 1623/279 1702/279 1701/279 1692/279
-f 1038/358 1704/358 1703/355 1682/355
-f 1682/355 1703/355 1700/355 1680/355
-f 1047/360 1704/358 1038/358
-f 1696/314 1049/361 1034/314
-f 1705/361 1074/361 1059/314 1686/314
-f 1706/361 1707/361 1694/314 1646/314
-f 1647/316 1708/362 1706/361 1646/314
-f 1649/320 1709/364 1708/363 1647/319
-f 1651/322 1710/365 1709/364 1649/320
-f 1655/326 1712/367 1711/366 1654/325
-f 1657/328 1713/368 1712/367 1655/326
-f 1659/330 1714/369 1713/368 1657/328
-f 1714/370 1659/331 1660/332 1715/371
-f 1715/371 1660/332 1662/335 1716/372
-f 1716/372 1662/335 1664/337 1717/373
-f 1717/373 1664/337 1666/339 1718/374
-f 1719/375 1718/376 1666/344 1668/341
-f 1720/377 1719/375 1668/341 1670/345
-f 1721/378 1720/377 1670/345 1672/347
-f 1722/379 1723/380 1677/352 1674/349
-f 1724/381 1722/379 1674/349 1678/353
-f 1681/358 1725/360 1724/382 1678/357
-f 1699/358 1726/360 1725/360 1681/358
-f 1015/359 1727/360 1690/358
-f 1692/279 1701/279 1728/383 1033/383
-f 1031/384 1685/278 1692/279 1033/383
-f 1032/385 1684/281 1685/278 1031/384
-f 1729/385 1698/281 1684/281 1032/385
-f 1730/281 1732/281 1057/385 1731/385
-f 1624/281 1697/281 1734/385 1733/385
-f 1735/386 1625/283 1624/281 1733/385
-f 1736/387 1626/284 1625/285 1735/388
-f 1737/389 1627/287 1626/284 1736/387
-f 1738/390 1628/288 1629/289 1739/391
-f 1740/392 1630/291 1628/288 1738/390
-f 1741/393 1631/293 1630/291 1740/392
-f 1631/296 1741/395 1742/394 1632/295
-f 1632/295 1742/394 1743/396 1633/297
-f 1633/297 1743/396 1744/397 1634/300
-f 1634/300 1744/397 1745/398 1635/299
-f 1636/302 1635/303 1745/400 1746/399
-f 1637/304 1636/302 1746/399 1747/401
-f 1638/306 1637/304 1747/401 1748/402
-f 1639/307 1640/308 1750/404 1749/403
-f 1641/309 1639/307 1749/403 1751/405
-f 1752/383 1623/279 1641/310 1751/406
-f 1753/383 1702/279 1623/279 1752/383
-f 1011/383 1756/279 1755/279 1754/383
-f 1763/68 1766/8 1765/7 1764/70
-f 1764/70 1765/7 1768/9 1767/72
-f 1766/8 1770/84 1769/83 1765/7
-f 1765/7 1769/83 1771/85 1768/9
-f 1770/84 1773/10 1772/11 1769/83
-f 1769/83 1772/11 1774/14 1771/85
-f 1773/10 1776/61 1775/57 1772/11
-f 1772/11 1775/57 1777/58 1774/14
-f 1784/17 1787/20 1786/19 1785/16
-f 1785/16 1786/19 1789/21 1788/18
-f 1787/20 1621/23 1620/22 1786/19
-f 1786/19 1620/22 1790/24 1789/21
-f 1776/66 1773/38 1770/37 1795/65
-f 1795/65 1770/37 1766/8 1763/68
-f 1780/50 1785/16 1788/18 1783/52
-f 1781/51 1784/17 1785/16 1780/50
-f 1784/30 1781/55 1793/56 1787/31
-f 1787/31 1793/56 1757/47 1621/1
-f 1790/5 1761/49 1791/53 1789/25
-f 1789/25 1791/53 1783/54 1788/26
-f 1811/68 1814/8 1813/7 1812/70
-f 1812/70 1813/7 1816/9 1815/72
-f 1814/8 1818/84 1817/83 1813/7
-f 1813/7 1817/83 1819/85 1816/9
-f 1818/84 1821/10 1820/11 1817/83
-f 1817/83 1820/11 1822/14 1819/85
-f 1821/10 1824/61 1823/57 1820/11
-f 1820/11 1823/57 1825/58 1822/14
-f 1619/17 1833/20 1832/19 1618/16
-f 1618/16 1832/19 1835/21 1834/18
-f 1833/20 1837/23 1836/22 1832/19
-f 1832/19 1836/22 1838/24 1835/21
-f 1841/74 1844/36 1843/35 1842/76
-f 1845/72 1846/9 1844/36 1841/74
-f 1824/66 1821/38 1818/37 1849/65
-f 1849/65 1818/37 1814/8 1811/68
-f 1619/30 1829/55 1847/56 1833/31
-f 1833/31 1847/56 1805/47 1837/1
-f 1837/1 1805/47 1806/48 1836/2
-f 1836/2 1806/48 1809/49 1838/5
-f 1838/5 1809/49 1839/53 1835/25
-f 1835/25 1839/53 1831/54 1834/26
-f 1858/74 1841/74 1842/76 1825/76
-f 1777/76 1860/76 1859/35 1774/35
-f 1822/35 1843/35 1844/36 1819/36
-f 1815/72 1845/72 1841/74 1858/74
-f 1819/36 1844/36 1846/9 1816/9
-f 1816/9 1846/9 1845/72 1815/72
-f 1825/76 1767/76 1768/35 1822/35
-f 1822/35 1768/35 1861/35 1843/35
-f 1843/35 1861/35 1862/76 1842/76
-f 1842/76 1862/76 1767/76 1825/76
-f 1862/76 1863/76 1804/76 1767/76
-f 1861/35 1864/35 1863/76 1862/76
-f 1768/35 1771/35 1864/35 1861/35
-f 1863/76 1860/76 1777/76 1804/76
-f 1864/35 1859/35 1860/76 1863/76
-f 1771/35 1774/35 1859/35 1864/35
-f 1828/50 1758/50 1761/52 1831/52
-f 1831/52 1761/52 1790/18 1834/18
-f 1834/18 1790/18 1620/16 1618/16
-f 1829/51 1757/51 1758/50 1828/50
-f 1619/17 1621/17 1757/51 1829/51
-f 1865/383 1868/279 1867/279 1866/383
-f 1869/358 1872/360 1871/360 1870/358
-f 1873/355 1874/355 1869/358 1870/358
-f 1875/355 1876/355 1874/355 1873/355
-f 1010/359 1012/358 1876/355 1875/355
-f 1877/279 1878/279 1009/383 1010/383
-f 1867/279 1868/279 1878/279 1877/279
-f 1879/281 1882/281 1881/281 1880/281
-f 1056/385 1882/281 1879/281 1058/385
-f 1883/311 1884/311 1060/314 1063/314
-f 1885/311 1886/311 1884/311 1883/311
-f 1887/314 1888/314 1886/311 1885/311
-f 1889/361 1890/361 1888/314 1887/314
-f 1880/281 1881/281 1892/385 1891/385
-f 1702/279 1867/279 1877/279 1701/279
-f 1866/383 1867/279 1702/279 1753/383
-f 1870/358 1871/360 1726/360 1699/358
-f 1700/355 1873/355 1870/358 1699/358
-f 1703/355 1875/355 1873/355 1700/355
-f 1704/358 1010/359 1875/355 1703/355
-f 1047/360 1010/359 1704/358
-f 1701/279 1877/279 1010/383 1728/383
-f 1058/385 1879/281 1698/281 1729/385
-f 1063/314 1072/361 1049/361 1696/314
-f 1695/311 1883/311 1063/314 1696/314
-f 1693/311 1885/311 1883/311 1695/311
-f 1694/314 1887/314 1885/311 1693/311
-f 1707/361 1889/361 1887/314 1694/314
-f 1697/281 1880/281 1891/385 1734/385
-f 1698/281 1879/281 1880/281 1697/281
-f 1728/383 1010/383 1047/360
-f 1033/383 1728/383 1047/360
-f 1049/361 1729/385 1032/385
-f 1072/361 1058/385 1729/385 1049/361
-f 1731/385 1057/385 1074/361 1705/361
-f 1891/385 1892/385 1890/361 1889/361
-f 1734/385 1891/385 1889/361 1707/361
-f 1733/385 1734/385 1707/361 1706/361
-f 1708/362 1735/386 1733/385 1706/361
-f 1709/364 1736/387 1735/388 1708/363
-f 1710/365 1737/389 1736/387 1709/364
-f 1712/367 1738/390 1739/391 1711/366
-f 1713/368 1740/392 1738/390 1712/367
-f 1714/369 1741/393 1740/392 1713/368
-f 1741/395 1714/370 1715/371 1742/394
-f 1742/394 1715/371 1716/372 1743/396
-f 1743/396 1716/372 1717/373 1744/397
-f 1744/397 1717/373 1718/374 1745/398
-f 1746/399 1745/400 1718/376 1719/375
-f 1747/401 1746/399 1719/375 1720/377
-f 1748/402 1747/401 1720/377 1721/378
-f 1749/403 1750/404 1723/380 1722/379
-f 1751/405 1749/403 1722/379 1724/381
-f 1725/360 1752/383 1751/406 1724/382
-f 1726/360 1753/383 1752/383 1725/360
-f 1871/360 1866/383 1753/383 1726/360
-f 1872/360 1865/383 1866/383 1871/360
-f 1015/359 1011/383 1754/383 1727/360
-f 1888/314 1686/314 1687/311 1886/311
-f 1890/361 1705/361 1686/314 1888/314
-f 1892/385 1731/385 1705/361 1890/361
-f 1881/281 1730/281 1731/385 1892/385
-f 1882/281 1732/281 1730/281 1881/281
-f 1057/385 1732/281 1882/281 1056/385
-f 1884/311 1688/311 1059/314 1060/314
-f 1886/311 1687/311 1688/311 1884/311
-f 1876/355 1691/355 1689/355 1874/355
-f 1012/358 1015/359 1691/355 1876/355
-f 1878/279 1756/279 1011/383 1009/383
-f 1868/279 1755/279 1756/279 1878/279
-f 1754/383 1755/279 1868/279 1865/383
-f 1727/360 1754/383 1865/383 1872/360
-f 1690/358 1727/360 1872/360 1869/358
-f 1874/355 1689/355 1690/358 1869/358
-f 1909/407 1680/355 1679/356 1910/408
-f 1911/409 1683/312 1680/355 1909/407
-f 1912/410 1645/311 1683/312 1911/409
-f 1913/411 1644/315 1645/311 1912/410
-f 1914/412 1648/317 1644/318 1913/413
-f 1915/414 1650/321 1648/317 1914/412
-f 1916/415 1652/323 1653/324 1917/416
-f 1918/417 1656/327 1652/323 1916/415
-f 1919/418 1658/329 1656/327 1918/417
-f 1658/334 1919/420 1920/419 1661/333
-f 1661/333 1920/419 1921/421 1663/336
-f 1663/336 1921/421 1922/422 1665/338
-f 1665/338 1922/422 1923/423 1667/340
-f 1669/342 1667/343 1923/425 1924/424
-f 1671/346 1669/342 1924/424 1925/426
-f 1673/348 1671/346 1925/426 1926/427
-f 1675/350 1676/351 1928/429 1927/428
-f 1679/354 1675/350 1927/428 1910/430
-f 1468/134 1909/407 1910/408 1470/136
-f 1466/132 1911/409 1909/407 1468/134
-f 1463/129 1912/410 1911/409 1466/132
-f 1464/130 1913/411 1912/410 1463/129
-f 1484/161 1914/412 1913/413 1464/160
-f 1929/232 1932/414 1931/412 1930/161
-f 1933/168 1936/415 1935/416 1934/167
-f 1937/172 1938/417 1936/415 1933/168
-f 1411/175 1919/418 1918/417 1493/172
-f 1919/420 1411/86 1412/87 1920/419
-f 1920/419 1412/87 1415/90 1921/421
-f 1921/421 1415/90 1417/92 1922/422
-f 1922/422 1417/92 1419/94 1923/423
-f 1924/424 1923/425 1419/155 1482/152
-f 1925/426 1924/424 1482/152 1479/148
-f 1926/427 1925/426 1479/148 1476/145
-f 1927/428 1928/429 1532/218 1472/140
-f 1927/428 1472/140 1470/141 1910/430
-f 1544/232 1940/232 1939/161 1484/161
-f 1941/161 1944/161 1943/412 1942/412
-f 1914/412 1946/412 1945/414 1915/414
-f 1490/168 1933/168 1934/167 1489/167
-f 1917/416 1935/416 1936/415 1916/415
-f 1493/172 1937/172 1933/168 1490/168
-f 1916/415 1936/415 1938/417 1918/417
-f 1947/417 1950/417 1949/172 1948/172
-f 1484/161 1941/161 1942/412 1914/412
-f 1914/412 1942/412 1943/412 1946/412
-f 1946/412 1943/412 1944/161 1939/161
-f 1939/161 1944/161 1941/161 1484/161
-f 1918/417 1947/417 1948/172 1493/172
-f 1493/172 1948/172 1949/172 1937/172
-f 1937/172 1949/172 1950/417 1938/417
-f 1938/417 1950/417 1947/417 1918/417
-f 1951/232 1954/232 1953/161 1952/161
-f 1939/161 1930/161 1931/412 1946/412
-f 1946/412 1931/412 1932/414 1945/414
-f 1935/416 1956/416 1955/167 1934/167
-f 1940/232 1958/232 1957/161 1939/161
-f 1939/161 1957/161 1959/161 1930/161
-f 1960/161 1963/161 1962/232 1961/232
-f 1955/167 1965/167 1964/167 1934/167
-f 1930/161 1967/161 1966/232 1929/232
-f 1955/167 1969/167 1968/167 1965/167
-f 1954/232 1971/232 1970/161 1953/161
-f 1959/161 1972/161 1967/161 1930/161
-f 1967/161 1974/161 1973/232 1966/232
-f 1969/167 1976/167 1975/167 1968/167
-f 1971/232 1978/232 1977/161 1970/161
-f 1972/161 1979/161 1974/161 1967/161
-f 1974/161 1960/161 1961/232 1973/232
-f 1976/167 1981/167 1980/167 1975/167
-f 1978/232 1983/232 1982/161 1977/161
-f 1979/161 1963/161 1960/161 1974/161
-f 1975/167 1980/167 1985/167 1984/167
-f 1963/161 1982/161 1983/232 1962/232
-f 1977/161 1982/161 1963/161 1979/161
-f 1970/161 1977/161 1979/161 1972/161
-f 1953/161 1970/161 1972/161 1959/161
-f 1957/161 1952/161 1953/161 1959/161
-f 1958/232 1951/232 1952/161 1957/161
-f 1965/167 1987/167 1986/167 1964/167
-f 1968/167 1988/167 1987/167 1965/167
-f 1975/167 1984/167 1988/167 1968/167
-f 1629/289 461/431 1627/287
-f 1739/391 1629/289 1627/287 1737/389
-f 1711/366 1739/391 1737/389 1710/365
-f 1654/325 1711/366 1710/365 1651/322
-f 1653/324 1654/325 1651/322 1650/321
-f 1917/416 1653/324 1650/321 1915/414
-f 1945/414 1935/416 1917/416 1915/414
-f 1932/414 1956/416 1935/416 1945/414
-f 1955/167 1956/416 1932/414 1929/232
-f 1966/232 1969/167 1955/167 1929/232
-f 1973/232 1976/167 1969/167 1966/232
-f 1961/232 1981/167 1976/167 1973/232
-f 1962/232 1980/167 1981/167 1961/232
-f 1983/232 1985/167 1980/167 1962/232
-f 1984/167 1985/167 1983/232 1978/232
-f 1988/167 1984/167 1978/232 1971/232
-f 1987/167 1988/167 1971/232 1954/232
-f 1986/167 1987/167 1954/232 1951/232
-f 1964/167 1986/167 1951/232 1958/232
-f 1934/167 1964/167 1958/232 1940/232
-f 1489/167 1934/167 1940/232 1544/232
-f 1545/233 1488/166 1489/167 1544/232
-f 1578/266 1576/264 1488/166 1545/233
-f 1542/230 1515/199 1576/264 1578/266
-f 1515/199 1542/230 1543/231 1514/198
-f 1555/244 1553/242 1514/198 1543/231
-f 1541/228 1486/164 1553/242 1555/244
-f 1540/229 1442/163 1486/164 1541/228
-f 1442/111 1540/227 1539/226 1441/110
-f 1441/110 1539/226 1538/225 1443/112
-f 1443/112 1538/225 1537/223 1444/113
-f 1444/113 1537/223 1535/224 1445/114
-f 1536/222 1474/41 1445/144 1535/221
-f 1592/40 1474/41 1536/222 1562/253
-f 1496/177 1592/40 1562/253 1533/219
-f 1534/220 1495/45 1496/177 1533/219
-f 1597/44 1495/45 1534/220 1585/275
-f 1477/146 1597/44 1585/275 1531/217
-f 1532/218 1476/145 1477/146 1531/217
-f 1928/429 1926/427 1476/145 1532/218
-f 1676/351 1673/348 1926/427 1928/429
-f 1677/352 1672/347 1673/348 1676/351
-f 1723/380 1721/378 1672/347 1677/352
-f 1750/404 1748/402 1721/378 1723/380
-f 1640/308 1638/306 1748/402 1750/404
-f 455/305 1638/306 1640/308
-f 411/83 412/298 1990/298 1989/83
-f 412/298 602/300 1991/300 1990/298
-f 602/300 601/297 1992/297 1991/300
-f 601/297 411/83 1989/83 1992/297
-f 1989/83 1990/298 1994/298 1993/83
-f 1990/298 1991/300 1995/300 1994/298
-f 1991/300 1992/297 1996/297 1995/300
-f 1992/297 1989/83 1993/83 1996/297
-f 1997/2 1998/5 2305/432 2306/433
-f 1999/3 2000/6 2002/9 2001/7
-f 2004/11 2005/14 2007/15 2006/12
-f 2310/434 2311/435 2009/18 2008/16
-f 2010/25 2009/26 2311/436 2304/437
-f 1998/5 2010/25 2304/437 2305/432
-f 2011/28 2007/27 2005/35 2003/36
-f 2000/6 2011/28 2003/36 2002/9
-f 2001/7 2002/9 2012/9
-f 2002/9 2003/85 2013/85 2012/9
-f 2003/85 2005/14 2014/14 2013/85
-f 2005/14 2004/11 2014/14
-f 2001/7 2012/9 2016/9 2015/7
-f 2012/9 2013/85 2017/85 2016/9
-f 2013/85 2014/14 2018/14 2017/85
-f 2014/14 2004/11 2019/11 2018/14
-f 2016/9 2017/85 2022/85 2021/9
-f 2017/85 2018/14 2023/14 2022/85
-f 2031/9 2032/85 2033/85 2034/9
-f 2032/85 2035/14 2036/14 2033/85
-f 2021/9 2022/85 2032/85 2031/9
-f 2027/85 2026/9 2034/9 2033/85
-f 2038/9 2037/9 2039/9 2040/9
-f 2022/85 2023/14 2035/14 2032/85
-f 2041/14 2042/14 2043/14 2044/14
-f 2029/14 2027/85 2033/85 2036/14
-f 2026/9 2021/9 2051/9 2052/9
-f 2021/9 2031/9 2050/9 2051/9
-f 2109/9 2110/9 2111/9 2112/9
-f 2034/9 2026/9 2052/9 2049/9
-f 2023/14 2029/14 2054/14 2055/14
-f 2029/14 2036/14 2053/14 2054/14
-f 2114/14 2113/14 2115/14 2116/14
-f 2035/14 2023/14 2055/14 2056/14
-f 2046/9 2045/9 2039/9 2037/9
-f 2047/9 2046/9 2037/9 2038/9
-f 2048/9 2047/9 2038/9 2040/9
-f 2118/9 2117/9 2119/9 2120/9
-f 2050/9 2049/9 2048/9 2045/9
-f 2051/9 2050/9 2045/9 2046/9
-f 2052/9 2051/9 2046/9 2047/9
-f 2049/9 2052/9 2047/9 2048/9
-f 2054/14 2053/14 2057/14 2058/14
-f 2055/14 2054/14 2058/14 2059/14
-f 2056/14 2055/14 2059/14 2060/14
-f 2053/14 2056/14 2060/14 2057/14
-f 2058/14 2057/14 2043/14 2042/14
-f 2059/14 2058/14 2042/14 2041/14
-f 2060/14 2059/14 2041/14 2044/14
-f 2122/14 2121/14 2123/14 2124/14
-f 2031/9 2034/9 2062/9 2061/9
-f 2034/9 2049/9 2063/9 2062/9
-f 2049/9 2050/9 2064/9 2063/9
-f 2050/9 2031/9 2061/9 2064/9
-f 2036/14 2035/14 2065/14 2066/14
-f 2035/14 2056/14 2067/14 2065/14
-f 2056/14 2053/14 2068/14 2067/14
-f 2053/14 2036/14 2066/14 2068/14
-f 2045/9 2048/9 2069/9 2070/9
-f 2048/9 2040/9 2071/9 2069/9
-f 2040/9 2039/9 2072/9 2071/9
-f 2039/9 2045/9 2070/9 2072/9
-f 2057/14 2060/14 2073/14 2074/14
-f 2060/14 2044/14 2075/14 2073/14
-f 2044/14 2043/14 2076/14 2075/14
-f 2043/14 2057/14 2074/14 2076/14
-f 2061/9 2062/9 2078/9 2077/9
-f 2063/9 2064/9 2080/9 2079/9
-f 2142/9 2141/9 2143/9 2144/9
-f 2066/14 2065/14 2081/14 2082/14
-f 2145/14 2146/14 2147/14 2148/14
-f 2067/14 2068/14 2084/14 2083/14
-f 2070/9 2069/9 2085/9 2086/9
-f 2071/9 2072/9 2088/9 2087/9
-f 2150/9 2149/9 2151/9 2152/9
-f 2074/14 2073/14 2089/14 2090/14
-f 2153/14 2154/14 2155/14 2156/14
-f 2075/14 2076/14 2092/14 2091/14
-f 2077/9 2078/9 2094/9 2093/9
-f 2078/9 2079/9 2095/9 2094/9
-f 2079/9 2080/9 2096/9 2095/9
-f 2080/9 2077/9 2093/9 2096/9
-f 2082/14 2081/14 2097/14 2098/14
-f 2081/14 2083/14 2099/14 2097/14
-f 2083/14 2084/14 2100/14 2099/14
-f 2084/14 2082/14 2098/14 2100/14
-f 2086/9 2085/9 2101/9 2102/9
-f 2085/9 2087/9 2103/9 2101/9
-f 2087/9 2088/9 2104/9 2103/9
-f 2088/9 2086/9 2102/9 2104/9
-f 2090/14 2089/14 2105/14 2106/14
-f 2089/14 2091/14 2107/14 2105/14
-f 2091/14 2092/14 2108/14 2107/14
-f 2092/14 2090/14 2106/14 2108/14
-f 2093/9 2094/9 2110/9 2109/9
-f 2094/9 2095/9 2111/9 2110/9
-f 2095/9 2096/9 2112/9 2111/9
-f 2096/9 2093/9 2109/9 2112/9
-f 2098/14 2097/14 2113/14 2114/14
-f 2097/14 2099/14 2115/14 2113/14
-f 2099/14 2100/14 2116/14 2115/14
-f 2100/14 2098/14 2114/14 2116/14
-f 2102/9 2101/9 2117/9 2118/9
-f 2101/9 2103/9 2119/9 2117/9
-f 2103/9 2104/9 2120/9 2119/9
-f 2104/9 2102/9 2118/9 2120/9
-f 2106/14 2105/14 2121/14 2122/14
-f 2105/14 2107/14 2123/14 2121/14
-f 2107/14 2108/14 2124/14 2123/14
-f 2108/14 2106/14 2122/14 2124/14
-f 2064/9 2061/9 2125/9 2126/9
-f 2061/9 2077/9 2127/9 2125/9
-f 2077/9 2080/9 2128/9 2127/9
-f 2080/9 2064/9 2126/9 2128/9
-f 2065/14 2067/14 2130/14 2129/14
-f 2067/14 2083/14 2131/14 2130/14
-f 2083/14 2081/14 2132/14 2131/14
-f 2081/14 2065/14 2129/14 2132/14
-f 2072/9 2070/9 2133/9 2134/9
-f 2070/9 2086/9 2135/9 2133/9
-f 2086/9 2088/9 2136/9 2135/9
-f 2088/9 2072/9 2134/9 2136/9
-f 2073/14 2075/14 2138/14 2137/14
-f 2075/14 2091/14 2139/14 2138/14
-f 2091/14 2089/14 2140/14 2139/14
-f 2089/14 2073/14 2137/14 2140/14
-f 2126/9 2125/9 2141/9 2142/9
-f 2125/9 2127/9 2143/9 2141/9
-f 2127/9 2128/9 2144/9 2143/9
-f 2128/9 2126/9 2142/9 2144/9
-f 2129/14 2130/14 2146/14 2145/14
-f 2130/14 2131/14 2147/14 2146/14
-f 2131/14 2132/14 2148/14 2147/14
-f 2132/14 2129/14 2145/14 2148/14
-f 2134/9 2133/9 2149/9 2150/9
-f 2133/9 2135/9 2151/9 2149/9
-f 2135/9 2136/9 2152/9 2151/9
-f 2136/9 2134/9 2150/9 2152/9
-f 2137/14 2138/14 2154/14 2153/14
-f 2138/14 2139/14 2155/14 2154/14
-f 2139/14 2140/14 2156/14 2155/14
-f 2140/14 2137/14 2153/14 2156/14
-f 1997/2 2306/433 2307/432 2157/5
-f 1999/3 2001/7 2159/9 2158/6
-f 2004/11 2006/12 2164/15 2163/14
-f 2310/434 2008/16 2165/18 2309/435
-f 2166/25 2308/437 2309/436 2165/26
-f 2157/5 2307/432 2308/437 2166/25
-f 2167/28 2168/36 2163/35 2164/27
-f 2158/6 2159/9 2168/36 2167/28
-f 2001/7 2169/9 2159/9
-f 2159/9 2169/9 2170/85 2168/85
-f 2168/85 2170/85 2171/14 2163/14
-f 2163/14 2171/14 2004/11
-f 2001/7 2015/7 2172/9 2169/9
-f 2169/9 2172/9 2173/85 2170/85
-f 2170/85 2173/85 2174/14 2171/14
-f 2171/14 2174/14 2019/11 2004/11
-f 2172/9 2175/9 2176/85 2173/85
-f 2173/85 2176/85 2177/14 2174/14
-f 2178/9 2181/9 2180/85 2179/85
-f 2179/85 2180/85 2183/14 2182/14
-f 2175/9 2178/9 2179/85 2176/85
-f 2161/85 2180/85 2181/9 2160/9
-f 2184/9 2187/9 2186/9 2185/9
-f 2176/85 2179/85 2182/14 2177/14
-f 2188/14 2191/14 2190/14 2189/14
-f 2162/14 2183/14 2180/85 2161/85
-f 2160/9 2193/9 2192/9 2175/9
-f 2175/9 2192/9 2194/9 2178/9
-f 2195/9 2198/9 2197/9 2196/9
-f 2181/9 2199/9 2193/9 2160/9
-f 2177/14 2201/14 2200/14 2162/14
-f 2162/14 2200/14 2202/14 2183/14
-f 2203/14 2206/14 2205/14 2204/14
-f 2182/14 2207/14 2201/14 2177/14
-f 2208/9 2185/9 2186/9 2209/9
-f 2210/9 2184/9 2185/9 2208/9
-f 2211/9 2187/9 2184/9 2210/9
-f 2212/9 2215/9 2214/9 2213/9
-f 2194/9 2209/9 2211/9 2199/9
-f 2192/9 2208/9 2209/9 2194/9
-f 2193/9 2210/9 2208/9 2192/9
-f 2199/9 2211/9 2210/9 2193/9
-f 2200/14 2217/14 2216/14 2202/14
-f 2201/14 2218/14 2217/14 2200/14
-f 2207/14 2219/14 2218/14 2201/14
-f 2202/14 2216/14 2219/14 2207/14
-f 2217/14 2189/14 2190/14 2216/14
-f 2218/14 2188/14 2189/14 2217/14
-f 2219/14 2191/14 2188/14 2218/14
-f 2220/14 2223/14 2222/14 2221/14
-f 2178/9 2225/9 2224/9 2181/9
-f 2181/9 2224/9 2226/9 2199/9
-f 2199/9 2226/9 2227/9 2194/9
-f 2194/9 2227/9 2225/9 2178/9
-f 2183/14 2229/14 2228/14 2182/14
-f 2182/14 2228/14 2230/14 2207/14
-f 2207/14 2230/14 2231/14 2202/14
-f 2202/14 2231/14 2229/14 2183/14
-f 2209/9 2233/9 2232/9 2211/9
-f 2211/9 2232/9 2234/9 2187/9
-f 2187/9 2234/9 2235/9 2186/9
-f 2186/9 2235/9 2233/9 2209/9
-f 2216/14 2237/14 2236/14 2219/14
-f 2219/14 2236/14 2238/14 2191/14
-f 2191/14 2238/14 2239/14 2190/14
-f 2190/14 2239/14 2237/14 2216/14
-f 2225/9 2241/9 2240/9 2224/9
-f 2226/9 2242/9 2243/9 2227/9
-f 2244/9 2247/9 2246/9 2245/9
-f 2229/14 2249/14 2248/14 2228/14
-f 2250/14 2253/14 2252/14 2251/14
-f 2230/14 2255/14 2254/14 2231/14
-f 2233/9 2257/9 2256/9 2232/9
-f 2234/9 2258/9 2259/9 2235/9
-f 2260/9 2263/9 2262/9 2261/9
-f 2237/14 2265/14 2264/14 2236/14
-f 2266/14 2269/14 2268/14 2267/14
-f 2238/14 2271/14 2270/14 2239/14
-f 2241/9 2273/9 2272/9 2240/9
-f 2240/9 2272/9 2274/9 2242/9
-f 2242/9 2274/9 2275/9 2243/9
-f 2243/9 2275/9 2273/9 2241/9
-f 2249/14 2277/14 2276/14 2248/14
-f 2248/14 2276/14 2278/14 2255/14
-f 2255/14 2278/14 2279/14 2254/14
-f 2254/14 2279/14 2277/14 2249/14
-f 2257/9 2281/9 2280/9 2256/9
-f 2256/9 2280/9 2282/9 2258/9
-f 2258/9 2282/9 2283/9 2259/9
-f 2259/9 2283/9 2281/9 2257/9
-f 2265/14 2285/14 2284/14 2264/14
-f 2264/14 2284/14 2286/14 2271/14
-f 2271/14 2286/14 2287/14 2270/14
-f 2270/14 2287/14 2285/14 2265/14
-f 2273/9 2195/9 2196/9 2272/9
-f 2272/9 2196/9 2197/9 2274/9
-f 2274/9 2197/9 2198/9 2275/9
-f 2275/9 2198/9 2195/9 2273/9
-f 2277/14 2203/14 2204/14 2276/14
-f 2276/14 2204/14 2205/14 2278/14
-f 2278/14 2205/14 2206/14 2279/14
-f 2279/14 2206/14 2203/14 2277/14
-f 2281/9 2212/9 2213/9 2280/9
-f 2280/9 2213/9 2214/9 2282/9
-f 2282/9 2214/9 2215/9 2283/9
-f 2283/9 2215/9 2212/9 2281/9
-f 2285/14 2220/14 2221/14 2284/14
-f 2284/14 2221/14 2222/14 2286/14
-f 2286/14 2222/14 2223/14 2287/14
-f 2287/14 2223/14 2220/14 2285/14
-f 2227/9 2289/9 2288/9 2225/9
-f 2225/9 2288/9 2290/9 2241/9
-f 2241/9 2290/9 2291/9 2243/9
-f 2243/9 2291/9 2289/9 2227/9
-f 2228/14 2293/14 2292/14 2230/14
-f 2230/14 2292/14 2294/14 2255/14
-f 2255/14 2294/14 2295/14 2248/14
-f 2248/14 2295/14 2293/14 2228/14
-f 2235/9 2297/9 2296/9 2233/9
-f 2233/9 2296/9 2298/9 2257/9
-f 2257/9 2298/9 2299/9 2259/9
-f 2259/9 2299/9 2297/9 2235/9
-f 2236/14 2301/14 2300/14 2238/14
-f 2238/14 2300/14 2302/14 2271/14
-f 2271/14 2302/14 2303/14 2264/14
-f 2264/14 2303/14 2301/14 2236/14
-f 2289/9 2244/9 2245/9 2288/9
-f 2288/9 2245/9 2246/9 2290/9
-f 2290/9 2246/9 2247/9 2291/9
-f 2291/9 2247/9 2244/9 2289/9
-f 2293/14 2250/14 2251/14 2292/14
-f 2292/14 2251/14 2252/14 2294/14
-f 2294/14 2252/14 2253/14 2295/14
-f 2295/14 2253/14 2250/14 2293/14
-f 2297/9 2260/9 2261/9 2296/9
-f 2296/9 2261/9 2262/9 2298/9
-f 2298/9 2262/9 2263/9 2299/9
-f 2299/9 2263/9 2260/9 2297/9
-f 2301/14 2266/14 2267/14 2300/14
-f 2300/14 2267/14 2268/14 2302/14
-f 2302/14 2268/14 2269/14 2303/14
-f 2303/14 2269/14 2266/14 2301/14
-f 2305/432 2304/437 3278/438 3279/439
-f 2306/433 2305/432 3279/439 3280/440
-f 2307/432 2306/433 3280/440 3281/439
-f 2308/437 2307/432 3281/439 3282/438
-f 2309/436 2308/437 3282/438 3283/441
-f 3284/442 2310/434 2309/435 3283/443
-f 3284/442 3285/443 2311/435 2310/434
-f 2304/437 2311/436 3285/441 3278/438
-f 2313/82 2312/81 2318/81 2319/82
-f 2314/77 2313/82 2319/82 2320/77
-f 2315/78 2314/77 2320/77 2321/78
-f 2316/444 2315/78 2321/78 2322/444
-f 2317/79 2316/444 2322/444 2323/79
-f 2319/82 2318/81 2324/81 2325/82
-f 2320/77 2319/82 2325/82 2326/77
-f 2321/78 2320/77 2326/77 2327/78
-f 2322/444 2321/78 2327/78 2328/444
-f 2323/79 2322/444 2328/444 2329/79
-f 2325/82 2324/81 2330/81 2331/82
-f 2326/77 2325/82 2331/82 2332/77
-f 2361/78 2360/77 2362/77 2363/78
-f 2328/444 2327/78 2333/78 2334/444
-f 2329/79 2328/444 2334/444 2335/79
-f 2331/82 2330/81 2364/81 2365/82
-f 2327/78 2326/77 2348/77 2349/78
-f 2326/77 2332/77 2350/77 2348/77
-f 2332/77 2333/78 2351/78 2350/77
-f 2333/78 2327/78 2349/78 2351/78
-f 2349/78 2348/77 2352/77 2353/78
-f 2348/77 2350/77 2354/77 2352/77
-f 2350/77 2351/78 2355/78 2354/77
-f 2351/78 2349/78 2353/78 2355/78
-f 2353/78 2352/77 2356/77 2357/78
-f 2352/77 2354/77 2358/77 2356/77
-f 2354/77 2355/78 2359/78 2358/77
-f 2355/78 2353/78 2357/78 2359/78
-f 2357/78 2356/77 2360/77 2361/78
-f 2358/77 2359/78 2363/78 2362/77
-f 2399/78 2398/77 2400/77 2401/78
-f 2391/78 2390/77 2394/77 2395/78
-f 2390/77 2344/77 2396/77 2394/77
-f 2344/77 2345/78 2397/78 2396/77
-f 2345/78 2391/78 2395/78 2397/78
-f 2395/78 2394/77 2417/77 2418/78
-f 2394/77 2396/77 2416/77 2417/77
-f 2396/77 2397/78 2415/78 2416/77
-f 2397/78 2395/78 2418/78 2415/78
-f 2416/77 2415/78 2420/78 2421/77
-f 2417/77 2416/77 2421/77 2422/77
-f 2418/78 2417/77 2422/77 2419/78
-f 2415/78 2418/78 2419/78 2420/78
-f 2421/77 2420/78 2401/78 2400/77
-f 2419/78 2422/77 2398/77 2399/78
-f 2427/82 2428/82 2318/81 2312/81
-f 2429/77 2430/77 2428/82 2427/82
-f 2431/78 2432/78 2430/77 2429/77
-f 2433/444 2434/444 2432/78 2431/78
-f 2317/79 2323/79 2434/444 2433/444
-f 2428/82 2435/82 2324/81 2318/81
-f 2430/77 2436/77 2435/82 2428/82
-f 2432/78 2437/78 2436/77 2430/77
-f 2434/444 2438/444 2437/78 2432/78
-f 2323/79 2329/79 2438/444 2434/444
-f 2435/82 2439/82 2330/81 2324/81
-f 2436/77 2440/77 2439/82 2435/82
-f 2441/78 2444/78 2443/77 2442/77
-f 2438/444 2446/444 2445/78 2437/78
-f 2329/79 2335/79 2446/444 2438/444
-f 2437/78 2460/78 2459/77 2436/77
-f 2436/77 2459/77 2461/77 2440/77
-f 2440/77 2461/77 2462/78 2445/78
-f 2445/78 2462/78 2460/78 2437/78
-f 2460/78 2464/78 2463/77 2459/77
-f 2459/77 2463/77 2465/77 2461/77
-f 2461/77 2465/77 2466/78 2462/78
-f 2462/78 2466/78 2464/78 2460/78
-f 2464/78 2468/78 2467/77 2463/77
-f 2463/77 2467/77 2469/77 2465/77
-f 2465/77 2469/77 2470/78 2466/78
-f 2466/78 2470/78 2468/78 2464/78
-f 2468/78 2441/78 2442/77 2467/77
-f 2469/77 2443/77 2444/78 2470/78
-f 2485/78 2488/78 2487/77 2486/77
-f 2481/78 2492/78 2491/77 2480/77
-f 2480/77 2491/77 2493/77 2484/77
-f 2484/77 2493/77 2494/78 2489/78
-f 2489/78 2494/78 2492/78 2481/78
-f 2492/78 2496/78 2495/77 2491/77
-f 2491/77 2495/77 2497/77 2493/77
-f 2493/77 2497/77 2498/78 2494/78
-f 2494/78 2498/78 2496/78 2492/78
-f 2497/77 2504/77 2503/78 2498/78
-f 2495/77 2505/77 2504/77 2497/77
-f 2496/78 2506/78 2505/77 2495/77
-f 2498/78 2503/78 2506/78 2496/78
-f 2504/77 2487/77 2488/78 2503/78
-f 2506/78 2485/78 2486/77 2505/77
-f 2507/445 2508/446 2516/447 2515/448
-f 2508/446 2509/449 2517/450 2516/447
-f 2509/449 2510/451 2518/452 2517/450
-f 2510/451 2511/453 2519/454 2518/452
-f 2511/453 2512/455 2520/456 2519/454
-f 2512/455 2513/457 2521/458 2520/456
-f 2513/457 2514/459 2522/460 2521/458
-f 2514/459 2507/461 2515/462 2522/460
-f 2515/448 2516/447 2524/463 2523/464
-f 2516/447 2517/450 2525/465 2524/463
-f 2517/450 2518/452 2526/466 2525/465
-f 2518/452 2519/454 2527/467 2526/466
-f 2519/454 2520/456 2528/468 2527/467
-f 2520/456 2521/458 2529/469 2528/468
-f 2521/458 2522/460 2530/470 2529/469
-f 2522/460 2515/462 2523/471 2530/470
-f 2523/464 2524/463 2532/472 2531/473
-f 2524/463 2525/465 2533/474 2532/472
-f 2525/465 2526/466 2534/475 2533/474
-f 2526/466 2527/467 2535/476 2534/475
-f 2527/467 2528/468 2536/477 2535/476
-f 2528/468 2529/469 2537/478 2536/477
-f 2529/469 2530/470 2538/479 2537/478
-f 2530/470 2523/471 2531/480 2538/479
-f 2508/2 2507/481 2539/482
-f 2509/483 2508/2 2539/482
-f 2510/484 2509/483 2539/482
-f 2511/485 2510/484 2539/482
-f 2512/453 2511/485 2539/482
-f 2514/79 2513/486 2539/482
-f 2507/481 2514/79 2539/482
-f 2531/487 2532/22 2540/488
-f 2532/22 2533/489 2540/488
-f 2533/489 2534/490 2540/488
-f 2534/490 2535/491 2540/488
-f 2535/491 2536/118 2540/488
-f 2536/118 2537/492 2540/488
-f 2537/492 2538/493 2540/488
-f 2538/493 2531/487 2540/488
-f 2513/486 2512/453 2541/453 2542/486
-f 2512/453 2539/482 2543/482 2541/453
-f 2539/482 2513/486 2542/486 2543/482
-f 2551/82 2550/81 3136/81 3137/82
-f 2552/77 2551/82 3137/82 3138/77
-f 2553/78 2552/77 3138/77 3129/78
-f 2554/444 2553/78 3129/78 3130/444
-f 2555/79 2554/444 3130/444 3131/79
-f 2573/78 2572/77 2574/77 2575/78
-f 2565/78 2564/77 2568/77 2569/78
-f 2546/77 2547/78 2571/78 2570/77
-f 2568/77 2570/77 2594/77 2595/77
-f 2590/77 2589/78 2575/78 2574/77
-f 2592/78 2591/77 2572/77 2573/78
-f 2594/77 2593/78 2589/78 2590/77
-f 2595/77 2594/77 2590/77 2591/77
-f 2596/78 2595/77 2591/77 2592/78
-f 2593/78 2596/78 2592/78 2589/78
-f 2601/82 3135/82 3136/81 2550/81
-f 2603/77 3134/77 3135/82 2601/82
-f 2605/78 3133/78 3134/77 2603/77
-f 2607/444 3132/444 3133/78 2605/78
-f 2555/79 3131/79 3132/444 2607/444
-f 2615/78 2618/78 2617/77 2616/77
-f 2611/78 2622/78 2621/77 2610/77
-f 2614/77 2623/77 2624/78 2619/78
-f 2621/77 2625/77 2627/77 2623/77
-f 2624/78 2628/78 2626/78 2622/78
-f 2633/77 2617/77 2618/78 2634/78
-f 2636/78 2615/78 2616/77 2635/77
-f 2627/77 2633/77 2634/78 2628/78
-f 2625/77 2635/77 2633/77 2627/77
-f 2626/78 2636/78 2635/77 2625/77
-f 2628/78 2634/78 2636/78 2626/78
-f 2637/445 2638/494 2683/495 2684/496
-f 2638/494 2639/497 2682/498 2683/495
-f 2639/497 2640/499 2681/500 2682/498
-f 2640/499 2641/501 2680/502 2681/500
-f 2641/501 2642/453 2679/503 2680/502
-f 2642/453 2643/504 2678/505 2679/503
-f 2643/504 2644/506 2677/507 2678/505
-f 2644/506 2645/508 2676/509 2677/507
-f 2645/508 2646/510 2685/511 2676/509
-f 2646/510 2637/461 2684/512 2685/511
-f 2647/448 2648/513 3166/514 3167/515
-f 2648/513 2649/516 3165/517 3166/514
-f 2649/516 2650/518 3164/519 3165/517
-f 2650/518 2651/520 3163/521 3164/519
-f 2651/520 2652/454 3162/522 3163/521
-f 2652/454 2653/523 3161/524 3162/522
-f 2653/523 2654/525 3160/526 3161/524
-f 2654/525 2655/527 3159/528 3160/526
-f 2655/527 2656/529 3168/530 3159/528
-f 2656/529 2647/462 3167/531 3168/530
-f 2657/464 2658/532 2692/533 2693/534
-f 2658/532 2659/535 2691/536 2692/533
-f 2659/535 2660/537 2690/538 2691/536
-f 2660/537 2661/539 2689/540 2690/538
-f 2661/539 2662/467 2688/541 2689/540
-f 2662/467 2663/542 2687/543 2688/541
-f 2663/542 2664/544 2686/545 2687/543
-f 2664/544 2665/546 2695/547 2686/545
-f 2665/546 2666/548 2694/549 2695/547
-f 2666/548 2657/471 2693/550 2694/549
-f 2638/551 2637/80 2675/482
-f 2639/552 2638/551 2675/482
-f 2640/553 2639/552 2675/482
-f 2641/81 2640/553 2675/482
-f 2642/82 2641/81 2675/482
-f 2643/77 2642/82 2675/482
-f 2644/78 2643/77 2675/482
-f 2645/444 2644/78 2675/482
-f 2646/79 2645/444 2675/482
-f 2637/80 2646/79 2675/482
-f 2677/507 2676/509 2655/527 2654/525
-f 2678/505 2677/507 2654/525 2653/523
-f 2679/503 2678/505 2653/523 2652/454
-f 2680/502 2679/503 2652/454 2651/520
-f 2681/500 2680/502 2651/520 2650/518
-f 2682/498 2681/500 2650/518 2649/516
-f 2683/495 2682/498 2649/516 2648/513
-f 2684/496 2683/495 2648/513 2647/448
-f 2685/511 2684/512 2647/462 2656/529
-f 2676/509 2685/511 2656/529 2655/527
-f 2687/543 2686/545 2672/554
-f 2688/541 2687/543 2672/554 2671/476
-f 2689/540 2688/541 2671/476 2670/555
-f 2690/538 2689/540 2670/555 2669/556
-f 2691/536 2690/538 2669/556 2668/557
-f 2692/533 2691/536 2668/557
-f 2693/534 2692/533 2668/557 2667/473
-f 2694/549 2693/550 2667/480 2674/558
-f 2695/547 2694/549 2674/558 2673/559
-f 2686/545 2695/547 2673/559 2672/554
-f 2696/445 2697/494 2739/495 2740/496
-f 2697/494 2698/497 2738/498 2739/495
-f 2698/497 2699/499 2737/500 2738/498
-f 2699/499 2700/501 2736/502 2737/500
-f 2700/501 2701/453 2735/503 2736/502
-f 2701/453 2702/504 2734/505 2735/503
-f 2702/504 2703/506 2733/507 2734/505
-f 2703/506 2704/508 2732/509 2733/507
-f 2704/508 2705/510 2741/511 2732/509
-f 2705/510 2696/461 2740/512 2741/511
-f 2706/448 2707/513 3144/560 3145/561
-f 2707/513 2708/516 3143/562 3144/560
-f 2708/516 2709/518 3142/563 3143/562
-f 2709/518 2710/520 3141/564 3142/563
-f 2710/520 2711/454 3140/565 3141/564
-f 2711/454 2712/523 3139/566 3140/565
-f 2712/523 2713/525 3148/567 3139/566
-f 2713/525 2714/527 3147/568 3148/567
-f 2714/527 2715/529 3146/569 3147/568
-f 2715/529 2706/462 3145/570 3146/569
-f 2716/464 2717/532 2748/533 2749/534
-f 2717/532 2718/535 2747/536 2748/533
-f 2718/535 2719/537 2746/538 2747/536
-f 2719/537 2720/539 2745/540 2746/538
-f 2720/539 2721/467 2744/541 2745/540
-f 2721/467 2722/542 2743/543 2744/541
-f 2722/542 2723/544 2742/545 2743/543
-f 2723/544 2724/546 2751/547 2742/545
-f 2724/546 2725/548 2750/549 2751/547
-f 2725/548 2716/471 2749/550 2750/549
-f 2697/551 2696/80 2731/482
-f 2698/552 2697/551 2731/482
-f 2699/553 2698/552 2731/482
-f 2700/81 2699/553 2731/482
-f 2701/82 2700/81 2731/482
-f 2702/77 2701/82 2731/482
-f 2703/78 2702/77 2731/482
-f 2704/444 2703/78 2731/482
-f 2705/79 2704/444 2731/482
-f 2696/80 2705/79 2731/482
-f 2733/507 2732/509 2714/527 2713/525
-f 2734/505 2733/507 2713/525 2712/523
-f 2735/503 2734/505 2712/523 2711/454
-f 2736/502 2735/503 2711/454 2710/520
-f 2737/500 2736/502 2710/520 2709/518
-f 2738/498 2737/500 2709/518 2708/516
-f 2739/495 2738/498 2708/516 2707/513
-f 2740/496 2739/495 2707/513 2706/448
-f 2741/511 2740/512 2706/462 2715/529
-f 2732/509 2741/511 2715/529 2714/527
-f 2743/543 2742/545 2728/554
-f 2744/541 2743/543 2728/554 2673/476
-f 2745/540 2744/541 2673/476 2674/555
-f 2746/538 2745/540 2674/555 2667/556
-f 2747/536 2746/538 2667/556 2727/557
-f 2748/533 2747/536 2727/557
-f 2749/534 2748/533 2727/557 2726/473
-f 2750/549 2749/550 2726/480 2730/558
-f 2751/547 2750/549 2730/558 2729/559
-f 2742/545 2751/547 2729/559 2728/554
-f 2759/445 2760/494 2770/513 2769/448
-f 2760/494 2761/497 2771/516 2770/513
-f 2761/497 2762/499 2772/518 2771/516
-f 2762/499 2763/501 2773/520 2772/518
-f 2763/501 2764/453 2774/454 2773/520
-f 2764/453 2765/504 2775/523 2774/454
-f 2765/504 2766/506 2776/525 2775/523
-f 2766/506 2767/508 2777/527 2776/525
-f 2767/508 2768/510 2778/529 2777/527
-f 2768/510 2759/461 2769/462 2778/529
-f 2769/448 2770/513 3072/571 3063/572
-f 2771/516 2772/518 3070/573 3071/574
-f 2772/518 2773/520 3069/575 3070/573
-f 2773/520 2774/454 3068/576 3069/575
-f 2774/454 2775/523 3067/577 3068/576
-f 2775/523 2776/525 3066/578 3067/577
-f 2776/525 2777/527 3065/579 3066/578
-f 2777/527 2778/529 3064/580 3065/579
-f 2778/529 2769/462 3063/581 3064/580
-f 2779/464 2780/532 2868/582 2859/583
-f 2780/532 2781/535 2867/584 2868/582
-f 2781/535 2782/537 2866/585 2867/584
-f 2782/537 2783/539 2865/586 2866/585
-f 2783/539 2784/467 2864/587 2865/586
-f 2784/467 2785/542 2863/588 2864/587
-f 2785/542 2786/544 2862/589 2863/588
-f 2786/544 2787/546 2861/590 2862/589
-f 2787/546 2788/548 2860/591 2861/590
-f 2788/548 2779/471 2859/592 2860/591
-f 2760/551 2759/80 2789/80 2790/551
-f 2761/552 2760/551 2790/551 2791/552
-f 2762/553 2761/552 2791/552 2792/553
-f 2763/81 2762/553 2792/553 2793/81
-f 2764/82 2763/81 2793/81 2794/82
-f 2765/77 2764/82 2794/82 2795/77
-f 2766/78 2765/77 2795/77 2796/78
-f 2767/444 2766/78 2796/78 2797/444
-f 2768/79 2767/444 2797/444 2798/79
-f 2759/80 2768/79 2798/79 2789/80
-f 2790/551 2789/80 3079/80 3080/551
-f 2791/552 2790/551 3080/551 3081/552
-f 2792/553 2791/552 3081/552 3082/553
-f 2793/81 2792/553 3082/553 3083/81
-f 2794/82 2793/81 3083/81 2603/82
-f 2795/77 2794/82 2603/82 2601/77
-f 2796/78 2795/77 2601/77 2550/78
-f 2797/444 2796/78 2550/78 3084/444
-f 2798/79 2797/444 3084/444 3085/79
-f 2789/80 2798/79 3085/79 3079/80
-f 2800/551 2799/80 2809/80 2810/551
-f 2801/552 2800/551 2810/551 2811/552
-f 2802/553 2801/552 2811/552 2812/553
-f 2803/81 2802/553 2812/553 2813/81
-f 2804/82 2803/81 2813/81 2814/82
-f 2805/77 2804/82 2814/82 2815/77
-f 2806/78 2805/77 2815/77 2816/78
-f 2807/444 2806/78 2816/78 2817/444
-f 2808/79 2807/444 2817/444 2818/79
-f 2799/80 2808/79 2818/79 2809/80
-f 2810/551 2809/80 3062/80 3053/551
-f 2811/552 2810/551 3053/551 3054/552
-f 2812/553 2811/552 3054/552 3055/553
-f 2813/81 2812/553 3055/553 3056/81
-f 2814/82 2813/81 3056/81 3057/82
-f 2815/77 2814/82 3057/82 3058/77
-f 2816/78 2815/77 3058/77 3059/78
-f 2817/444 2816/78 3059/78 3060/444
-f 2818/79 2817/444 3060/444 3061/79
-f 2809/80 2818/79 3061/79 3062/80
-f 2820/551 2819/80 2829/80 2830/551
-f 2821/552 2820/551 2830/551 2831/552
-f 2822/553 2821/552 2831/552 2832/553
-f 2823/81 2822/553 2832/553 2833/81
-f 3026/82 3025/81 3027/81 3028/82
-f 2825/77 2824/82 2834/82 2835/77
-f 2826/78 2825/77 2835/77 2836/78
-f 2827/444 2826/78 2836/78 2837/444
-f 2828/79 2827/444 2837/444 2838/79
-f 3030/80 3029/79 3031/79 3032/80
-f 2830/551 2829/80 2839/80 2840/551
-f 2831/552 2830/551 2840/551 2841/552
-f 2832/553 2831/552 2841/552 2842/553
-f 2833/81 2832/553 2842/553 2843/81
-f 2834/82 2833/81 2843/81 2844/82
-f 2835/77 2834/82 2844/82 2845/77
-f 2836/78 2835/77 2845/77 2846/78
-f 2837/444 2836/78 2846/78 2847/444
-f 2838/79 2837/444 2847/444 2848/79
-f 2829/80 2838/79 2848/79 2839/80
-f 2840/551 2839/80 2849/80 2850/551
-f 2841/552 2840/551 2850/551 2851/552
-f 2842/553 2841/552 2851/552 2852/553
-f 2843/81 2842/553 2852/553 2853/81
-f 2844/82 2843/81 2853/81 2854/82
-f 2845/77 2844/82 2854/82 2855/77
-f 2846/78 2845/77 2855/77 2856/78
-f 2847/444 2846/78 2856/78 2857/444
-f 2848/79 2847/444 2857/444 2858/79
-f 2839/80 2848/79 2858/79 2849/80
-f 2860/591 2859/592 2756/480 2758/558
-f 2861/590 2860/591 2758/558 2726/559
-f 2862/589 2861/590 2726/559 2727/554
-f 2863/588 2862/589 2727/554
-f 2864/587 2863/588 2727/554 2667/476
-f 2865/586 2864/587 2667/476 2757/555
-f 2866/585 2865/586 2757/555 2669/556
-f 2867/584 2866/585 2669/556 2755/557
-f 2868/582 2867/584 2755/557
-f 2859/583 2868/582 2755/557 2756/473
-f 2869/445 2870/494 2908/495 2909/496
-f 2870/494 2871/497 2907/498 2908/495
-f 2871/497 2872/499 2906/500 2907/498
-f 2872/499 2873/501 2905/502 2906/500
-f 2873/501 2874/453 2904/503 2905/502
-f 2874/453 2875/504 2903/505 2904/503
-f 2875/504 2876/506 2902/507 2903/505
-f 2876/506 2877/508 2901/509 2902/507
-f 2877/508 2878/510 2910/511 2901/509
-f 2878/510 2869/461 2909/512 2910/511
-f 2879/448 2880/513 3183/593 3184/594
-f 2880/513 2881/516 3182/595 3183/593
-f 2881/516 2882/518 3181/596 3182/595
-f 2882/518 2883/520 3180/597 3181/596
-f 2883/520 2884/454 3179/598 3180/597
-f 2884/454 2885/523 3188/599 3179/598
-f 2885/523 2886/525 3187/600 3188/599
-f 2886/525 2887/527 3186/601 3187/600
-f 2887/527 2888/529 3185/602 3186/601
-f 2888/529 2879/462 3184/603 3185/602
-f 2889/464 2890/532 2917/533 2918/534
-f 2890/532 2891/535 2916/536 2917/533
-f 2891/535 2892/537 2915/538 2916/536
-f 2892/537 2893/539 2914/540 2915/538
-f 2893/539 2894/467 2913/541 2914/540
-f 2894/467 2895/542 2912/543 2913/541
-f 2895/542 2896/544 2911/545 2912/543
-f 2896/544 2897/546 2920/547 2911/545
-f 2897/546 2898/548 2919/549 2920/547
-f 2898/548 2889/471 2918/550 2919/549
-f 2870/551 2869/80 2900/482
-f 2871/552 2870/551 2900/482
-f 2872/553 2871/552 2900/482
-f 2873/81 2872/553 2900/482
-f 2874/82 2873/81 2900/482
-f 2875/77 2874/82 2900/482
-f 2876/78 2875/77 2900/482
-f 2877/444 2876/78 2900/482
-f 2878/79 2877/444 2900/482
-f 2869/80 2878/79 2900/482
-f 2902/507 2901/509 3249/604 3250/605
-f 2903/505 2902/507 3250/605 3251/606
-f 2904/503 2903/505 3251/606 3252/607
-f 2905/502 2904/503 3252/607 3253/608
-f 2906/500 2905/502 3253/608 3254/609
-f 2907/498 2906/500 3254/609 3255/610
-f 2908/495 2907/498 3255/610 3256/611
-f 2909/496 2908/495 3256/611 3257/612
-f 2910/511 2909/512 3257/613 3258/614
-f 2901/509 2910/511 3258/614 3249/604
-f 2912/543 2911/545 2752/554
-f 2913/541 2912/543 2752/554 2729/476
-f 2914/540 2913/541 2729/476 2730/555
-f 2915/538 2914/540 2730/555 2726/556
-f 2916/536 2915/538 2726/556 2758/557
-f 2917/533 2916/536 2758/557
-f 2918/534 2917/533 2758/557 2756/473
-f 2919/549 2918/550 2756/480 2899/558
-f 2920/547 2919/549 2899/558 2754/559
-f 2911/545 2920/547 2754/559 2752/554
-f 2921/445 2922/494 2959/495 2960/496
-f 2922/494 2923/497 2958/498 2959/495
-f 2923/497 2924/499 2957/500 2958/498
-f 2924/499 2925/501 2956/502 2957/500
-f 2925/501 2926/453 2955/503 2956/502
-f 2926/453 2927/504 2954/505 2955/503
-f 2927/504 2928/506 2953/507 2954/505
-f 2928/506 2929/508 2952/509 2953/507
-f 2929/508 2930/510 2961/511 2952/509
-f 2930/510 2921/461 2960/512 2961/511
-f 2931/448 2932/513 3206/615 3207/616
-f 2932/513 2933/516 3205/617 3206/615
-f 2933/516 2934/518 3204/618 3205/617
-f 2934/518 2935/520 3203/619 3204/618
-f 2935/520 2936/454 3202/620 3203/619
-f 2936/454 2937/523 3201/621 3202/620
-f 2937/523 2938/525 3200/622 3201/621
-f 2938/525 2939/527 3199/623 3200/622
-f 2939/527 2940/529 3208/624 3199/623
-f 2940/529 2931/462 3207/625 3208/624
-f 2941/464 2942/532 2968/533 2969/534
-f 2942/532 2943/535 2967/536 2968/533
-f 2943/535 2944/537 2966/538 2967/536
-f 2944/537 2945/539 2965/540 2966/538
-f 2945/539 2946/467 2964/541 2965/540
-f 2946/467 2947/542 2963/543 2964/541
-f 2947/542 2948/544 2962/545 2963/543
-f 2948/544 2949/546 2971/547 2962/545
-f 2949/546 2950/548 2970/549 2971/547
-f 2950/548 2941/471 2969/550 2970/549
-f 2922/551 2921/80 2951/482
-f 2923/552 2922/551 2951/482
-f 2924/553 2923/552 2951/482
-f 2925/81 2924/553 2951/482
-f 2926/82 2925/81 2951/482
-f 2927/77 2926/82 2951/482
-f 2928/78 2927/77 2951/482
-f 2929/444 2928/78 2951/482
-f 2930/79 2929/444 2951/482
-f 2921/80 2930/79 2951/482
-f 2953/507 2952/509 2939/527 2938/525
-f 2954/505 2953/507 2938/525 2937/523
-f 2955/503 2954/505 2937/523 2936/454
-f 2956/502 2955/503 2936/454 2935/520
-f 2957/500 2956/502 2935/520 2934/518
-f 2958/498 2957/500 2934/518 2933/516
-f 2959/495 2958/498 2933/516 2932/513
-f 2960/496 2959/495 2932/513 2931/448
-f 2961/511 2960/512 2931/462 2940/529
-f 2952/509 2961/511 2940/529 2939/527
-f 2963/543 2962/545 2753/554
-f 2964/541 2963/543 2753/554 2754/476
-f 2965/540 2964/541 2754/476 2899/555
-f 2966/538 2965/540 2899/555 2756/556
-f 2967/536 2966/538 2756/556 2755/557
-f 2968/533 2967/536 2755/557
-f 2969/534 2968/533 2755/557 2669/473
-f 2970/549 2969/550 2669/480 2670/558
-f 2971/547 2970/549 2670/558 2671/559
-f 2962/545 2971/547 2671/559 2753/554
-f 2673/1 2728/2 2973/2 2972/1
-f 2672/4 2673/1 2972/1 2974/4
-f 2728/2 2729/5 2975/5 2973/2
-f 2729/5 2752/6 2976/6 2975/5
-f 2753/7 2671/8 2978/8 2977/7
-f 2671/8 2672/4 2974/4 2978/8
-f 2752/6 2754/9 2979/9 2976/6
-f 2754/9 2753/7 2977/7 2979/9
-f 2972/1 2973/2 2981/2 2980/1
-f 2974/4 2972/1 2980/1 2982/4
-f 2973/2 2975/5 2983/5 2981/2
-f 2975/5 2976/6 2984/6 2983/5
-f 2977/7 2978/8 2986/8 2985/7
-f 2978/8 2974/4 2982/4 2986/8
-f 2976/6 2979/9 2987/9 2984/6
-f 2979/9 2977/7 2985/7 2987/9
-f 2980/1 2981/2 2989/2 2988/1
-f 2982/4 2980/1 2988/1 2990/4
-f 2981/2 2983/5 2991/5 2989/2
-f 2983/5 2984/6 2992/6 2991/5
-f 2985/7 2986/8 2994/8 2993/7
-f 2986/8 2982/4 2990/4 2994/8
-f 2984/6 2987/9 2995/9 2992/6
-f 2987/9 2985/7 2993/7 2995/9
-f 2819/80 2828/79 3013/79 3014/80
-f 2828/79 2838/79 3015/79 3013/79
-f 2838/79 2829/80 3016/80 3015/79
-f 2829/80 2819/80 3014/80 3016/80
-f 2824/82 2823/81 3017/81 3018/82
-f 2823/81 2833/81 3019/81 3017/81
-f 2833/81 2834/82 3020/82 3019/81
-f 2834/82 2824/82 3018/82 3020/82
-f 3014/80 3013/79 3021/79 3022/80
-f 3013/79 3015/79 3023/79 3021/79
-f 3015/79 3016/80 3024/80 3023/79
-f 3016/80 3014/80 3022/80 3024/80
-f 3018/82 3017/81 3109/81 3110/82
-f 3017/81 3019/81 3108/81 3109/81
-f 3019/81 3020/82 3111/82 3108/81
-f 3020/82 3018/82 3110/82 3111/82
-f 3022/80 3021/79 3101/79 3102/80
-f 3021/79 3023/79 3100/79 3101/79
-f 3023/79 3024/80 3103/80 3100/79
-f 3024/80 3022/80 3102/80 3103/80
-f 3034/552 3033/551 3043/551 3044/552
-f 3035/553 3034/552 3044/552 3045/553
-f 3036/81 3035/553 3045/553 3046/81
-f 3037/82 3036/81 3046/81 3047/82
-f 3038/77 3037/82 3047/82 3048/77
-f 3039/78 3038/77 3048/77 3049/78
-f 3040/444 3039/78 3049/78 3050/444
-f 3041/79 3040/444 3050/444 3051/79
-f 3042/80 3041/79 3051/79 3052/80
-f 3033/551 3042/80 3052/80 3043/551
-f 3044/552 3043/551 2820/551 2821/552
-f 3045/553 3044/552 2821/552 2822/553
-f 3046/81 3045/553 2822/553 2823/81
-f 3047/82 3046/81 2823/81 2824/82
-f 3048/77 3047/82 2824/82 2825/77
-f 3049/78 3048/77 2825/77 2826/78
-f 3050/444 3049/78 2826/78 2827/444
-f 3051/79 3050/444 2827/444 2828/79
-f 3052/80 3051/79 2828/79 2819/80
-f 3043/551 3052/80 2819/80 2820/551
-f 3054/552 3053/551 3033/551 3034/552
-f 3055/553 3054/552 3034/552 3035/553
-f 3056/81 3055/553 3035/553 3036/81
-f 3057/82 3056/81 3036/81 3037/82
-f 3058/77 3057/82 3037/82 3038/77
-f 3059/78 3058/77 3038/77 3039/78
-f 3060/444 3059/78 3039/78 3040/444
-f 3061/79 3060/444 3040/444 3041/79
-f 3062/80 3061/79 3041/79 3042/80
-f 3053/551 3062/80 3042/80 3033/551
-f 2850/551 2849/80 3091/80 1998/551
-f 2851/552 2850/551 1998/551 1997/552
-f 2852/553 2851/552 1997/552 2157/553
-f 2853/81 2852/553 2157/553 3092/81
-f 2854/82 2853/81 3092/81 3086/82
-f 2855/77 2854/82 3086/82 3087/77
-f 2856/78 2855/77 3087/77 3088/78
-f 2857/444 2856/78 3088/78 3089/444
-f 2858/79 2857/444 3089/444 3090/79
-f 2849/80 2858/79 3090/79 3091/80
-f 3064/580 3063/581 3228/626 3219/627
-f 3065/579 3064/580 3219/627 3220/628
-f 3066/578 3065/579 3220/628 3221/629
-f 3067/577 3066/578 3221/629 3222/630
-f 3068/576 3067/577 3222/630 3223/631
-f 3069/575 3068/576 3223/631 3224/632
-f 3070/573 3069/575 3224/632 3225/633
-f 3071/574 3070/573 3225/633 3226/634
-f 3072/571 3071/574 3226/634 3227/635
-f 3063/572 3072/571 3227/635 3228/636
-f 3074/551 3073/80 2799/80 2800/551
-f 3075/552 3074/551 2800/551 2801/552
-f 3076/553 3075/552 2801/552 2802/553
-f 3077/81 3076/553 2802/553 2803/81
-f 2605/82 3077/81 2803/81 2804/82
-f 2607/77 2605/82 2804/82 2805/77
-f 2555/78 2607/77 2805/77 2806/78
-f 2554/444 2555/78 2806/78 2807/444
-f 3078/79 2554/444 2807/444 2808/79
-f 3073/80 3078/79 2808/79 2799/80
-f 3080/551 3079/80 3117/80 3118/551
-f 3081/552 3080/551 3118/551 3119/552
-f 3082/553 3081/552 3119/552 3120/553
-f 3083/81 3082/553 3120/553 3121/81
-f 2603/82 3083/81 3121/81
-f 3085/79 3084/444 2552/444 3116/79
-f 3079/80 3085/79 3116/79 3117/80
-f 3087/77 3086/82 3264/82 3265/77
-f 3088/78 3087/77 3265/77 3266/78
-f 3089/444 3088/78 3266/78 3267/444
-f 3090/79 3089/444 3267/444 3268/79
-f 3091/80 3090/79 3268/79 3269/80
-f 1998/551 3091/80 3269/80 2010/551
-f 3092/81 2157/553 2166/553 3263/81
-f 3086/82 3092/81 3263/81 3264/82
-f 2008/552 2009/551 2316/551 2317/552
-f 2165/553 2008/552 2317/552 2433/553
-f 3093/81 2165/553 2433/553 2431/81
-f 3094/82 3093/81 2431/81 2429/82
-f 3095/77 3094/82 2429/82 2427/77
-f 3096/78 3095/77 2427/77 2312/78
-f 3097/444 3096/78 2312/78 2313/444
-f 3098/79 3097/444 2313/444 2314/79
-f 3099/80 3098/79 2314/79 2315/80
-f 2009/551 3099/80 2315/80 2316/551
-f 3101/79 3100/79 3105/79 3106/79
-f 3102/80 3101/79 3106/79 3107/80
-f 3103/80 3102/80 3107/80 3104/80
-f 3100/79 3103/80 3104/80 3105/79
-f 3105/79 3104/80 3032/80 3031/79
-f 3107/80 3106/79 3029/79 3030/80
-f 3109/81 3108/81 3113/81 3114/81
-f 3110/82 3109/81 3114/81 3115/82
-f 3111/82 3110/82 3115/82 3112/82
-f 3108/81 3111/82 3112/82 3113/81
-f 3113/81 3112/82 3028/82 3027/81
-f 3115/82 3114/81 3025/81 3026/82
-f 3116/79 2552/444 2553/444 3122/79
-f 3117/80 3116/79 3122/79 3123/80
-f 3118/551 3117/80 3123/80 3124/551
-f 3119/552 3118/551 3124/551 3125/552
-f 3120/553 3119/552 3125/552 3126/553
-f 3121/81 3120/553 3126/553 3127/81
-f 2603/82 3121/81 3127/81 2605/82
-f 3122/79 2553/444 2554/444 3078/79
-f 3123/80 3122/79 3078/79 3073/80
-f 3124/551 3123/80 3073/80 3074/551
-f 3125/552 3124/551 3074/551 3075/552
-f 3126/553 3125/552 3075/552 3076/553
-f 3127/81 3126/553 3076/553 3077/81
-f 2605/82 3127/81 3077/81
-f 3084/444 2550/78 3128/444
-f 2552/444 3084/444 3128/444
-f 3140/565 3139/566 3149/637 3150/638
-f 3141/564 3140/565 3150/638 3151/639
-f 3142/563 3141/564 3151/639 3152/640
-f 3143/562 3142/563 3152/640 3153/641
-f 3144/560 3143/562 3153/641 3154/642
-f 3145/561 3144/560 3154/642 3155/643
-f 3146/569 3145/570 3155/644 3156/645
-f 3147/568 3146/569 3156/645 3157/646
-f 3148/567 3147/568 3157/646 3158/647
-f 3139/566 3148/567 3158/647 3149/637
-f 3150/638 3149/637 2722/542 2721/467
-f 3151/639 3150/638 2721/467 2720/539
-f 3152/640 3151/639 2720/539 2719/537
-f 3153/641 3152/640 2719/537 2718/535
-f 3154/642 3153/641 2718/535 2717/532
-f 3155/643 3154/642 2717/532 2716/464
-f 3156/645 3155/644 2716/471 2725/548
-f 3157/646 3156/645 2725/548 2724/546
-f 3158/647 3157/646 2724/546 2723/544
-f 3149/637 3158/647 2723/544 2722/542
-f 3160/526 3159/528 3169/648 3170/649
-f 3161/524 3160/526 3170/649 3171/650
-f 3162/522 3161/524 3171/650 3172/651
-f 3163/521 3162/522 3172/651 3173/652
-f 3164/519 3163/521 3173/652 3174/653
-f 3165/517 3164/519 3174/653 3175/654
-f 3166/514 3165/517 3175/654 3176/655
-f 3167/515 3166/514 3176/655 3177/656
-f 3168/530 3167/531 3177/657 3178/658
-f 3159/528 3168/530 3178/658 3169/648
-f 3170/649 3169/648 2665/546 2664/544
-f 3171/650 3170/649 2664/544 2663/542
-f 3172/651 3171/650 2663/542 2662/467
-f 3173/652 3172/651 2662/467 2661/539
-f 3174/653 3173/652 2661/539 2660/537
-f 3175/654 3174/653 2660/537 2659/535
-f 3176/655 3175/654 2659/535 2658/532
-f 3177/656 3176/655 2658/532 2657/464
-f 3178/658 3177/657 2657/471 2666/548
-f 3169/648 3178/658 2666/548 2665/546
-f 3180/597 3179/598 3189/659 3190/660
-f 3181/596 3180/597 3190/660 3191/661
-f 3182/595 3181/596 3191/661 3192/662
-f 3183/593 3182/595 3192/662 3193/663
-f 3184/594 3183/593 3193/663 3194/664
-f 3185/602 3184/603 3194/665 3195/666
-f 3186/601 3185/602 3195/666 3196/667
-f 3187/600 3186/601 3196/667 3197/668
-f 3188/599 3187/600 3197/668 3198/669
-f 3179/598 3188/599 3198/669 3189/659
-f 3190/660 3189/659 2894/467 2893/539
-f 3191/661 3190/660 2893/539 2892/537
-f 3192/662 3191/661 2892/537 2891/535
-f 3193/663 3192/662 2891/535 2890/532
-f 3194/664 3193/663 2890/532 2889/464
-f 3195/666 3194/665 2889/471 2898/548
-f 3196/667 3195/666 2898/548 2897/546
-f 3197/668 3196/667 2897/546 2896/544
-f 3198/669 3197/668 2896/544 2895/542
-f 3189/659 3198/669 2895/542 2894/467
-f 3200/622 3199/623 3209/648 3210/649
-f 3201/621 3200/622 3210/649 3211/650
-f 3202/620 3201/621 3211/650 3212/651
-f 3203/619 3202/620 3212/651 3213/652
-f 3204/618 3203/619 3213/652 3214/653
-f 3205/617 3204/618 3214/653 3215/654
-f 3206/615 3205/617 3215/654 3216/655
-f 3207/616 3206/615 3216/655 3217/656
-f 3208/624 3207/625 3217/657 3218/658
-f 3199/623 3208/624 3218/658 3209/648
-f 3210/649 3209/648 2949/546 2948/544
-f 3211/650 3210/649 2948/544 2947/542
-f 3212/651 3211/650 2947/542 2946/467
-f 3213/652 3212/651 2946/467 2945/539
-f 3214/653 3213/652 2945/539 2944/537
-f 3215/654 3214/653 2944/537 2943/535
-f 3216/655 3215/654 2943/535 2942/532
-f 3217/656 3216/655 2942/532 2941/464
-f 3218/658 3217/657 2941/471 2950/548
-f 3209/648 3218/658 2950/548 2949/546
-f 3220/628 3219/627 3229/670 3230/671
-f 3221/629 3220/628 3230/671 3231/672
-f 3222/630 3221/629 3231/672 3232/673
-f 3223/631 3222/630 3232/673 3233/674
-f 3224/632 3223/631 3233/674 3234/675
-f 3225/633 3224/632 3234/675 3235/676
-f 3226/634 3225/633 3235/676 3236/677
-f 3227/635 3226/634 3236/677 3237/678
-f 3228/636 3227/635 3237/678 3238/679
-f 3219/627 3228/626 3238/680 3229/670
-f 3230/671 3229/670 2788/548 2787/546
-f 3231/672 3230/671 2787/546 2786/544
-f 3232/673 3231/672 2786/544 2785/542
-f 3233/674 3232/673 2785/542 2784/467
-f 3234/675 3233/674 2784/467 2783/539
-f 3235/676 3234/675 2783/539 2782/537
-f 3236/677 3235/676 2782/537 2781/535
-f 3237/678 3236/677 2781/535 2780/532
-f 3238/679 3237/678 2780/532 2779/464
-f 3229/670 3238/680 2779/471 2788/548
-f 3240/681 3239/682 2887/527 2886/525
-f 3241/683 3240/681 2886/525 2885/523
-f 3242/684 3241/683 2885/523 2884/454
-f 3243/685 3242/684 2884/454 2883/520
-f 3244/686 3243/685 2883/520 2882/518
-f 3245/687 3244/686 2882/518 2881/516
-f 3246/688 3245/687 2881/516 2880/513
-f 3247/689 3246/688 2880/513 2879/448
-f 3248/690 3247/691 2879/462 2888/529
-f 3239/682 3248/690 2888/529 2887/527
-f 3250/605 3249/604 3239/682 3240/681
-f 3251/606 3250/605 3240/681 3241/683
-f 3252/607 3251/606 3241/683 3242/684
-f 3253/608 3252/607 3242/684 3243/685
-f 3254/609 3253/608 3243/685 3244/686
-f 3255/610 3254/609 3244/686 3245/687
-f 3256/611 3255/610 3245/687 3246/688
-f 3257/612 3256/611 3246/688 3247/689
-f 3258/614 3257/613 3247/691 3248/690
-f 3249/604 3258/614 3259/614 3260/604
-f 3258/614 3248/690 3261/690 3259/614
-f 3248/690 3239/682 3262/682 3261/690
-f 3239/682 3249/604 3260/604 3262/682
-f 3260/604 3259/614 2543/692 2542/604
-f 3259/614 3261/690 2543/692
-f 3261/690 3262/682 2541/682 2543/692
-f 3262/682 3260/604 2542/604 2541/682
-f 3263/81 2166/553 2165/553 3093/81
-f 3264/82 3263/81 3093/81 3094/82
-f 3265/77 3264/82 3094/82 3095/77
-f 3266/78 3265/77 3095/77 3096/78
-f 3267/444 3266/78 3096/78 3097/444
-f 3268/79 3267/444 3097/444 3098/79
-f 3269/80 3268/79 3098/79 3099/80
-f 2010/551 3269/80 3099/80 2009/551
-f 3271/693 3270/694 2011/28 2000/6
-f 3272/695 3271/693 2000/6 1999/3
-f 3273/693 3272/695 1999/3 2158/6
-f 3274/694 3273/693 2158/6 2167/28
-f 3275/696 3274/694 2167/28 2164/27
-f 2006/12 3276/697 3275/698 2164/15
-f 2006/12 2007/15 3277/698 3276/697
-f 3270/694 3277/696 2007/27 2011/28
-f 3279/439 3278/438 3301/699 3294/700
-f 3280/440 3279/439 3294/700 3295/701
-f 3281/439 3280/440 3295/701 3296/700
-f 3282/438 3281/439 3296/700 3297/699
-f 3283/441 3282/438 3297/699 3298/702
-f 3299/703 3284/442 3283/443 3298/704
-f 3299/703 3300/704 3285/443 3284/442
-f 3278/438 3285/441 3300/702 3301/699
-f 3287/705 3286/706 3271/693 3272/695
-f 3288/706 3287/705 3272/695 3273/693
-f 3289/707 3288/706 3273/693 3274/694
-f 3290/708 3289/707 3274/694 3275/696
-f 3276/697 3291/709 3290/710 3275/698
-f 3276/697 3277/698 3292/710 3291/709
-f 3293/707 3292/708 3277/696 3270/694
-f 3286/706 3293/707 3270/694 3271/693
-f 3295/701 3294/700 3286/706 3287/705
-f 3296/700 3295/701 3287/705 3288/706
-f 3297/699 3296/700 3288/706 3289/707
-f 3298/702 3297/699 3289/707 3290/708
-f 3291/709 3299/703 3298/704 3290/710
-f 3291/709 3292/710 3300/704 3299/703
-f 3301/699 3300/702 3292/708 3293/707
-f 3294/700 3301/699 3293/707 3286/706
-f 3306/513 3307/516 3308/516 3309/513
-f 2771/516 3071/574 3304/574 3303/516
-f 3071/574 3072/571 3305/571 3304/574
-f 3072/571 2770/513 3302/513 3305/571
-f 3302/513 3303/516 1996/516 1993/513
-f 3303/516 3304/574 1995/574 1996/516
-f 3304/574 3305/571 1994/571 1995/574
-f 3305/571 3302/513 1993/513 1994/571
-f 2770/513 2771/516 3307/516 3306/513
-f 2771/516 3303/516 3308/516 3307/516
-f 3303/516 3302/513 3309/513 3308/516
-f 3302/513 2770/513 3306/513 3309/513
-usemtl ISSDarkMetal
-f 2025/7 2026/9 2027/85 2028/83
-f 2028/83 2027/85 2029/14 2030/11
-f 2015/7 2016/9 2021/9 2020/7
-f 2018/14 2019/11 2024/11 2023/14
-f 2020/7 2021/9 2026/9 2025/7
-f 2023/14 2024/11 2030/11 2029/14
-f 2025/7 2028/83 2161/85 2160/9
-f 2028/83 2030/11 2162/14 2161/85
-f 2015/7 2020/7 2175/9 2172/9
-f 2174/14 2177/14 2024/11 2019/11
-f 2020/7 2025/7 2160/9 2175/9
-f 2177/14 2162/14 2030/11 2024/11
-f 2371/82 2370/81 2376/81 2377/82
-f 2372/77 2371/82 2377/82 2378/77
-f 2373/78 2372/77 2378/77 2379/78
-f 2374/444 2373/78 2379/78 2380/444
-f 2375/79 2374/444 2380/444 2381/79
-f 2377/82 2376/81 2382/81 2383/82
-f 2378/77 2377/82 2383/82 2384/77
-f 2379/78 2378/77 2384/77 2385/78
-f 2380/444 2379/78 2385/78 2386/444
-f 2381/79 2380/444 2386/444 2387/79
-f 2383/82 2382/81 2388/81 2389/82
-f 2384/77 2383/82 2389/82 2390/77
-f 2385/78 2384/77 2390/77 2391/78
-f 2386/444 2385/78 2391/78 2392/444
-f 2387/79 2386/444 2392/444 2393/79
-f 2389/82 2388/81 2342/81 2343/82
-f 2390/77 2389/82 2343/82 2344/77
-f 2392/444 2391/78 2345/78 2346/444
-f 2393/79 2392/444 2346/444 2347/79
-f 2452/82 2471/82 2376/81 2370/81
-f 2454/77 2472/77 2471/82 2452/82
-f 2456/78 2473/78 2472/77 2454/77
-f 2458/444 2474/444 2473/78 2456/78
-f 2375/79 2381/79 2474/444 2458/444
-f 2471/82 2475/82 2382/81 2376/81
-f 2472/77 2476/77 2475/82 2471/82
-f 2473/78 2477/78 2476/77 2472/77
-f 2474/444 2478/444 2477/78 2473/78
-f 2381/79 2387/79 2478/444 2474/444
-f 2475/82 2479/82 2388/81 2382/81
-f 2476/77 2480/77 2479/82 2475/82
-f 2477/78 2481/78 2480/77 2476/77
-f 2478/444 2482/444 2481/78 2477/78
-f 2387/79 2393/79 2482/444 2478/444
-f 2479/82 2483/82 2342/81 2388/81
-f 2480/77 2484/77 2483/82 2479/82
-f 2482/444 2490/444 2489/78 2481/78
-f 2393/79 2347/79 2490/444 2482/444
-f 2557/82 2556/81 2562/81 2563/82
-f 2558/77 2557/82 2563/82 2564/77
-f 2559/78 2558/77 2564/77 2565/78
-f 2560/444 2559/78 2565/78 2566/444
-f 2561/79 2560/444 2566/444 2567/79
-f 2563/82 2562/81 2544/81 2545/82
-f 2564/77 2563/82 2545/82 2546/77
-f 2566/444 2565/78 2547/78 2548/444
-f 2567/79 2566/444 2548/444 2549/79
-f 2564/77 2546/77 2570/77 2568/77
-f 2547/78 2565/78 2569/78 2571/78
-f 2569/78 2568/77 2595/77 2596/78
-f 2570/77 2571/78 2593/78 2594/77
-f 2571/78 2569/78 2596/78 2593/78
-f 2602/82 2609/82 2562/81 2556/81
-f 2604/77 2610/77 2609/82 2602/82
-f 2606/78 2611/78 2610/77 2604/77
-f 2608/444 2612/444 2611/78 2606/78
-f 2561/79 2567/79 2612/444 2608/444
-f 2609/82 2613/82 2544/81 2562/81
-f 2610/77 2614/77 2613/82 2609/82
-f 2612/444 2620/444 2619/78 2611/78
-f 2567/79 2549/79 2620/444 2612/444
-f 2610/77 2621/77 2623/77 2614/77
-f 2619/78 2624/78 2622/78 2611/78
-f 2622/78 2626/78 2625/77 2621/77
-f 2623/77 2627/77 2628/78 2624/78
-f 3004/1 3005/2 3006/3 3007/4
-f 3005/2 3008/5 3009/6 3006/3
-f 3007/4 3006/3 3010/7 3011/8
-f 3006/3 3009/6 3012/9 3010/7
-f 2988/1 2989/2 2997/2 2996/1
-f 2990/4 2988/1 2996/1 2998/4
-f 2989/2 2991/5 2999/5 2997/2
-f 2991/5 2992/6 3000/6 2999/5
-f 2993/7 2994/8 3002/8 3001/7
-f 2994/8 2990/4 2998/4 3002/8
-f 2992/6 2995/9 3003/9 3000/6
-f 2995/9 2993/7 3001/7 3003/9
-f 2996/1 2997/2 3005/2 3004/1
-f 2998/4 2996/1 3004/1 3007/4
-f 2997/2 2999/5 3008/5 3005/2
-f 2999/5 3000/6 3009/6 3008/5
-f 3001/7 3002/8 3011/8 3010/7
-f 3002/8 2998/4 3007/4 3011/8
-f 3000/6 3003/9 3012/9 3009/6
-f 3003/9 3001/7 3010/7 3012/9
-f 3130/444 3129/78 2559/78 2560/444
-f 3131/79 3130/444 2560/444 2561/79
-f 3132/444 3131/79 2561/79 2608/444
-f 3133/78 3132/444 2608/444 2606/78
-f 3134/77 3133/78 2606/78 2604/77
-f 3135/82 3134/77 2604/77 2602/82
-f 3136/81 3135/82 2602/82 2556/81
-f 3137/82 3136/81 2556/81 2557/82
-f 3138/77 3137/82 2557/82 2558/77
-f 3129/78 3138/77 2558/77 2559/78
-usemtl ISSWhiteMetal
-f 2409/82 2408/81 2410/482
-f 2411/77 2409/82 2410/482
-f 2412/78 2411/77 2410/482
-f 2413/444 2412/78 2410/482
-f 2414/79 2413/444 2410/482
-f 2343/82 2342/81 2402/81 2403/82
-f 2344/77 2343/82 2403/82 2404/77
-f 2345/78 2344/77 2404/77 2405/78
-f 2346/444 2345/78 2405/78 2406/444
-f 2347/79 2346/444 2406/444 2407/79
-f 2403/82 2402/81 2408/81 2409/82
-f 2404/77 2403/82 2409/82 2411/77
-f 2405/78 2404/77 2411/77 2412/78
-f 2406/444 2405/78 2412/78 2413/444
-f 2407/79 2406/444 2413/444 2414/79
-f 2423/82 2410/482 2408/81
-f 2424/77 2410/482 2423/82
-f 2425/78 2410/482 2424/77
-f 2426/444 2410/482 2425/78
-f 2414/79 2410/482 2426/444
-f 2483/82 2499/82 2402/81 2342/81
-f 2484/77 2500/77 2499/82 2483/82
-f 2489/78 2501/78 2500/77 2484/77
-f 2490/444 2502/444 2501/78 2489/78
-f 2347/79 2407/79 2502/444 2490/444
-f 2499/82 2423/82 2408/81 2402/81
-f 2500/77 2424/77 2423/82 2499/82
-f 2501/78 2425/78 2424/77 2500/77
-f 2502/444 2426/444 2425/78 2501/78
-f 2407/79 2414/79 2426/444 2502/444
-f 2583/82 2582/81 2584/482
-f 2585/77 2583/82 2584/482
-f 2586/78 2585/77 2584/482
-f 2587/444 2586/78 2584/482
-f 2588/79 2587/444 2584/482
-f 2545/82 2544/81 2576/81 2577/82
-f 2546/77 2545/82 2577/82 2578/77
-f 2547/78 2546/77 2578/77 2579/78
-f 2548/444 2547/78 2579/78 2580/444
-f 2549/79 2548/444 2580/444 2581/79
-f 2577/82 2576/81 2582/81 2583/82
-f 2578/77 2577/82 2583/82 2585/77
-f 2579/78 2578/77 2585/77 2586/78
-f 2580/444 2579/78 2586/78 2587/444
-f 2581/79 2580/444 2587/444 2588/79
-f 2597/82 2584/482 2582/81
-f 2598/77 2584/482 2597/82
-f 2599/78 2584/482 2598/77
-f 2600/444 2584/482 2599/78
-f 2588/79 2584/482 2600/444
-f 2613/82 2629/82 2576/81 2544/81
-f 2614/77 2630/77 2629/82 2613/82
-f 2619/78 2631/78 2630/77 2614/77
-f 2620/444 2632/444 2631/78 2619/78
-f 2549/79 2581/79 2632/444 2620/444
-f 2629/82 2597/82 2582/81 2576/81
-f 2630/77 2598/77 2597/82 2629/82
-f 2631/78 2599/78 2598/77 2630/77
-f 2632/444 2600/444 2599/78 2631/78
-f 2581/79 2588/79 2600/444 2632/444
-usemtl Brown
-f 2332/77 2331/82 2365/82 2366/77
-f 2333/78 2332/77 2366/77 2367/78
-f 2334/444 2333/78 2367/78 2368/444
-f 2335/79 2334/444 2368/444 2369/79
-f 2337/82 2336/81 2370/81 2371/82
-f 2338/77 2337/82 2371/82 2372/77
-f 2339/78 2338/77 2372/77 2373/78
-f 2340/444 2339/78 2373/78 2374/444
-f 2341/79 2340/444 2374/444 2375/79
-f 2365/82 2364/81 2336/81 2337/82
-f 2366/77 2365/82 2337/82 2338/77
-f 2367/78 2366/77 2338/77 2339/78
-f 2368/444 2367/78 2339/78 2340/444
-f 2369/79 2368/444 2340/444 2341/79
-f 2439/82 2447/82 2364/81 2330/81
-f 2440/77 2448/77 2447/82 2439/82
-f 2445/78 2449/78 2448/77 2440/77
-f 2446/444 2450/444 2449/78 2445/78
-f 2335/79 2369/79 2450/444 2446/444
-f 2451/82 2452/82 2370/81 2336/81
-f 2453/77 2454/77 2452/82 2451/82
-f 2455/78 2456/78 2454/77 2453/77
-f 2457/444 2458/444 2456/78 2455/78
-f 2341/79 2375/79 2458/444 2457/444
-f 2447/82 2451/82 2336/81 2364/81
-f 2448/77 2453/77 2451/82 2447/82
-f 2449/78 2455/78 2453/77 2448/77
-f 2450/444 2457/444 2455/78 2449/78
-f 2369/79 2341/79 2457/444 2450/444
diff --git a/contrib/action_nitro/assets/particles/blackSmoke12.png b/contrib/action_nitro/assets/particles/blackSmoke12.png
deleted file mode 100644
index 5c7e0ca7ad..0000000000
Binary files a/contrib/action_nitro/assets/particles/blackSmoke12.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/particles/blood07.png b/contrib/action_nitro/assets/particles/blood07.png
deleted file mode 100644
index 4c590d5055..0000000000
Binary files a/contrib/action_nitro/assets/particles/blood07.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/particles/explosion00.png b/contrib/action_nitro/assets/particles/explosion00.png
deleted file mode 100644
index 16a484f4e7..0000000000
Binary files a/contrib/action_nitro/assets/particles/explosion00.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/particles/whitePuff12.png b/contrib/action_nitro/assets/particles/whitePuff12.png
deleted file mode 100644
index 3543b8d6ab..0000000000
Binary files a/contrib/action_nitro/assets/particles/whitePuff12.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/textures/Tree03.png b/contrib/action_nitro/assets/textures/Tree03.png
deleted file mode 100644
index 0f3d339ee4..0000000000
Binary files a/contrib/action_nitro/assets/textures/Tree03.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/textures/blood_splatter.png b/contrib/action_nitro/assets/textures/blood_splatter.png
deleted file mode 100644
index db957c7f08..0000000000
Binary files a/contrib/action_nitro/assets/textures/blood_splatter.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/textures/city_background_clean.png b/contrib/action_nitro/assets/textures/city_background_clean.png
deleted file mode 100644
index a6161fdb0a..0000000000
Binary files a/contrib/action_nitro/assets/textures/city_background_clean.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/textures/fastgras01.jpg b/contrib/action_nitro/assets/textures/fastgras01.jpg
deleted file mode 100644
index a60bd23453..0000000000
Binary files a/contrib/action_nitro/assets/textures/fastgras01.jpg and /dev/null differ
diff --git a/contrib/action_nitro/assets/textures/player.png b/contrib/action_nitro/assets/textures/player.png
deleted file mode 100644
index bbd402f719..0000000000
Binary files a/contrib/action_nitro/assets/textures/player.png and /dev/null differ
diff --git a/contrib/action_nitro/assets/textures/splash.jpg b/contrib/action_nitro/assets/textures/splash.jpg
deleted file mode 100644
index 8479ba8d92..0000000000
Binary files a/contrib/action_nitro/assets/textures/splash.jpg and /dev/null differ
diff --git a/contrib/action_nitro/assets/textures/stars.jpg b/contrib/action_nitro/assets/textures/stars.jpg
deleted file mode 100644
index cf81a3b633..0000000000
Binary files a/contrib/action_nitro/assets/textures/stars.jpg and /dev/null differ
diff --git a/contrib/action_nitro/bin/.gitignore b/contrib/action_nitro/bin/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/action_nitro/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/action_nitro/doc/screenshot.jpg b/contrib/action_nitro/doc/screenshot.jpg
deleted file mode 100644
index 0a42ced839..0000000000
Binary files a/contrib/action_nitro/doc/screenshot.jpg and /dev/null differ
diff --git a/contrib/action_nitro/doc/space.jpg b/contrib/action_nitro/doc/space.jpg
deleted file mode 100644
index 9769ea02ad..0000000000
Binary files a/contrib/action_nitro/doc/space.jpg and /dev/null differ
diff --git a/contrib/action_nitro/net.xymus.action_nitro.txt b/contrib/action_nitro/net.xymus.action_nitro.txt
deleted file mode 100644
index 2acd516d1c..0000000000
--- a/contrib/action_nitro/net.xymus.action_nitro.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Categories:Nit,Games
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/action_nitro
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Jump from plate to plane to reach the ISS and defeat the bad guys
-Description:
-Simple action platformer using many features of the gamnit game framework.
-This was created by the Nit team in a weekend for the clibre gamejam 2016.
-.
diff --git a/contrib/action_nitro/package.ini b/contrib/action_nitro/package.ini
deleted file mode 100644
index cf42196d90..0000000000
--- a/contrib/action_nitro/package.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name=action_nitro
-tags=example
-maintainer=Alexis Laferrière
-license=Apache-2.0
-desc=Action Nitro! an action platformer where you jump from plane to plane to reach the ISS and defeat the bad guys
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/action_nitro/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/action_nitro/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/action_nitro.apk
diff --git a/contrib/action_nitro/src/action_nitro.nit b/contrib/action_nitro/src/action_nitro.nit
deleted file mode 100644
index 485ebc2d38..0000000000
--- a/contrib/action_nitro/src/action_nitro.nit
+++ /dev/null
@@ -1,690 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module action_nitro is
- app_name "Action Nitro"
- app_namespace "net.xymus.action_nitro"
- app_version(1, 0, git_revision)
-end
-
-import gamnit::depth
-import gamnit::landscape
-
-import game
-
-import gen::texts
-import gen::planes
-
-redef class App
-
- # Game world
- var world: World = new World is lazy
-
- # ---
- # Game world assets
-
- # Textures of the biplane, jet, helicopter, parachute and powerups
- var planes_sheet = new PlanesImages
-
- # Animation when opening the parachute
- var parachute_animation = new Animation(planes_sheet.parachute, 16.0)
-
- # Animation for the player movement
- private var running_texture = new Texture("textures/player.png")
- private var running_animation: Animation = running_texture.to_animation(10.0, 12, 0)
-
- # Boss 3D model
- private var iss_model = new Model("models/iss.obj")
-
- # ---
- # Ground textures
-
- private var ground_texture = new Texture("textures/fastgras01.jpg")
- private var tree_texture = new Texture("textures/Tree03.png")
-
- # ---
- # Blood splatter
-
- private var splatter_texture = new Texture("textures/blood_splatter.png")
- private var splatter_material: TexturedMaterial do
- var mat = new TexturedMaterial([1.0]*4, [0.0]*4, [0.0]*4)
- mat.ambient_texture = splatter_texture
- return mat
- end
- private var splatter_model = new LeafModel(new Plane, splatter_material)
-
- # ---
- # Background
-
- private var city_texture = new TextureAsset("textures/city_background_clean.png")
-
- private var stars_texture = new Texture("textures/stars.jpg")
- private var stars = new Sprite(stars_texture, new Point3d[Float](0.0, 1100.0, -600.0)) is lazy
-
- # ---
- # Particle effects
-
- # Explosion particles
- var explosions = new ParticleSystem(100, explosion_program,
- new Texture("particles/explosion00.png"))
-
- # Blood explosion particles
- var blood = new ParticleSystem(100, explosion_program,
- new Texture("particles/blood07.png"))
-
- # Smoke for the background
- var smoke = new ParticleSystem(500, smoke_program,
- new Texture("particles/blackSmoke12.png"))
-
- # Static clouds particles
- var clouds = new ParticleSystem(1600, static_program,
- new Texture("particles/whitePuff12.png"))
-
- # ---
- # Sound effects
-
- # TODO
- #private var fx_fire = new Sound("sounds/fire.mp3")
-
- # ---
- # UI
- private var texts_sheet = new TextsImages
-
- private var tutorial_wasd = new Sprite(app.texts_sheet.tutorial_wasd,
- app.ui_camera.center.offset(0.0, -250.0, 0.0)) is lazy
-
- private var tutorial_arrows = new Sprite(app.texts_sheet.tutorial_arrows,
- app.ui_camera.center.offset(0.0, -350.0, 0.0)) is lazy
-
- private var tutorial_chute = new Sprite(app.texts_sheet.tutorial_chute,
- app.ui_camera.center.offset(0.0, -450.0, 0.0)) is lazy
-
- private var tutorial_goal = new Sprite(app.texts_sheet.goal,
- app.ui_camera.center.offset(0.0, 0.0, 0.0)) is lazy
-
- private var outro_directed = new Sprite(app.texts_sheet.directed,
- app.ui_camera.center.offset(0.0, 400.0, 0.0)) is lazy
-
- private var outro_created = new Sprite(app.texts_sheet.created,
- app.ui_camera.center.offset(0.0, -200.0, 0.0)) is lazy
-
- # ---
- # Counters for the UI
-
- private var score_counter = new CounterSprites(texts_sheet.n,
- new Point3d[Float](32.0, -64.0, 0.0))
-
- private var altitude_counter = new CounterSprites(texts_sheet.n,
- new Point3d[Float](1400.0, -64.0, 0.0))
-
- # Did the player asked to skip the intro animation?
- private var skip_intro = false
-
- redef fun on_create
- do
- blood.texture.as(RootTexture).premultiply_alpha = false
- explosions.texture.as(RootTexture).premultiply_alpha = false
-
- super
-
- show_splash_screen new Texture("textures/splash.jpg")
-
- # Load 3d models
- iss_model.load
- if iss_model.errors.not_empty then print_error iss_model.errors.join("\n")
-
- # Setup cameras
- world_camera.reset_height 60.0
- ui_camera.reset_height 1080.0
-
- # Register particle systems
- particle_systems.add smoke
- particle_systems.add clouds
- particle_systems.add blood
- particle_systems.add explosions
-
- # Stars background
- sprites.add stars
- stars.scale = 2.1
-
- # City background
- city_texture.pixelated = true
- var city_sprite = new Sprite(city_texture, new Point3d[Float](0.0, 370.0, -600.0))
- city_sprite.scale = 0.8
- sprites.add city_sprite
-
- # Setup ground
- var ground_mesh = new Plane
- ground_mesh.repeat_x = 100.0
- ground_mesh.repeat_y = 100.0
-
- var ground_material = new TexturedMaterial(
- [0.0, 0.1, 0.0, 1.0], [0.4, 0.4, 0.4, 1.0], [0.0]*4)
- ground_material.diffuse_texture = ground_texture
-
- var ground_model = new LeafModel(ground_mesh, ground_material)
- var ground = new Actor(ground_model, new Point3d[Float](0.0, 0.0, 0.0))
- ground.scale = 5000.0
- actors.add ground
-
- # Trees
- for i in 2000.times do
- var s = 0.1 + 0.1.rand
- var h = tree_texture.height * s
- var sprite = new Sprite(tree_texture,
- new Point3d[Float](0.0 & 1500.0, h/2.0 - 10.0*s, 10.0 - 609.0.rand))
- sprite.static = true
- sprite.scale = s
- sprites.add sprite
-
- var c = 1.0.rand
- c *= 0.7
- sprite.tint = [c, 1.0, c, 1.0]
- end
-
- # Clouds
- var no_clouds_layer = 200.0
- for i in [0 .. 32[ do
- var zp = 1.0.rand
- var x = 0.0 & 1000.0 * zp
- var y = no_clouds_layer + (world.boss_altitude - no_clouds_layer*2.0).rand
- var z = -500.0*zp - 10.0
-
- var r = 50.0 & 1.0
- for j in [0..32[ do
- var a = 2.0*pi.rand
- var rj = r.rand
- clouds.add(new Point3d[Float](x+2.0*a.cos*rj, y+a.sin*rj, z & 1.0),
- 48000.0 & 16000.0, inf)
- end
- end
-
- # Move the sun to best light the ISS
- light.position.x = 2000.0
- light.position.z = 4000.0
-
- # Prepare for intro animation
- ui_sprites.add tutorial_goal
- world_camera.far = 1024.0
- end
-
- redef fun update(dt)
- do
- # Game logic
- world.update dt
-
- # Update background color
- var player = world.player
- var player_pos = if player != null then player.center else new Point3d[Float](0.0, 200.0, 0.0)
- var altitude = player_pos.y
- var p = altitude / world.boss_altitude
- var ip = 1.0 - p
- glClearColor(0.3*ip, 0.3*ip, ip, 1.0)
- stars.alpha = (1.4*p-0.4).clamp(0.0, 1.0)
-
- # Randomly add smoke
- var poss = [
- new Point3d[Float](291.0, 338.0, -601.0),
- new Point3d[Float](-356.0, 422.0, -601.0)]
-
- var r = 8.0
- if 2.rand == 0 then
- var pos = poss.rand
- smoke.add(
- new Point3d[Float](pos.x & r, pos.y & r, pos.z & r),
- 96000.0 & 16000.0, 10.0)
- end
-
- # Move camera
- world_camera.position.x = player_pos.x
- world_camera.position.y = player_pos.y + 5.0
-
- # Cinematic?
- var t = world.t
- var intro_duration = 8.0
- if t < intro_duration and not skip_intro then
- var pitch = t/intro_duration
- pitch = (pitch*pi).sin
- world_camera.pitch = pitch
- return
- end
-
- if world.player == null then
- world_camera.pitch = 0.0
- world_camera.far = 700.0
-
- begin_play true
- end
-
- # Update counters
- score_counter.value = world.score
- var alt = 0
- if world.player != null then alt = world.player.altitude.to_i
- altitude_counter.value = alt
-
- # General movement on the X axis
- if player != null then
- player.moving = 0.0
- if pressed_keys.has("left") then player.moving -= 1.0
- if pressed_keys.has("right") then player.moving += 1.0
- end
-
- # Try to fire as long as a key is pressed
- if pressed_keys.not_empty then
- var a = inf
- if pressed_keys.has("a") then
- if pressed_keys.has("w") then
- a = 0.75 * pi
- else if pressed_keys.has("s") then
- a = 1.25 * pi
- else
- a = pi
- end
- else if pressed_keys.has("d") then
- if pressed_keys.has("w") then
- a = 0.25 * pi
- else if pressed_keys.has("s") then
- a = 1.75 * pi
- else
- a = 0.0
- end
- else if pressed_keys.has("w") then
- a = 0.50 * pi
- else if pressed_keys.has("s") then
- a = 1.50 * pi
- end
-
- if a != inf and player != null then
- player.shoot(a, world)
- hide_tutorial_wasd
- end
- end
-
- # Low-gravity controls
- if player != null and player.is_alive and player.altitude >= world.boss_altitude then
- var d = 50.0*dt
- for key in pressed_keys do
- if key == "up" then
- player.inertia.y += d
- else if key == "down" then
- player.inertia.y -= d
- else if key == "left" then
- player.inertia.x -= d
- else if key == "right" then
- player.inertia.x += d
- end
- end
- end
-
- # Detect if game won
- var won_at = won_at
- if won_at == null then
- var boss = world.boss
- if boss != null and not boss.is_alive then
- self.won_at = world.t
- end
- else
- # Show outro
- var t_since_won = world.t - won_at
- if t_since_won > 1.0 and not ui_sprites.has(outro_directed) then ui_sprites.add outro_directed
- if t_since_won > 2.0 and not ui_sprites.has(outro_created) then ui_sprites.add outro_created
- end
- end
-
- # Begin playing, after intro if `initial`, otherwise after death
- fun begin_play(initial: Bool)
- do
- ui_sprites.clear
-
- world.spawn_player
- world.planes.add new Airplane(new Point3d[Float](0.0, world.player.center.y - 10.0, 0.0), 16.0, 4.0)
-
- if initial then
- # Setup tutorial
- ui_sprites.add_all([tutorial_wasd, tutorial_arrows, tutorial_chute])
- end
- end
-
- # Seconds at which the game was won, using `world.t` as reference
- private var won_at: nullable Float = null
-
- # Remove the tutorial sprite about WASD from `ui_sprites`
- private fun hide_tutorial_wasd do if ui_sprites.has(tutorial_wasd) then ui_sprites.remove(tutorial_wasd)
-
- # Remove the tutorial sprite about arrows from `ui_sprites`
- private fun hide_tutorial_arrows do if ui_sprites.has(tutorial_arrows) then ui_sprites.remove(tutorial_arrows)
-
- # Remove the tutorial sprite about the parachute from `ui_sprites`
- private fun hide_tutorial_chute do if ui_sprites.has(tutorial_chute) then ui_sprites.remove(tutorial_chute)
-
- redef fun accept_event(event)
- do
- if super then return true
-
- if event isa QuitEvent then
- print perfs
- exit 0
- else if event isa KeyEvent then
- if event.name == "escape" and event.is_down then
- print perfs
- exit 0
- end
-
- var player = world.player
- if player != null and player.is_alive then
-
- # Hide tutorial about arrows once they are used
- var arrows = once ["left", "right"]
- if arrows.has(event.name) then hide_tutorial_arrows
-
- if player.altitude < world.boss_altitude then
- if event.name == "space" and event.is_down and not player.parachute_deployed and player.plane == null then
- player.parachute
- if player.parachute_deployed then
- var pc = player.center
- world.parachute = new Parachute(new Point3d[Float](pc.x, pc.y + 5.0, pc.z-0.1), 8.0, 5.0)
- end
- hide_tutorial_chute
- end
-
- if (event.name == "space" or event.name == "up") and event.is_down then
- player.jump
- end
-
- if event.name == "left" then
- var mod = if event.is_down then -1.0 else 1.0
- player.moving += mod
- player.animate_move
- else if event.name == "right" then
- var mod = if event.is_down then 1.0 else -1.0
- player.moving += mod
- player.animate_move
- end
- end
- end
- end
-
- # When player is dead, respawn on spacebar or pointer depressed
- if (event isa KeyEvent and event.name == "space") or
- (event isa PointerEvent and not event.is_move and event.depressed) then
- var player = world.player
- if player == null then
- skip_intro = true
- else if not player.is_alive then
- begin_play false
- end
- end
-
- return false
- end
-end
-
-redef class Body
- # Sprite representing this entity if there is no `actor`
- fun sprite: Sprite is abstract
-
- # 3D actor
- fun actor: nullable Actor do return null
-
- init
- do
- var actor = actor
- if actor != null then
- app.actors.add actor
- else app.sprites.add sprite
- end
-
- redef fun destroy(world)
- do
- super
-
- var actor = actor
- if actor != null then
- app.actors.remove actor
- else app.sprites.remove sprite
- end
-end
-
-redef class Human
- redef fun die(world)
- do
- super
-
- death_animation
- end
-
- # Show death animation (explosion)
- fun death_animation
- do
- var force = 2.0
- health = 0.0
- for i in 16.times do
- app.blood.add(
- new Point3d[Float](center.x & force, center.y & force, center.z & force),
- (4096.0 & 2048.0) * force, 0.3 & 0.1)
- end
- end
-end
-
-redef class Platform
- init do sprite.scale = width/sprite.texture.width
-
- redef fun update(dt, world)
- do
- super
-
- if inertia.x < 0.0 then
- sprite.invert_x = false
- else if inertia.x > 0.0 then
- sprite.invert_x = true
- end
- end
-end
-
-redef class Airplane
- private fun texture: Texture do return if center.y < 600.0 then app.planes_sheet.biplane else app.planes_sheet.jet
-
- redef var sprite = new Sprite(texture, center) is lazy
-end
-
-redef class Helicopter
- redef var sprite = new Sprite(app.planes_sheet.helicopter, center) is lazy
-end
-
-redef class Boss
- redef var actor is lazy do
- var actor = new Actor(app.iss_model, center)
- actor.yaw = pi/2.0
- return actor
- end
-
- redef fun death_animation
- do
- var force = 64.0
- app.explosions.add(center, 4096.0 * force, 0.3)
- for i in (8.0*force).to_i.times do
- app.explosions.add(
- new Point3d[Float](center.x & force, center.y & force/8.0, center.z & force),
- (2048.0 & 1024.0) * force, 0.3 + 5.0.rand, 5.0.rand)
- end
- end
-end
-
-redef class Enemy
- redef var sprite = new Sprite(app.running_animation.frames.rand, center) is lazy
- init do sprite.scale = width/sprite.texture.width * 2.0
-end
-
-redef class Parachute
- redef var sprite = new Sprite(app.planes_sheet.parachute_open, center) is lazy
- init
- do
- sprite.scale = width / sprite.texture.width
- sprite.animate app.parachute_animation
- end
-end
-
-redef class Player
- redef var sprite = new Sprite(app.running_animation.frames.last, center) is lazy
- init do sprite.scale = width/sprite.texture.width * 2.0
-
- # Update current animation
- fun animate_move
- do
- if moving == 0.0 then
- sprite.animate_stop
- else sprite.animate(app.running_animation, -1.0)
- end
-
- redef fun update(dt, world)
- do
- super
- if moving > 0.0 then
- sprite.invert_x = false
- else if moving < 0.0 then
- sprite.invert_x = true
- end
- end
-
- redef fun die(world)
- do
- super
-
- if center.y < 10.0 then
- # Blood splatter on the ground
- var splatter = new Actor(app.splatter_model,
- new Point3d[Float](center.x, 0.05 & 0.04, center.y))
- splatter.scale = 32.0
- splatter.yaw = 2.0*pi.rand
- app.actors.add splatter
- end
-
- # Display respawn instructions
- app.ui_sprites.add new Sprite(app.texts_sheet.respawn, app.ui_camera.center.offset(0.0, 0.0, 0.0))
- end
-end
-
-redef class Bullet
- redef var sprite = new Sprite(weapon.bullet_texture, center) is lazy
- init
- do
- sprite.scale = 0.03
- sprite.rotation = angle
- end
-end
-
-redef class Weapon
- fun bullet_texture: Texture do return app.planes_sheet.bullet_ak
-end
-
-redef class Pistol
- redef fun bullet_texture do return app.planes_sheet.bullet_pistol
-end
-
-redef class RocketLauncher
- redef fun bullet_texture do return app.planes_sheet.bullet_rocket
-end
-
-redef class Powerup
- # Scale so it looks like 5 world units wide, not matter the size of the texture
- init do sprite.scale = 5.0/sprite.texture.width
-end
-
-redef class Ak47PU
- redef var sprite = new Sprite(app.planes_sheet.ak, center) is lazy
-end
-
-redef class RocketLauncherPU
- redef var sprite = new Sprite(app.planes_sheet.rocket, center) is lazy
-end
-
-redef class Life
- redef var sprite = new Sprite(app.planes_sheet.health, center) is lazy
- init do sprite.scale = 3.0/sprite.texture.height
-end
-
-redef class World
-
- redef fun explode(center, force)
- do
- super
-
- # Particles
- var range = 0.5 * force
- app.explosions.add(center, 4096.0 * force, 0.3)
- for i in (2.0*force).to_i.times do
- app.explosions.add(
- new Point3d[Float](center.x & range, center.y & range, center.z & range),
- (2048.0 & 1024.0) * force, 0.3 & 0.3, 0.5.rand)
- end
- end
-end
-
-# Manager to display numbers in sprite
-class CounterSprites
-
- # TODO clean up and move up to lib
-
- # Number textures, from 0 to 9
- #
- # Require: `textures.length == 10`
- var textures: Array[Texture]
-
- # Center of the first digit in UI coordinates
- var anchor: Point3d[Float]
-
- # Last set of sprites generated to display the `value=`
- private var sprites = new Array[Sprite]
-
- # Update the value displayed by the counter by inserting new sprites into `app.ui_sprites`
- fun value=(value: Int)
- do
- # Clean up last used sprites
- for s in sprites do if app.ui_sprites.has(s) then app.ui_sprites.remove s
- sprites.clear
-
- # Build new sprites
- var s = value.to_s # TODO manipulate ints directly
- var x = 0.0
- for c in s do
- var i = c.to_i
- var tex = textures[i]
-
- x += tex.width/2.0
- sprites.add new Sprite(tex, new Point3d[Float](anchor.x + x, anchor.y, anchor.z))
- x += tex.width/2.0
- end
-
- # Register sprites to be drawn by `app.ui_camera`
- app.ui_sprites.add_all sprites
- end
-end
-
-redef class SmokeProgram
-
- # Redef source to get particles that move up faster
- redef fun vertex_shader_core do return """
- vec4 c = center;
- c.y += dt * 20.0;
- c.x += dt * dt * 2.0;
-
- gl_Position = c * mvp;
- gl_PointSize = scale / gl_Position.z * (pt+0.1);
-
- if (pt < 0.1)
- v_color *= pt / 0.1;
- else
- v_color *= 1.0 - pt*0.9;
- """
-end
diff --git a/contrib/action_nitro/src/game/ai.nit b/contrib/action_nitro/src/game/ai.nit
deleted file mode 100644
index fc33bc4822..0000000000
--- a/contrib/action_nitro/src/game/ai.nit
+++ /dev/null
@@ -1,84 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Smart enemies
-module ai
-
-import core
-
-redef class Enemy
-
- # Square of the range to shoot at the player
- fun range2: Float do return 32.0*32.0
-
- redef fun update(dt, world)
- do
- super
-
- var player = world.player
- if is_alive and player != null and player.is_alive and can_shoot(world) then
- # Shoot if possible
- if player.center.dist2(self.center) < range2 then
- aim_and_shoot(world, player)
- end
- end
- end
-
- # Aim to shoot at `target`
- fun aim_and_shoot(world: World, target: Body)
- do
- # TODO aim forward of `moving` target
- var angle = self.center.atan2(target.center)
-
- shoot(angle, world)
- end
-
- # Go to `target` using jetpack-like movement
- fun go_to(target: Point3d[Float], displacement: Float) do
- var sc = center
- var k = 1.0
- if target.x < sc.x then
- inertia.x -= k
- if inertia.x < -displacement then inertia.x = -displacement
- else
- inertia.x += k
- if inertia.x > displacement then inertia.x = displacement
- end
- if target.y < sc.y then
- inertia.y -= k
- if inertia.y < -displacement then inertia.y = -displacement
- else
- inertia.y += k
- if inertia.y > displacement then inertia.y = displacement
- end
- end
-end
-
-redef class JetpackEnemy
- redef fun update(dt, world)
- do
- super
-
- var player = world.player
- if is_alive and player != null and player.is_alive and can_shoot(world) then
- # Move towards player
- var target = player.center
- go_to(target, 40.0)
- end
- end
-end
-
-redef class Boss
- redef fun range2 do return 64.0*64.0
-end
diff --git a/contrib/action_nitro/src/game/core.nit b/contrib/action_nitro/src/game/core.nit
deleted file mode 100644
index 25cf4579c6..0000000000
--- a/contrib/action_nitro/src/game/core.nit
+++ /dev/null
@@ -1,842 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Core game logic of Action Nitro
-module core
-
-import geometry
-
-# Root game object of the whole game logic
-#
-# Used as a visitor in all methods modifying the state of the world.
-class World
-
- # The player, if the game has started
- var player: nullable Player = null is writable
-
- # All live platforms
- var planes = new Array[Platform]
-
- # All live enemies
- var enemies = new Array[Enemy]
-
- # All live bullets shot by `enemies`
- var enemy_bullets = new Array[Bullet]
-
- # All live bullets shot by `player`
- var player_bullets = new Array[Bullet]
-
- # All live powerups
- var powerups = new Array[Powerup]
-
- # Current open parachute, if any
- var parachute: nullable Parachute = null is writable
-
- # Altitude at which to enter space and trigger the boss
- var boss_altitude = 1200.0
-
- # Boss, the ISS occupied by bad guys
- var boss: nullable Boss = null is writable
-
- # Runtime of this game, in seconds
- var t = 0.0
-
- # Total score
- var score = 0
-
- # Approximate view of the camera, used to spawn stuff outside of the camera
- fun camera_view: Box[Float]
- do
- # TODO update from client
- var border = 100.0
- var player = player
- if player != null then
- return new Box[Float](
- player.center.x-border, player.center.x+border,
- player.center.y+border, player.center.y-border)
- else
- return new Box[Float](
- -border, border,
- border, -border)
- end
- end
-
- # Update the game logic for events over `dt` seconds
- fun update(dt: Float)
- do
- t += dt
-
- # Visit all other game logic objects
- for plane in planes.reverse_iterator do plane.update(dt, self)
- for enemy in enemies.reverse_iterator do enemy.update(dt, self)
-
- var player = player
- if player != null then player.update(dt, self)
-
- for i in enemy_bullets.reverse_iterator do i.update(dt, self)
- for i in player_bullets.reverse_iterator do i.update(dt, self)
-
- for powerup in powerups.reverse_iterator do powerup.update(dt, self)
- if parachute != null then parachute.update(dt, self)
-
- # Check if the player has reached the boss
- var cam = camera_view
- if player != null and player.altitude >= boss_altitude and boss == null then
- var w = 64.0
- var boss = new Boss(new Point3d[Float](player.center.x, cam.top - 20.0, 0.0), w, 4.0, new Ak47)
- self.boss = boss
- enemies.add boss
-
- for i in 6.times do
- var e = new WalkingEnemy(new Point3d[Float](boss.center.x & (w/2.0), boss.center.y + 4.0, -1.0.rand), 4.0, 4.0, new Pistol)
- enemies.add e
- end
- end
- end
-
- # Explosion at `center` of the given `force`
- fun explode(center: Point3d[Float], force: Float)
- do
- var lists = [planes, enemies: Sequence[Body]]
- var player = player
- if player != null then lists.add([player])
-
- for l in lists do
- for body in l do
- body.apply_force(center, force)
- end
- end
- end
-
- # Spawn or respawn the player
- fun spawn_player
- do
- var old_player = player
- var pos = null
- if old_player != null then
- # Respawn just above the death position
- pos = old_player.center
- pos.y += 50.0
- end
-
- if pos == null then
- # If `dev` is passed as a command line option, spawn near space
- var alt = 200.0
- if args.has("dev") then alt = boss_altitude - 10.0
-
- pos = new Point3d[Float](0.0, alt, 0.0)
- end
-
- player = new Player(pos, 4.0, 4.0, new Ak47)
- end
-end
-
-# A physical object responding to hollywood physics
-abstract class Body
- super Boxed[Float]
-
- # Position at the center of the body
- var center: Point3d[Float]
-
- # Inertia of this body
- var inertia = new Point3d[Float](0.0, 0.0, 0.0) is writable
-
- # Is this body still alive?
- var is_alive = true
-
- # Mass of this object, used by `apply_force`
- fun mass: Float do return 1.0
-
- # Width of this object, used to detect collisions
- var width: Float
-
- # Height of this object, used to detect collisions
- var height: Float
-
- # Current health level, starts at `max_health`
- var health: Float = max_health
-
- # Maximum health for this object
- fun max_health: Float do return 100.0
-
- # Is this object affected by gravity?
- fun affected_by_gravity: Bool do return true
-
- # Is this object dead? TODO merge with is_alive
- fun dead: Bool do return health <= 0.0
-
- # Apply game logic for the last `dt` seconds within `world`
- fun update(dt: Float, world: World)
- do
- if affected_by_gravity then inertia.y -= 4.0
-
- center.x += dt * inertia.x
- center.y += dt * inertia.y
- center.z += dt * inertia.z
-
- # Hit the ground
- if bottom <= 0.0 and affected_by_gravity then
- center.y = height / 2.0
- inertia.y = 0.0
- end
- end
-
- # Apply a force, usually a result of `World::explode`
- fun apply_force(origin: Point3d[Float], force: Float)
- do
- var dx = center.x - origin.x
- var dy = center.y - origin.y
-
- var d2 = dx*dx + dy*dy
- var d = d2.sqrt
- #TODO if d2 > ? then return
-
- inertia.x += dx * force / d / mass * 4.0
- inertia.y += dy * force / d / mass * 12.0
-
- # Destabilize player
- if self isa Player then self.plane = null
- end
-
- # Is this object out of `world.camera_view`?
- fun out_of_screen(player: Player, world: World): Bool
- do
- var camera = world.camera_view
- if right < camera.left - 20.0 then return true
- if left > camera.right + 20.0 then return true
- if top < camera.bottom - 20.0 then return true
- if bottom > camera.top + 20.0 then return true
- return false
- end
-
- # Apply `damage` to this object
- fun hit(damage: Float, world: World)
- do
- self.health -= damage
- if self.health <= 0.0 then die(world)
- end
-
- # Die in the game logic, with graphical animations
- #
- # Calls `destroy` by default.
- fun die(world: World)
- do
- if not is_alive then return
- is_alive = false
- destroy world
- end
-
- # Destroy this objects and most references to it
- fun destroy(world: World) do end
-
- # ---
- # Box services
-
- redef fun top do return center.y + height / 2.0
- redef fun bottom do return center.y - height / 2.0
- redef fun left do return center.x - width / 2.0
- redef fun right do return center.x + width / 2.0
-end
-
-# Something to stand on
-abstract class Platform
- super Body
-
- redef fun mass do return 20.0
-
- redef fun affected_by_gravity do return false
-
- # Planes slow down when close to the player, `old_inertia` is the speed before it slowed down
- private var old_inertia_y: nullable Float = null
-
- # Enemy the spawned on the plane
- var enemy: nullable WalkingEnemy = null is writable
-
- redef fun die(world)
- do
- if not is_alive then return
- super
- world.explode(center, width)
- world.score += 1
- if 100.0.rand > 50.0 then world.powerups.add(new Powerup(self.center, world))
- end
-
- redef fun destroy(world)
- do
- world.planes.remove self
- super
- end
-
- # Distance to the player
- fun player_dist(world: World): Float do
- var p = world.player
- if p == null then return 0.0
- var px = p.center.x
- var dst = center.x - px
- return dst.abs
- end
-
- # Has this plane slowed down because it is close to the player?
- private var slowed_down = false
-
- # Has this plane already accelerated because it got far from the player?
- private var accelerated = false
-
- redef fun update(dt, world)
- do
- # High friction on the Y axis to stabilize after an `apply_force`
- inertia.y *= 0.95
-
- super
-
- # Slow down if close to the player
- var dst = player_dist(world)
- if dst < 20.0 then
- if not slowed_down then
- old_inertia_y = inertia.y
-
- var speed = 10.0 + 15.0.rand
- if inertia.x < 0.0 then
- inertia.x = -speed
- else inertia.x = speed
- inertia.y = 0.0
- inertia.z = 0.0
-
- slowed_down = true
- if enemy != null then
- enemy.inertia.x = inertia.x
- enemy.inertia.y = inertia.y
- enemy.inertia.z = inertia.z
- end
- end
- else if dst > 30.0 and not accelerated then
- var oi = old_inertia_y
- if oi == null then return
-
- inertia.y = oi
- accelerated = true
- end
- end
-end
-
-# Airplane, the basic `Platform`
-class Airplane
- super Platform
-end
-
-# Helicopter, the player rotates on its blades
-class Helicopter
- super Platform
-end
-
-# Parachute to slow down the player
-class Parachute
- super Body
-
- redef var affected_by_gravity = false
-
- redef fun update(dt, world) do
- super
- inertia.x = 0.0
- inertia.y = 0.0
- inertia.z = 0.0
- center.x = world.player.center.x
- center.y = world.player.center.y + 5.0
- end
-end
-
-# Human body
-abstract class Human
- super Body
-
- # Input direction in `[-1.0 .. 1.0]`
- var moving = 0.0 is writable
-
- # `moving` speed when on a plane, applied directly to `center`
- var walking_speed = 20.0
-
- # `moving` speed when in freefall, applied to `inertia`
- var freefall_accel = 150.0
-
- # Acceleration on the X axis applied when jumping
- var jump_accel = 24.0
-
- # On which plane is standing `self`? if any.
- var plane: nullable Platform = null
-
- # Position in relation to `plane`
- private var dx_to_plane = 0.0
-
- # Equipped weapon
- var weapon: Weapon
-
- # Rotation status when on a copter bladers, used by `update`
- private var ltr = false
-
- # Is the parachute currently deployed?
- var parachute_deployed = false
-
- redef var affected_by_gravity = true
-
- # Altitude (in meters)
- fun altitude: Float do return center.y
-
- # Apply a jump from input
- fun jump
- do
- var plane = plane
- if plane != null then
- # On solid plane, jump
- inertia.y += 120.0
- inertia.x = plane.inertia.x + moving * jump_accel
-
- self.plane = null
- end
- end
-
- # Deploy parachute on input
- fun parachute
- do
- var plane = plane
- if plane == null and not parachute_deployed then
- # Deploy parachute
- parachute_deployed = true
- inertia.y = -10.0
-
- self.plane = null
- end
- end
-
- redef fun update(dt, world)
- do
- if not is_alive then return
-
- if altitude >= world.boss_altitude then
- # In space
- affected_by_gravity = false
- inertia.y *= 0.99
- super
- return
- end
-
- # In atmosphere
-
- # On a plane?
- var on_plane = plane
- if on_plane != null then
- # Is it still alive?
- if not on_plane.is_alive then
- on_plane = null
- self.plane = null
- end
- end
-
- if on_plane != null then
- # On a plane, applying special physics do not call super!
-
- # Precise movements
- center.x = on_plane.center.x + dx_to_plane + moving * walking_speed * dt
- center.y = on_plane.top + height / 2.0
- if plane isa Helicopter then
- center.y = plane.top + height / 2.0 + 1.5
- var left_blade = plane.center.x - 5.0
- var right_blade = plane.center.x + 5.0
- var px = center.x
- var blade_speed = 0.5
- if ltr then
- if px >= right_blade then ltr = false
- center.x = on_plane.center.x + dx_to_plane + moving * walking_speed * dt + blade_speed
- else
- if px <= left_blade then ltr = true
- center.x = on_plane.center.x + dx_to_plane + moving * walking_speed * dt - blade_speed
- end
- end
-
- # Detect fall
- if not (plane.left < right and plane.right > left) then
- self.plane = null
- end
- else
- # Freefall
-
- # Only influence the inertia
- inertia.x += moving * freefall_accel * dt
- inertia.x *= 0.99
-
- var old_y = bottom
- super
- if parachute_deployed then
- if inertia.y < -10.0 then inertia.y = -10.0
- end
-
- # Detect collision with planes
- for plane in world.planes do # TODO optimize with quad tree
- if plane.left < right and plane.right > left then
- if old_y > plane.top and bottom <= plane.top then
- var parachute = world.parachute
- if parachute != null then
- parachute.die world
- world.parachute = null
- end
- parachute_deployed = false
- # Landed on a plane
- plane.inertia.y += inertia.y / plane.mass
-
- # Update self
- self.plane = plane
- inertia.x = 0.0
- inertia.y = 0.0
- center.y = plane.top + height / 2.0
- if plane isa Helicopter then
- center.y = plane.top + height / 2.0 + 4.0
- end
- break
- end
- end
- end
- end
-
- on_plane = self.plane
- if on_plane != null then
- dx_to_plane = center.x - on_plane.center.x
- end
-
- # Die when hitting the ground
- if bottom <= 0.0 then
- die world
- inertia.x = 0.0
- inertia.y = 0.0
- end
-
- return
- end
-
- # Is the weapon ready to shoot?
- fun can_shoot(world: World): Bool
- do
- return is_alive and world.t - weapon.last_shot >= weapon.cooldown
- end
-
- # Open fire at `angle`!
- fun shoot(angle: Float, world: World)
- do
- if not can_shoot(world) then return
-
- var x_inertia = angle.cos * weapon.power
- var y_inertia = angle.sin * weapon.power
- var new_center = new Point3d[Float](self.center.x, self.center.y, self.center.z - 0.2)
-
- var bullet = register_bullet(new_center, angle, world)
- bullet.inertia.x = x_inertia
- bullet.inertia.y = y_inertia
- weapon.last_shot = world.t
- end
-
- # Add a bullet, which type depends on `self`
- protected fun register_bullet(new_center: Point3d[Float], angle: Float, world: World): Bullet
- do
- var bullet = new EnemyBullet(new_center, 2.0, 2.0, angle, self.weapon, world.t)
- world.enemy_bullets.add(bullet)
- return bullet
- end
-end
-
-# Player character
-class Player
- super Human
-
- # Basic starting weapon to which `self` reverts when out of bullets for powerup
- var basic_weapon = new Ak47
-
- redef fun shoot(angle, world)
- do
- super
-
- # Consume limited bullets from powerups
- if can_shoot(world) then
- weapon.bullet_number -= 1
- if weapon.bullet_number <= 0 then self.weapon = basic_weapon
- end
- end
-
- redef fun register_bullet(new_center, angle, world)
- do
- var bullet = new PlayerBullet(new_center, 2.0, 2.0, angle, self.weapon, world.t)
- world.player_bullets.add(bullet)
- return bullet
- end
-
- redef fun update(dt, world)
- do
- super
-
- # Catch powerups
- for p in world.powerups.reverse_iterator do
- if self.intersects(p) then
- p.apply self
- p.die world
- end
- end
- end
-
- redef fun max_health do return 200.0
-end
-
-# Enemy that can shoot
-abstract class Enemy
- super Human
-
- redef fun max_health do return 20.0
-
- redef fun die(world)
- do
- super
- world.score += 1
- if 100.0.rand > 90.0 then world.powerups.add(new Powerup(self.center, world))
- end
-
- redef fun destroy(world)
- do
- super
- world.enemies.remove self
- end
-end
-
-# Enemy walking on a platform
-class WalkingEnemy
- super Enemy
-end
-
-# Enemy with a jetpack
-class JetpackEnemy
- super Enemy
-
- redef fun affected_by_gravity do return false
-end
-
-# The main boss, the ISS taken over by bad guys
-class Boss
- super Enemy
-
- # TODO this should not subclass Human!
-
- redef fun max_health do return 2000.0
-
- redef fun affected_by_gravity do return false
-
- redef fun die(world)
- do
- super
- world.score += 999
- end
-end
-
-# Bonus powerup
-class Powerup
- super Body
-
- # Seconds to live
- var lifespan = 10.0
-
- # When has this powerup been created
- var created = 0.0 is writable
-
- redef fun affected_by_gravity do return false
-
- new(center: Point3d[Float], world: World)
- do
- var v = 3.rand
- var powerup: nullable Powerup = null
- if v == 0 then powerup = new Ak47PU(center, 5.0, 5.0)
- if v == 1 then powerup = new RocketLauncherPU(center, 5.0, 5.0)
- if v == 2 then powerup = new Life(center, 5.0, 5.0)
- assert powerup != null
-
- powerup.inertia.y = -2.0
- powerup.created = world.t
- return powerup
- end
-
- # Apply this powerup to `player`
- fun apply(player: Player) do end
-
- redef fun update(dt, world)
- do
- super
- if world.t - created > lifespan then die(world)
- end
-
- redef fun destroy(world)
- do
- super
- world.powerups.remove(self)
- end
-end
-
-# Weapon usable by a `Human` and `Boss`
-abstract class Weapon
-
- # Second at which the last shot was taken
- var last_shot = 0.0
-
- # Number of bullets in the chamber, the weapon is lost when it reaches 0
- var bullet_number: Int is abstract
-
- # Damage made by a single bullet
- fun damage: Float is abstract
-
- # Seconds between each shot
- fun cooldown: Float is abstract
-
- # Speed of the bullet when leaving the weapon
- fun power: Float is abstract
-
- # Seconds to live of the bullets
- fun bullet_lifespan: Float is abstract
-end
-
-# Bullet fired by a `weapon`
-abstract class Bullet
- super Body
-
- # Orientation
- var angle: Float
-
- # `Weapon` that fired `self`
- var weapon: Weapon
-
- # Second at which this bullet was fired
- var creation_time: Float
-
- redef fun affected_by_gravity do return false
-
- redef fun update(dt, world)
- do
- super
- if world.t - creation_time >= weapon.bullet_lifespan then die world
- end
-
- # Hit `body`
- fun hit_enemy(body: Body, world: World)
- do
- body.hit(self.weapon.damage, world)
- die world
- end
-end
-
-# `Bullet` shot by the player
-class PlayerBullet
- super Bullet
-
- redef fun update(dt, world)
- do
- super
-
- for i in world.planes do if self.intersects(i) then hit_enemy(i, world)
- for i in world.enemies do if self.intersects(i) then hit_enemy(i, world)
- end
-
- redef fun destroy(world) do
- super
- world.player_bullets.remove self
- end
-end
-
-# `Bullet` shot by an enemy
-class EnemyBullet
- super Bullet
-
- redef fun update(dt, world) do
- super
-
- var player = world.player
- if player != null and self.intersects(player) then hit_enemy(player, world)
- end
-
- redef fun destroy(world) do
- super
- world.enemy_bullets.remove self
- end
-end
-
-# Fast shooting weapon
-class Ak47
- super Weapon
-
- redef var damage = 10.0
-
- redef var cooldown = 0.1
-
- redef var power = 70.0
-
- redef var bullet_lifespan = 3.0
-
- redef var bullet_number = 200
-end
-
-# Powerup to equip an `Ak47`
-class Ak47PU
- super Powerup
-
- redef fun apply(player) do player.weapon = new Ak47
-end
-
-# Slow but powerful rocket launcher
-class RocketLauncher
- super Weapon
-
- redef var damage = 500.0
-
- redef var cooldown = 1.5
-
- redef var power = 50.0
-
- redef var bullet_lifespan = 5.0
-
- redef var bullet_number = 20
-end
-
-# Powerup to equip a `RocketLauncher`
-class RocketLauncherPU
- super Powerup
-
- redef fun apply(player) do player.weapon = new RocketLauncher
-end
-
-# Base weapon, a bit slow
-class Pistol
- super Weapon
-
- redef var damage = 10.0
-
- redef var cooldown = 0.3
-
- redef var power = 70.0
-
- redef var bullet_lifespan = 3.0
-
- redef var bullet_number = 10000
-end
-
-# Healing powerup
-class Life
- super Powerup
-
- redef fun apply(player) do player.health += 50.0
-end
-
-redef class Float
- # Fuzzy value in `[self-variation..self+variation]`
- fun &(variation: Float): Float do return self - variation + 2.0*variation.rand
-end
diff --git a/contrib/action_nitro/src/game/game.nit b/contrib/action_nitro/src/game/game.nit
deleted file mode 100644
index 8938c36a45..0000000000
--- a/contrib/action_nitro/src/game/game.nit
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import core
-import ai
-import planegen
diff --git a/contrib/action_nitro/src/game/planegen.nit b/contrib/action_nitro/src/game/planegen.nit
deleted file mode 100644
index 667783c090..0000000000
--- a/contrib/action_nitro/src/game/planegen.nit
+++ /dev/null
@@ -1,185 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Enemy generation
-module planegen
-
-import core
-
-redef class World
-
- # Max planes within view
- var max_planes = 12
-
- # Max human enemies within view
- var max_enemies = 2
-
- redef fun update(dt) do
- super
- spawn_enemy spawn_plane
- end
-
- # Randomly spawn a plane if needed
- fun spawn_plane: Bool do
- var p = player
- if p == null then return false
- if p.altitude >= boss_altitude then
- return false
- end
- for i in planes.reverse_iterator do
- if i.out_of_screen(p, self) then
- #print "Despawning plane"
- i.destroy self
- end
- end
-
- if p.dead then return false
- if planes.length >= max_planes then return false
- if 100.rand < 95 then return false
-
- var pos
- var xspawn = 50.0.rand
- var direction: Int
- if xspawn >= 25.0 then
- xspawn = camera_view.right - 1.0
- direction = 1
- else
- xspawn = camera_view.left - 8.0
- direction = 0
- end
- var yspawn
- if planes.length == 0 then
- #print "First plane spawn"
- yspawn = p.center.y & 25.0
- else
- var py = p.center.y
- var planes_below = 0
- var planes_above = 0
- var above_y = new Array[Float]
- var below_y = new Array[Float]
- for i in planes do
- #print "Plane coordinates = {i.center}"
- var iy = i.center.y
- if iy > py then
- planes_above += 1
- above_y.add iy
- else
- planes_below += 1
- below_y.add iy
- end
- end
- if planes_below < planes_above then
- if planes_below == 0 then
- yspawn = py - 15.0.rand
- else
- yspawn = below_y.rand - 25.0.rand
- end
- else
- if planes_above == 0 then
- yspawn = py + 15.0.rand
- else
- yspawn = above_y.rand + 25.0.rand
- end
- end
- if yspawn < 0.0 then
- yspawn = py + 15.0.rand
- end
- end
- pos = new Point3d[Float](xspawn, yspawn, 0.0 & 0.2)
- #print("Spawning plane at position {pos}")
- var platform_type = 100.rand
- var plane: Platform
- if platform_type < 90 then
- plane = new Airplane(pos, 16.0, 4.0)
- else
- plane = new Helicopter(pos, 16.0, 4.0)
- end
- var xspeed = 50.0
- if direction == 1 then xspeed = -xspeed
- plane.inertia = new Point3d[Float](xspeed, -0.1, 0.0)
- planes.add(plane)
- return true
- end
-
- # Randomly spawn an enemy if needed
- fun spawn_enemy(spawned_plane: Bool) do
- var p = player
- if p == null then return
- if p.altitude >= boss_altitude then
- for e in enemies.reverse_iterator do if e isa JetpackEnemy then
- e.destroy self
- end
- return
- end
- for i in enemies.reverse_iterator do
- if i.out_of_screen(p, self) then
- #print "Despawning enemy"
- i.destroy self
- end
- end
-
- if enemies.length >= max_enemies then return
- if 100.rand < 95 then return
-
- if spawned_plane then
- var pl = planes.last
- var pos = new Point3d[Float](pl.center.x, pl.center.y + pl.top / 2.0, 0.0)
- #print "Spawning walking enemy at positon {pos}"
- var enemy = new WalkingEnemy(pos, 3.0, 3.0, new Pistol)
- enemy.inertia = pl.inertia
- pl.enemy = enemy
- enemies.add enemy
- return
- end
- # 0: Up
- # 1: Right
- # 2: Down
- # 3: Left
- var dirspawn = 4.rand
- var xspawn
- var yspawn
- var xinertia
- var yinertia
- var cam = camera_view
- if dirspawn == 0 then
- xspawn = (cam.right - cam.left).rand
- yspawn = cam.top + 10.0
- yinertia = -(10.0.rand)
- xinertia = 0.0
- else if dirspawn == 1 then
- yspawn = (cam.top - cam.bottom).rand
- xspawn = cam.right + 10.0
- xinertia = -(10.0.rand)
- yinertia = 0.0
- else if dirspawn == 2 then
- xspawn = (cam.right - cam.left).rand
- yspawn = cam.bottom - 10.0
- yinertia = 10.0.rand
- xinertia = 0.0
- else if dirspawn == 3 then
- yspawn = (cam.top - cam.bottom).rand
- xspawn = cam.left - 10.0
- xinertia = 10.0.rand
- yinertia = 0.0
- else
- #print "Rand failed, should not happen"
- abort
- end
- var pos = new Point3d[Float](xspawn, yspawn, 0.0)
- #print "Spawning jetpack enemy at positon {pos}"
- var enemy = new JetpackEnemy(pos, 3.0, 3.0, new Pistol)
- enemy.inertia = new Point3d[Float](xinertia, yinertia, 0.0)
- enemies.add enemy
- end
-end
diff --git a/contrib/action_nitro/src/gen/.gitignore b/contrib/action_nitro/src/gen/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/action_nitro/src/gen/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/action_nitro/src/touch_ui.nit b/contrib/action_nitro/src/touch_ui.nit
deleted file mode 100644
index b97be7e320..0000000000
--- a/contrib/action_nitro/src/touch_ui.nit
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import gamnit::virtual_gamepad
-
-import action_nitro
-
-redef class App
- redef fun on_create
- do
- super
-
- var gamepad = new VirtualGamepad
- gamepad.add_dpad(["up","left","down","right"])
- gamepad.add_dpad(["w","a","s","d"])
- gamepad.add_button("space", planes_sheet.open_chute)
- self.gamepad = gamepad
- end
-
- redef fun begin_play(initial)
- do
- super
-
- var gamepad = self.gamepad
- if gamepad != null then gamepad.visible = true
- end
-end
diff --git a/contrib/asteronits/.gitignore b/contrib/asteronits/.gitignore
deleted file mode 100644
index db11f0f1f7..0000000000
--- a/contrib/asteronits/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/nit_compile
diff --git a/contrib/asteronits/Makefile b/contrib/asteronits/Makefile
deleted file mode 100644
index 846c337290..0000000000
--- a/contrib/asteronits/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-NITC=nitc
-NITLS=nitls
-
-all: bin/asteronits
-
-bin/asteronits: $(shell ${NITLS} -M src/asteronits.nit -m linux) pre-build
- ${NITC} src/asteronits.nit -m linux -o $@
-
-bin/texture_atlas_parser: ../../lib/gamnit/texture_atlas_parser.nit
- ${NITC} ../../lib/gamnit/texture_atlas_parser.nit -o $@
-
-src/spritesheet.nit: bin/texture_atlas_parser
- bin/texture_atlas_parser art/sheet.xml --dir src/ -n spritesheet
-
-pre-build: src/spritesheet.nit
-
-check: bin/asteronits
- NIT_TESTING=true bin/asteronits
-
-# ---
-# Android
-
-android: bin/asteronits.apk
-bin/asteronits.apk: $(shell ${NITLS} -M src/asteronits.nit -m android) android/res/ pre-build
- ${NITC} src/android.nit -m android -o $@
-
-android-release: $(shell ${NITLS} -M src/asteronits.nit -m android) android/res/ pre-build
- ${NITC} src/android.nit -m android -o bin/asteronits.apk --release
-
-android/res/: art/icon.svg
- make -C ../inkscape_tools/
- ../inkscape_tools/bin/svg_to_icons --out android/res --android art/icon.svg
-
-# ---
-# iOS
-
-ios: bin/asteronits.app
-bin/asteronits.app: $(shell ${NITLS} -M src/asteronits.nit -m ios -m src/touch_ui.nit) pre-build ios/AppIcon.appiconset/Contents.json
- ${NITC} src/asteronits.nit -m ios -m src/touch_ui.nit -o $@ --compile-dir nit_compile
-
-ios/AppIcon.appiconset/Contents.json: art/icon.svg
- mkdir -p ios
- ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --ios --out ios/AppIcon.appiconset/
diff --git a/contrib/asteronits/README.md b/contrib/asteronits/README.md
deleted file mode 100644
index 30998616d2..0000000000
--- a/contrib/asteronits/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Sample portable 2D game implemented with the `simple_2d` API of gamnit
-
-This projects is organized in 3 modules, one per concern:
-
-* `game_logic` defines the pure game logic without any of the display details.
-
-* `asteronits` implements the display logic with support for keyboard input events.
-
-* `touch_ui` adds an interface for touchscreen devices with buttons to open fire and control the ship.
-
-# Art
-
-* Graphics and laser sound created by Kenney.nl under CC0.
-* Remote explosion sound created by NenadSimic under CC0.
-* Close explosion sound created by dklon under CC-BY 3.0.
diff --git a/contrib/asteronits/android/.gitignore b/contrib/asteronits/android/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/asteronits/android/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/asteronits/art/icon.svg b/contrib/asteronits/art/icon.svg
deleted file mode 100644
index d8b9998b04..0000000000
--- a/contrib/asteronits/art/icon.svg
+++ /dev/null
@@ -1,1886 +0,0 @@
-
-
diff --git a/contrib/asteronits/art/sheet.xml b/contrib/asteronits/art/sheet.xml
deleted file mode 100644
index 71e1ccf17a..0000000000
--- a/contrib/asteronits/art/sheet.xml
+++ /dev/null
@@ -1,296 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/contrib/asteronits/assets/.gitignore b/contrib/asteronits/assets/.gitignore
deleted file mode 100644
index 23a22a6387..0000000000
--- a/contrib/asteronits/assets/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-images/controls.png
diff --git a/contrib/asteronits/assets/images/sheet.png b/contrib/asteronits/assets/images/sheet.png
deleted file mode 100644
index 8c58b86c2d..0000000000
Binary files a/contrib/asteronits/assets/images/sheet.png and /dev/null differ
diff --git a/contrib/asteronits/assets/sounds/explosion_asteroids.wav b/contrib/asteronits/assets/sounds/explosion_asteroids.wav
deleted file mode 100644
index bc2a5f7bc0..0000000000
Binary files a/contrib/asteronits/assets/sounds/explosion_asteroids.wav and /dev/null differ
diff --git a/contrib/asteronits/assets/sounds/explosion_ship.wav b/contrib/asteronits/assets/sounds/explosion_ship.wav
deleted file mode 100644
index 2291b2b9a6..0000000000
Binary files a/contrib/asteronits/assets/sounds/explosion_ship.wav and /dev/null differ
diff --git a/contrib/asteronits/assets/sounds/fire.ogg b/contrib/asteronits/assets/sounds/fire.ogg
deleted file mode 100644
index a56e01aff0..0000000000
Binary files a/contrib/asteronits/assets/sounds/fire.ogg and /dev/null differ
diff --git a/contrib/asteronits/bin/.gitignore b/contrib/asteronits/bin/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/asteronits/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/asteronits/org.nitlanguage.asteronits.txt b/contrib/asteronits/org.nitlanguage.asteronits.txt
deleted file mode 100644
index 7e19cd51d7..0000000000
--- a/contrib/asteronits/org.nitlanguage.asteronits.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit,Games
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/asteronits
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Destroy asteroids in this simple 2D sample game made with gamnit
-Description:
-Sample portable gamnit game implemented with the flat API.
-.
diff --git a/contrib/asteronits/package.ini b/contrib/asteronits/package.ini
deleted file mode 100644
index e32fcca1ef..0000000000
--- a/contrib/asteronits/package.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name=asteronits
-tags=example
-maintainer=Alexis Laferrière
-license=Apache-2.0
-desc=Sample portable 2D game implemented with the `simple_2d` API of gamnit
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/asteronits/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/asteronits/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/asteronits.apk
diff --git a/contrib/asteronits/src/.gitignore b/contrib/asteronits/src/.gitignore
deleted file mode 100644
index 2e17176ee4..0000000000
--- a/contrib/asteronits/src/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-controls.nit
-spritesheet.nit
diff --git a/contrib/asteronits/src/android.nit b/contrib/asteronits/src/android.nit
deleted file mode 100644
index e7ac9df1d0..0000000000
--- a/contrib/asteronits/src/android.nit
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import ::android
-import ::android::vibration
-
-import asteronits
-import touch_ui
-
-redef class Ship
- redef fun hit
- do
- super
- app.vibrator.vibrate 20
- end
-end
-
-redef class Asteroid
- redef fun destroy
- do
- super
- app.vibrator.vibrate 10
- end
-end
diff --git a/contrib/asteronits/src/asteronits.nit b/contrib/asteronits/src/asteronits.nit
deleted file mode 100644
index e0c9991f96..0000000000
--- a/contrib/asteronits/src/asteronits.nit
+++ /dev/null
@@ -1,246 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Portable game to destroy asteroids
-module asteronits is
- app_name "Asteronits"
- app_namespace "org.nitlanguage.asteronits"
- app_version(1, 0, git_revision)
-end
-
-import gamnit::flat
-
-import gamnit::landscape
-
-import game_logic
-import spritesheet
-
-redef class Spritesheet
- # Largest meteors, organized by color
- var meteors_big: Array[Array[Texture]] = [
- [meteor_brown_big1, meteor_brown_big2, meteor_brown_big3, meteor_brown_big4],
- [meteor_grey_big1, meteor_grey_big2, meteor_grey_big3, meteor_grey_big4]]
-
- # Medium size meteors, organized by color
- var meteors_med: Array[Array[Texture]] = [
- [meteor_brown_med1, meteor_brown_med3],
- [meteor_grey_med1, meteor_grey_med2]]
-
- # Small meteors, organized by color
- var meteors_small: Array[Array[Texture]] = [
- [meteor_brown_small1, meteor_brown_small2],
- [meteor_grey_small1, meteor_grey_small2]]
-
- # Tiny meteors, organized by color
- #
- # TODO use these in particles
- var meteors_tiny: Array[Array[Texture]] = [
- [meteor_brown_tiny1, meteor_brown_tiny2],
- [meteor_grey_tiny1, meteor_grey_tiny2]]
-
- # Available ships
- var ships: Array[Texture] = [enemy_green1]
-end
-
-redef class App
-
- # Current world in play
- var world = new World(12, 2, display.aspect_ratio) is lazy
-
- # Sound effects
- private var fx_fire = new Sound("sounds/fire.ogg")
- private var fx_explosion_ship = new Sound("sounds/explosion_ship.wav")
- private var fx_explosion_asteroids = new Sound("sounds/explosion_asteroids.wav")
-
- redef fun create_scene
- do
- super
-
- # Move the camera to show all the world world in the screen range
- world_camera.reset_height(world.half_height * 2.0)
-
- ui_camera.reset_height 720.0
- end
-
- # Main spritesheet with ships, asteroids and beams
- var spritesheet = new Spritesheet
-
- redef fun update(dt)
- do
- # Update game logic
- world.do_turn dt
-
- # Setup new world if all asteroids are destroyed
- if world.asteroids.is_empty then
- sprites.clear
- world = new World(world.n_asteroids*2, world.n_asteroid_parts+1, display.aspect_ratio)
- end
- end
-
- redef fun accept_event(event)
- do
- if super then return true
-
- if event isa QuitEvent then
- exit 0
- else if event isa KeyEvent then
- var thrust = event.thrust
- if thrust != 0.0 then
- app.world.ship.applied_thrust = if event.is_down then thrust else 0.0
- return true
- end
-
- var rot = event.rotation
- if rot != 0.0 then
- app.world.ship.applied_rotation = if event.is_down then rot else 0.0
- return true
- end
-
- if event.name == "space" and event.is_down then
- app.world.ship.fire
- return true
- else if event.name == "escape" then
- exit 0
- else if event.name == "." and event.is_down then
- dynamic_resolution_ratio *= 2.0
- print dynamic_resolution_ratio
- else if event.name == "," and event.is_down then
- dynamic_resolution_ratio /= 2.0
- print dynamic_resolution_ratio
- end
- end
-
- return false
- end
-end
-
-redef class SpacialObject
- # Main `Sprite` to draw for this object
- var sprite: Sprite is noinit
-
- # All `Sprites` composing this object
- var sprites: Collection[Sprite] = new Ref[Sprite](sprite) is lazy
-
- init do app.sprites.add_all sprites
-
- redef fun do_turn(dt)
- do
- super
- sprite.rotation = rotation - pi/2.0
- end
-
- redef fun destroy
- do
- super
- for s in sprites do app.sprites.remove s
- end
-end
-
-redef class Asteroid
-
- init
- do
- # Select texture from `size` and `color`
- var tex = if size == 3 then
- app.spritesheet.meteors_big[color].rand
- else if size == 2 then
- app.spritesheet.meteors_med[color].rand
- else app.spritesheet.meteors_small[color].rand
-
- sprite = new Sprite(tex, center)
- super
- end
-
- redef fun destroy
- do
- super
- app.fx_explosion_asteroids.play
- end
-end
-
-redef class Bullet
- init
- do
- sprite = new Sprite(app.spritesheet.laser_blue01, center)
- super
- end
-end
-
-redef class Ship
- init
- do
- sprite = new Sprite(app.spritesheet.ships.rand, center)
- sprites = [sprite, thrust_sprite]
-
- super
- end
-
- private var thrust_sprite = new Sprite(app.spritesheet.fire09, new Point3d[Float](0.0, 0.0, 0.0))
-
- private var sprites_with_fire: Array[Sprite] = [thrust_sprite, sprite] is lazy
-
- redef fun do_turn(dt)
- do
- super
-
- # Update position of the thrust sprite
- var dist_to_engine = 45.0
- thrust_sprite.center.x = center.x - dist_to_engine*rotation.cos
- thrust_sprite.center.y = center.y - dist_to_engine*rotation.sin
- thrust_sprite.center.z = center.z
- thrust_sprite.rotation = rotation - pi/2.0
-
- # Show or hide the thrust sprite
- if applied_thrust > 0.0 then
- thrust_sprite.alpha = 1.0
-
- else if thrust_sprite.alpha > 0.0 then
- thrust_sprite.alpha -= dt*4.0
- if thrust_sprite.alpha < 0.0 then thrust_sprite.alpha = 0.0
- end
-
- # HACK, the "enemy" ship used for the player points downwards
- sprite.rotation += pi
- end
-
- redef fun fire
- do
- super
- app.fx_fire.play
- end
-
- redef fun hit
- do
- super
- app.fx_explosion_ship.play
- end
-end
-
-redef class KeyEvent
-
- # How does this event affect the ship thrust?
- fun thrust: Float
- do
- if name == "up" or name == "w" then return 1.0
- return 0.0
- end
-
- # How does this event affect the ship thrust?
- fun rotation: Float
- do
- if name == "right" or name == "d" then return -1.0
- if name == "left" or name == "a" then return 1.0
- return 0.0
- end
-end
diff --git a/contrib/asteronits/src/game_logic.nit b/contrib/asteronits/src/game_logic.nit
deleted file mode 100644
index 785fe9d523..0000000000
--- a/contrib/asteronits/src/game_logic.nit
+++ /dev/null
@@ -1,276 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Pure game logic, independent of gamnit and other display concerns
-module game_logic
-
-import geometry::points_and_lines
-
-# Root of all entities of a single play
-class World
-
- # Number of original asteroids per play
- var n_asteroids: Int
-
- # Number of parts created when an asteroid explodes
- var n_asteroid_parts: Int
-
- # Ratio of the world: height / width
- var ratio_height_width: Float
-
- # Minimum half size of the world, applied either to `half_width` of `half_height`
- private var min_half_size = 500.0
-
- # Width of the world
- var half_width: Float = if ratio_height_width <= 1.0 then
- min_half_size
- else min_half_size * ratio_height_width is lazy
-
- # Height of the world
- var half_height: Float = if ratio_height_width >= 1.0 then
- min_half_size
- else min_half_size / ratio_height_width is lazy
-
- # Player's ship
- var ship = new Ship(self)
-
- # All live spacial objects
- var objects = new Array[SpacialObject].with_items(ship)
-
- # All live asteroids
- var asteroids = new Array[Asteroid]
-
- # All live bullets
- var bullets = new Array[SpacialObject]
-
- init
- do
- for a in n_asteroids.times do
- var asteroid = new Asteroid(self, 3)
- asteroid.center.x = half_width - 2.0*half_width.rand
- asteroid.center.y = half_height - 2.0*half_height.rand
- asteroid.rotation_inertia = 0.5 - 1.0.rand
-
- objects.add asteroid
- asteroids.add asteroid
- end
- end
-
- # Execute a turn that took `dt` seconds
- fun do_turn(dt: Float)
- do
- for object in objects do object.do_turn dt
-
- for object in objects.to_a do if not object isa Asteroid then
-
- for asteroid in asteroids.to_a do
- var d2 = object.center.dist2(asteroid.center)
-
- var r = object.radius + asteroid.radius
- if d2 < r*r then
- # Boom
- if object == ship then
- # The ship is invincible
- # TODO health and losing
- ship.hit
- else
- object.destroy
- end
-
- asteroid.destroy
- break
- end
- end
- end
- end
-end
-
-# Physical object in space physics
-abstract class SpacialObject
-
- # World in which this object belongs
- var world: World
-
- # Current position
- var center = new Point3d[Float](0.0, 0.0, 0.0)
-
- # Position inertia, applied on `center` at each `do_turn`
- var inertia = new Point3d[Float](0.0, 0.0, 0.0)
-
- # Current rotation
- var rotation = 0.0
-
- # Rotation inertia, applied on `rotation` at each `do_turn`
- var rotation_inertia = 0.0
-
- # Rotation force, currently applied by the pilot
- var applied_rotation = 0.0 is writable
-
- # Thrust force, currently applied by the pilot
- var applied_thrust = 0.0 is writable
-
- # Radius of this object for collision detection
- var radius: Float is noinit
-
- # New instance copying the data from `other` with an optional `variation`
- init copy(other: SpacialObject, variation: nullable Float)
- do
- init other.world
-
- if variation == null then variation = 0.0
-
- center.x = other.center.x
- center.y = other.center.y
- center.z = other.center.z
-
- inertia.x = other.inertia.x + variation - 2.0*variation.rand
- inertia.y = other.inertia.y + variation - 2.0*variation.rand
-
- rotation = other.rotation
- if variation != 0.0 then rotation = 2.0 * pi.rand
- end
-
- # Apply `thrust` forward on this object
- fun apply_thrust(thrust: Float)
- do
- inertia.x += thrust * rotation.cos
- inertia.y += thrust * rotation.sin
- end
-
- # Execute a turn that took `dt` seconds
- fun do_turn(dt: Float)
- do
- # Forces to inertia
- var t = applied_thrust * 5.0
- inertia.x += t * rotation.cos
- inertia.y += t * rotation.sin
-
- # Arcade rotation
- var r = applied_rotation * 0.05
- rotation += r
-
- # Realistic rotation, kept for reference and reality minded individuals
- #var r = applied_rotation * 0.2
- #rotation_inertia += r
- #rotation_inertia = rotation_inertia.clamp(-2.0, 2.0)
-
- # Inertia to position
- rotation += rotation_inertia * dt
- center.x += inertia.x * dt
- center.y += inertia.y * dt
- center.z += inertia.z * dt
-
- # Wrap objects so they stay in the screen
- while center.x < -world.half_width do center.x += 2.0 * world.half_width
- while center.x > world.half_width do center.x -= 2.0 * world.half_width
- while center.y < -world.half_height do center.y += 2.0 * world.half_height
- while center.y > world.half_height do center.y -= 2.0 * world.half_height
- end
-
- # Destroy this object
- fun destroy do world.objects.remove self
-end
-
-# Player's ship
-class Ship
- super SpacialObject
-
- init do radius = 20.0
-
- # Open fire forward
- fun fire
- do
- var bullet = new Bullet.copy(world.ship)
- bullet.center.z = -1.0 # in the background
- bullet.apply_thrust 500.0 # give a boost
-
- world.objects.add bullet
- world.bullets.add bullet
- end
-
- # Something hits the ship
- fun hit do end
-end
-
-# Asteroid, the main obstacle in this game
-class Asteroid
- super SpacialObject
-
- # Size of this asteroid, should be greater than 0
- var size: Int
-
- # Color, or type, on this asteroid
- var color: Int = 2.rand
-
- init
- do
- rotation_inertia = 0.5 - 1.0.rand
- radius = 22.5 * size.to_f
- end
-
- # New asteroid breaking off from `other`
- init break_off(other: Asteroid)
- do
- size = other.size - 1
- color = other.color
-
- copy(other, 60.0)
- end
-
- # Explode and break off this asteroid
- redef fun destroy
- do
- super
-
- world.asteroids.remove self
-
- if size == 1 then return # Do not break off
-
- for p in world.n_asteroid_parts.times do
- var asteroid = new Asteroid.break_off(self)
- asteroid.size = size - 1
- asteroid.color = color
-
- asteroid.inertia.x += 1.0 - 2.0.rand
- asteroid.inertia.y += 1.0 - 2.0.rand
-
- world.objects.add asteroid
- world.asteroids.add asteroid
- end
- end
-end
-
-# Bullet or beam fired from a `Ship`
-class Bullet
- super SpacialObject
-
- # Time left before this bullet expires
- var ttl = 5.0
-
- init do radius = 0.0
-
- redef fun do_turn(dt)
- do
- super
-
- ttl -= dt
- if ttl <= 0.0 then destroy
- end
-
- redef fun destroy
- do
- super
- world.bullets.remove self
- end
-end
diff --git a/contrib/asteronits/src/touch_ui.nit b/contrib/asteronits/src/touch_ui.nit
deleted file mode 100644
index 2264f28ddd..0000000000
--- a/contrib/asteronits/src/touch_ui.nit
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Touchscreen UI for mobile devices
-module touch_ui
-
-import gamnit::virtual_gamepad
-
-import asteronits
-
-redef class App
- redef fun create_scene
- do
- super
-
- var gamepad = new VirtualGamepad
-
- var dpad = gamepad.add_dpad
- if dpad != null then dpad.show_down = false
-
- gamepad.add_button("space", gamepad_spritesheet.fire)
- gamepad.visible = true
- self.gamepad = gamepad
- end
-end
diff --git a/contrib/model_viewer/.gitignore b/contrib/model_viewer/.gitignore
deleted file mode 100644
index 1e1503b35d..0000000000
--- a/contrib/model_viewer/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-android/
diff --git a/contrib/model_viewer/Makefile b/contrib/model_viewer/Makefile
deleted file mode 100644
index d64fbaa228..0000000000
--- a/contrib/model_viewer/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-NITC=nitc
-NITLS=nitls
-
-all: bin/model_viewer
-
-bin/model_viewer: $(shell ${NITLS} -M src/model_viewer.nit linux)
- ${NITC} src/model_viewer.nit -m linux -o $@
-
-check: bin/model_viewer
- NIT_TESTING=true bin/model_viewer
-
-# ---
-# Android
-
-android: bin/model_viewer.apk
-bin/model_viewer.apk: $(shell ${NITLS} -M src/model_viewer.nit -m android) android/res/
- ${NITC} src/model_viewer.nit -m android -o $@
-
-android-release: $(shell ${NITLS} -M src/model_viewer.nit -m android) android/res/
- ${NITC} src/model_viewer.nit -m android -o bin/model_viewer.apk --release
-
-android/res/: art/icon.png
- make -C ../inkscape_tools/
- mkdir -p android/res/drawable-ldpi/ android/res/drawable-mdpi/ android/res/drawable-hdpi/ \
- android/res/drawable-xhdpi/ android/res/drawable-xxhdpi/ android/res/drawable-xxxhdpi/
- convert -resize 36x36 art/icon.png android/res/drawable-ldpi/icon.png
- convert -resize 48x48 art/icon.png android/res/drawable-mdpi/icon.png
- convert -resize 72x72 art/icon.png android/res/drawable-hdpi/icon.png
- convert -resize 96x96 art/icon.png android/res/drawable-xhdpi/icon.png
- convert -resize 144x144 art/icon.png android/res/drawable-xxhdpi/icon.png
- convert -resize 192x192 art/icon.png android/res/drawable-xxxhdpi/icon.png
-
-bin/model_viewer_vr.apk: $(shell ${NITLS} -M src/model_viewer.nit android) android/res/ android/libs/cardboard.jar
- ${NITC} src/model_viewer.nit -m android -m ../../lib/gamnit/depth/vr.nit -o $@
-
-android/libs/cardboard.jar:
- mkdir -p android/libs
- curl --progress-bar -o android/libs/cardboard.jar \
- https://raw.githubusercontent.com/googlevr/gvr-android-sdk/e226f15c/CardboardSample/libs/cardboard.jar
-
-# ---
-# iOS
-
-ios: bin/model_viewer.app
-bin/model_viewer.app: $(shell ${NITLS} -M src/model_viewer.nit -m ios)
- ${NITC} src/model_viewer.nit -m ios -o $@ --compile-dir nit_compile
diff --git a/contrib/model_viewer/README.md b/contrib/model_viewer/README.md
deleted file mode 100644
index 5c91a58a67..0000000000
--- a/contrib/model_viewer/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Sample portable 3D app implemented with the gamnit depth framework
-
-This application uses the _depth_ framework to load and display 3D models.
-It also applies the _flat_ framework to display the static UI elements (like the "Next model" label).
-
-The pretty earth model (`GlobeModel`) is implemented by a material with a custom graphical program.
-It renders the earth with an displaced surface, a cloud layer, city lights and Phong lighting effects on the water.
-
-# Variations
-
-* For the desktop, the application is compiled to `bin/model_viewer`.
-
- This variation can show more models specified on the command line.
-
- ~~~
- bin/model_viewer [path_to_model ...]
- ~~~
-
-* For Android, the standard application is compiled to `bin/model_viewer.apk`.
-* The virtual reality variant `bin/model_viewer_vr.apk` targets Android and uses Google Cardboard for head tracking.
-
-# Art
-
-* 3D models `Tree_01` and `Oak_Fall_01` were created by Kenney.nl and published under CC0.
-* 3D model `Quandtum_BA-2_v1_1` was created by Quandtum and published under CC0.
-* Some textures on the `Quandtum_BA-2_v1_1` model have been created with images from goodtextures.com.
- These images can be used in free softwares, some restrictions still applies for modifications and other uses.
-* Globe textures credit: NASA, Visible Earth
diff --git a/contrib/model_viewer/art/icon.png b/contrib/model_viewer/art/icon.png
deleted file mode 100644
index 71612a4e6d..0000000000
Binary files a/contrib/model_viewer/art/icon.png and /dev/null differ
diff --git a/contrib/model_viewer/art/icon.xcf b/contrib/model_viewer/art/icon.xcf
deleted file mode 100644
index efcf652c69..0000000000
Binary files a/contrib/model_viewer/art/icon.xcf and /dev/null differ
diff --git a/contrib/model_viewer/art/next-prev-model.svg b/contrib/model_viewer/art/next-prev-model.svg
deleted file mode 100644
index 77f9203727..0000000000
--- a/contrib/model_viewer/art/next-prev-model.svg
+++ /dev/null
@@ -1,360 +0,0 @@
-
-
-
-
diff --git a/contrib/model_viewer/art/splash.xcf b/contrib/model_viewer/art/splash.xcf
deleted file mode 100644
index 41a139054d..0000000000
Binary files a/contrib/model_viewer/art/splash.xcf and /dev/null differ
diff --git a/contrib/model_viewer/assets/globe/clouds.png b/contrib/model_viewer/assets/globe/clouds.png
deleted file mode 100644
index 6a34285fb2..0000000000
Binary files a/contrib/model_viewer/assets/globe/clouds.png and /dev/null differ
diff --git a/contrib/model_viewer/assets/globe/earth.jpg b/contrib/model_viewer/assets/globe/earth.jpg
deleted file mode 100644
index 53388c8b85..0000000000
Binary files a/contrib/model_viewer/assets/globe/earth.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/globe/elevation.jpg b/contrib/model_viewer/assets/globe/elevation.jpg
deleted file mode 100644
index 48737a089c..0000000000
Binary files a/contrib/model_viewer/assets/globe/elevation.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/globe/lights.jpg b/contrib/model_viewer/assets/globe/lights.jpg
deleted file mode 100644
index 48dff8d1d2..0000000000
Binary files a/contrib/model_viewer/assets/globe/lights.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/globe/seas.jpg b/contrib/model_viewer/assets/globe/seas.jpg
deleted file mode 100644
index a078e6642e..0000000000
Binary files a/contrib/model_viewer/assets/globe/seas.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/models/Oak_Fall_01.mtl b/contrib/model_viewer/assets/models/Oak_Fall_01.mtl
deleted file mode 100644
index 911da3ebac..0000000000
--- a/contrib/model_viewer/assets/models/Oak_Fall_01.mtl
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-## Alias OBJ Material File
-# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
-
-newmtl Fall_Leafs
-Ka 0.000000 0.000000 0.000000
-Kd 0.619608 0.356863 0.235294
-Ks 0.330000 0.330000 0.330000
-
-newmtl Wood
-Ka 0.000000 0.000000 0.000000
-Kd 0.666667 0.545098 0.356863
-Ks 0.330000 0.330000 0.330000
diff --git a/contrib/model_viewer/assets/models/Oak_Fall_01.obj b/contrib/model_viewer/assets/models/Oak_Fall_01.obj
deleted file mode 100644
index e77e7b3a9a..0000000000
--- a/contrib/model_viewer/assets/models/Oak_Fall_01.obj
+++ /dev/null
@@ -1,272 +0,0 @@
-# Alias OBJ Model File
-# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
-# File units = meters
-
-mtllib Oak_Fall_01.mtl
-
-g Mesh1 Oak_Fall Model
-
-usemtl Fall_Leafs
-v 1.57617 1.5335 -1.365
-vt -0.310227 0.697045
-vn 0.5 0 -0.866025
-v 0.788083 1.5335 -1.82
-vt 0.103409 0.697045
-v 0.788083 2.817 -1.82
-vt 0.103409 1.28045
-vn 0.497668 0.0964695 -0.861986
-v 1.57617 2.817 -1.365
-vt -0.310227 1.28045
-f 1/1/1 2/2/1 3/3/2 4/4/2
-
-v 0.788083 1.27 -1.4196
-vt 0.0124091 0.936811
-vn 0.302516 -0.796201 -0.523973
-vt 0.103409 1.13477
-vt -0.310227 1.13477
-v 1.22941 1.27 -1.1648
-vt -0.219227 0.936811
-f 5/5/3 2/6/3 1/7/3 6/8/3
-
-v 0.346757 1.27 -1.1648
-vt -0.401227 0.651596
-vn -0.302516 -0.796201 -0.523973
-v 1.80478e-015 1.5335 -1.365
-vt -0.310227 0.849557
-vt -0.723864 0.849557
-vt -0.632864 0.651596
-f 7/9/4 8/10/4 2/11/4 5/12/4
-
-v 0 1.5335 -0.455
-vt -0.206818 0.421735
-vn -0.605032 -0.796201 -3.68114e-016
-vt -0.620455 0.421735
-vt -0.529455 0.223774
-v 0.346757 1.27 -0.6552
-vt -0.297818 0.223774
-f 9/13/5 8/14/5 7/15/5 10/16/5
-
-vt -0.620455 0.697045
-vn -1 0 -7.93309e-016
-vt -0.206818 0.697045
-v 0 2.817 -0.455
-vt -0.206818 1.28045
-vn -0.995336 0.0964695 -6.93437e-016
-v 1.80478e-015 2.817 -1.365
-vt -0.620455 1.28045
-f 8/17/6 9/18/6 11/19/7 12/20/7
-
-vt -0.103409 0.697045
-vn -0.5 0 0.866025
-v 0.788083 1.5335 -0
-vt 0.310227 0.697045
-v 0.788083 2.817 -0
-vt 0.310227 1.28045
-vn -0.497668 0.0964695 0.861986
-vt -0.103409 1.28045
-f 9/21/8 13/22/8 14/23/9 11/24/9
-
-v 0.788083 1.27 -0.4004
-vt 0.219227 0.0811668
-vn -0.302516 -0.796201 0.523973
-vt 0.310227 0.279128
-vt -0.103409 0.279128
-vt -0.0124091 0.0811668
-f 15/25/10 13/26/10 9/27/10 10/28/10
-
-v 1.22941 1.27 -0.6552
-vt 0.632864 0.366382
-vn 0.302516 -0.796201 0.523973
-v 1.57617 1.5335 -0.455
-vt 0.723864 0.564342
-vt 0.310227 0.564342
-vt 0.401227 0.366382
-f 16/29/11 17/30/11 13/31/11 15/32/11
-
-vt 0.297818 0.794204
-vn 0.605032 -0.796201 4.38273e-018
-vt 0.529455 0.794204
-vt 0.620455 0.992165
-vt 0.206818 0.992165
-f 16/33/12 6/34/12 1/35/12 17/36/12
-
-vt -0.558823 0.297818
-vn 0 -1 -0
-v 0.902339 1.27 -0.795744
-vt -0.410154 0.361702
-vt -0.558823 0.529455
-f 16/37/13 18/38/13 6/39/13
-
-vt -0.35822 0.182
-f 15/40/13 18/38/13 16/37/13
-
-v 0.673827 1.27 -0.795744
-vt -0.306285 0.361702
-f 15/40/13 19/41/13 18/38/13
-
-vt -0.157617 0.297818
-f 10/42/13 19/41/13 15/40/13
-
-v 0.673827 1.27 -1.02426
-vt -0.306285 0.465571
-f 19/41/13 10/42/13 20/43/13
-
-vt -0.35822 0.645273
-f 10/42/13 5/44/13 20/43/13
-
-vt -0.157617 0.529455
-f 5/44/13 10/42/13 7/45/13
-
-v 0.902339 1.27 -1.02426
-vt -0.410154 0.465571
-f 20/43/13 5/44/13 21/46/13
-
-f 21/46/13 5/44/13 6/39/13
-
-f 21/46/13 6/39/13 18/38/13
-
-usemtl Wood
-v 0.968014 0 -0.73007
-vt 0.33185 -0.0227234
-vn 0.998666 0.0516433 -0
-v 0.968014 0 -1.08993
-vt 0.495423 -0.0227234
-vt 0.465571 0.555321
-vt 0.361702 0.555321
-f 22/47/14 23/48/14 21/49/14 18/50/14
-
-v 0.608153 0 -0.73007
-vt -0.276433 0.33185
-v 0.608153 0 -1.08993
-vt -0.276433 0.495423
-vt -0.440006 0.495423
-vt -0.440006 0.33185
-f 24/51/13 25/52/13 23/53/13 22/54/13
-
-vt -0.33185 0.0142759
-vn -0.998666 0.0516433 -0
-vt -0.361702 0.59232
-vt -0.465571 0.59232
-vt -0.495423 0.0142759
-f 24/55/15 19/56/15 20/57/15 25/58/15
-
-vt 0.440006 0.0171378
-vn -1.52886e-017 0.0516433 0.998666
-vt 0.410154 0.595182
-vt 0.306285 0.595182
-vt 0.276433 0.0171378
-f 22/59/16 18/60/16 19/61/16 24/62/16
-
-vt -0.276433 -0.0255853
-vn -1.52886e-017 0.0516433 -0.998666
-vt -0.306285 0.552459
-vt -0.410154 0.552459
-vt -0.440006 -0.0255853
-f 25/63/17 20/64/17 21/65/17 23/66/17
-
-usemtl Fall_Leafs
-vt 0.206818 0.697045
-vn 1 0 -0
-vt 0.620455 0.697045
-vt 0.620455 1.28045
-vn 0.995336 0.0964695 3.71398e-018
-v 1.57617 2.817 -0.455
-vt 0.206818 1.28045
-f 17/67/18 1/68/18 4/69/19 26/70/19
-
-vt 0.206818 1.11904
-vt 0.620455 1.11904
-v 1.24517 4.5085 -1.1739
-vt 0.533591 1.90248
-vn 0.981387 0.192039 7.39332e-018
-v 1.24517 4.5085 -0.6461
-vt 0.293682 1.90248
-f 26/71/19 4/72/19 27/73/20 28/74/20
-
-vt 0.103409 1.08464
-v 0.788083 4.5085 -1.4378
-vt 0.0165455 1.86809
-vn 0.490694 0.192039 -0.849906
-vt -0.223364 1.86809
-vt -0.310227 1.08464
-f 3/75/2 29/76/21 27/77/21 4/78/2
-
-vt -0.310227 1.15343
-vn -0.497668 0.0964695 -0.861986
-v 0.330995 4.5085 -1.1739
-vt -0.397091 1.93688
-vn -0.490694 0.192039 -0.849906
-vt -0.637 1.93688
-vt -0.723864 1.15343
-f 12/79/22 30/80/23 29/81/23 3/82/22
-
-v 0.330995 4.5085 -0.6461
-vt -0.293682 2.04007
-vn -0.981387 0.192039 -5.87097e-016
-vt -0.533591 2.04007
-vt -0.620455 1.25662
-vt -0.206818 1.25662
-f 31/83/24 30/84/24 12/85/7 11/86/7
-
-vt -0.293682 1.50563
-vn -0.680934 0.732345 -5.13467e-017
-v 0.788083 4.9335 -0.91
-vt -0.413636 1.78933
-vt -0.533591 1.50563
-f 31/87/25 32/88/25 30/89/25
-
-v 0.788083 4.5085 -0.3822
-vt 0.223364 1.6368
-vn -0.340467 0.732345 0.589706
-vt 0.103409 1.9205
-vt -0.0165455 1.6368
-f 33/90/26 32/91/26 31/92/26
-
-vt 0.517045 1.65816
-vn 0.340467 0.732345 0.589706
-vt 0.397091 1.37446
-vt 0.637 1.37446
-f 32/93/27 33/94/27 28/95/27
-
-vt 0.723864 1.22223
-vn 0.497668 0.0964695 0.861986
-vt 0.637 2.00567
-vn 0.490694 0.192039 0.849906
-vt 0.397091 2.00567
-vt 0.310227 1.22223
-f 26/96/28 28/97/29 33/98/29 14/99/28
-
-vt 0.310227 1.29102
-vt 0.223364 2.07446
-vn -0.490694 0.192039 0.849906
-vt -0.0165455 2.07446
-vt -0.103409 1.29102
-f 14/100/9 33/101/30 31/102/30 11/103/9
-
-vn 0.5 0 0.866025
-vt 0.723864 0.697045
-vt 0.723864 1.28045
-f 13/22/31 17/104/31 26/105/28 14/23/28
-
-vt 0.533591 0.980952
-vn 0.680934 0.732345 -5.13467e-017
-vt 0.413636 1.26465
-vt 0.293682 0.980952
-f 27/106/32 32/107/32 28/108/32
-
-vt 0.0165455 0.849782
-vn 0.340467 0.732345 -0.589706
-vt -0.103409 1.13348
-vt -0.223364 0.849782
-f 29/109/33 32/110/33 27/111/33
-
-vt -0.397091 1.11212
-vn -0.340467 0.732345 -0.589706
-vt -0.517045 1.39582
-vt -0.637 1.11212
-f 30/112/34 32/113/34 29/114/34
-
-vt -0.723864 0.697045
-vn -0.5 0 -0.866025
-vt -0.723864 1.28045
-f 2/115/35 8/1/35 12/4/22 3/116/22
diff --git a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.mtl b/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.mtl
deleted file mode 100644
index 51e49b9650..0000000000
--- a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.mtl
+++ /dev/null
@@ -1,16 +0,0 @@
-# Blender MTL File: 'Quandtum_BA-2_v1_1.blend'
-# Material Count: 1
-
-newmtl Bot
-Ns 96.078431
-Ka 1.000000 1.000000 1.000000
-Kd 0.640000 0.640000 0.640000
-Ks 1.000000 1.000000 1.000000
-Ni 1.000000
-d 1.000000
-illum 2
-map_Ka textures/Turret-Emission.jpg
-map_Kd textures/Turret-Diffuse.jpg
-map_Bump textures/Turret-Normal.jpg
-map_Ks textures/Turret-Specular.jpg
-map_Ns textures/Turret-Specular.jpg
diff --git a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.obj b/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.obj
deleted file mode 100644
index 1eb5ac9272..0000000000
--- a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.obj
+++ /dev/null
@@ -1,12305 +0,0 @@
-# Blender v2.69 (sub 0) OBJ File: 'Quandtum_BA-2_v1_1.blend'
-# www.blender.org
-mtllib Quandtum_BA-2_v1_1.mtl
-o Bot.Mesh
-v 1.187918 -1.208566 -1.835787
-v 1.214283 -2.337932 -2.085136
-v 1.260280 -1.972362 -2.092242
-v 1.244883 -1.534969 -1.987321
-v 1.364486 -1.256258 -1.668571
-v 1.308682 -2.363430 -1.995737
-v 1.405975 -2.011715 -1.954265
-v 1.420053 -1.582284 -1.821430
-v 1.087162 -2.560631 -2.035301
-v 1.346916 -2.381913 -1.942518
-v 1.436000 -1.290831 -1.569027
-v 1.171437 -2.608611 -1.939058
-v 1.491001 -1.616583 -1.722674
-v 1.464985 -2.040243 -1.872126
-v 1.176600 -2.315488 -2.022191
-v 1.218549 -1.975778 -2.027928
-v 1.203741 -1.560968 -1.928250
-v 1.331250 -1.294212 -1.612260
-v 1.280961 -2.353608 -1.928371
-v 1.371484 -2.021559 -1.888433
-v 1.384762 -1.609924 -1.760863
-v 1.065838 -2.539663 -1.966229
-v 1.338816 -2.385806 -1.864556
-v 1.422199 -1.329201 -1.501505
-v 1.155298 -2.611952 -1.863357
-v 1.474728 -1.647468 -1.652153
-v 1.449890 -2.057932 -1.796968
-v 1.200002 -2.702898 -1.917805
-v 1.422740 -2.462110 -1.922399
-v 1.450668 -1.047202 -1.388864
-v 1.559489 -2.104904 -1.852897
-v 1.061223 -0.969297 -1.590438
-v 1.599714 -1.648835 -1.696641
-v 1.316506 -1.039091 -1.331341
-v 1.229836 -1.009296 -1.434471
-v 1.128464 -1.018202 -1.705166
-v 1.293968 -1.062904 -1.548429
-v 1.361000 -1.095311 -1.455123
-v 1.263641 -1.104268 -1.493734
-v 1.351737 -1.135795 -1.388062
-v 1.541195 -1.281839 -1.525198
-v 0.960262 -1.205779 -1.928953
-v 1.092571 -2.336442 -2.134946
-v 1.072430 -1.970062 -2.169119
-v 1.019030 -1.532205 -2.079750
-v 0.716176 -1.248321 -1.933888
-v 0.962075 -2.359186 -2.137584
-v 0.871023 -2.005166 -2.173191
-v 0.776878 -1.574409 -2.084645
-v 0.897126 -2.376407 -2.126591
-v 0.594692 -1.280531 -1.913326
-v 1.015041 -2.606696 -2.003062
-v 0.656356 -1.606364 -2.064247
-v 0.770780 -2.031744 -2.156225
-v 1.075783 -2.314254 -2.063450
-v 1.057024 -1.973800 -2.094031
-v 1.006406 -1.558553 -2.009008
-v 0.699599 -1.286479 -1.870759
-v 0.934820 -2.349370 -2.070027
-v 0.849257 -2.015166 -2.102151
-v 0.759000 -1.602263 -2.016952
-v 1.143589 -2.561322 -2.012209
-v 0.848169 -2.379799 -2.065350
-v 0.556394 -1.318601 -1.855829
-v 0.973411 -2.609725 -1.937794
-v 0.617874 -1.636978 -2.002815
-v 0.728485 -2.049100 -2.092198
-v 0.977802 -2.700177 -2.008739
-v 0.827289 -2.454819 -2.166083
-v 0.463054 -1.035111 -1.793038
-v 0.688576 -2.094242 -2.209312
-v 0.883613 -0.967122 -1.663124
-v 0.559933 -1.636105 -2.122165
-v 0.518541 -1.029322 -1.657903
-v 0.653243 -1.002236 -1.670437
-v 0.915074 -1.015589 -1.792494
-v 0.686285 -1.055465 -1.797119
-v 0.572414 -1.085656 -1.777847
-v 0.668695 -1.096984 -1.737211
-v 0.531159 -1.125748 -1.723878
-v 0.489167 -1.268959 -1.955734
-v 1.110811 -2.540214 -1.947824
-v 1.026663 -2.571176 -2.036524
-v 1.187353 -2.573143 -1.970763
-v 0.996289 -2.560848 -1.969903
-v 1.162521 -2.562883 -1.901873
-v 1.078477 -1.201310 -1.892914
-v 1.136309 -1.527771 -2.043996
-v 1.169975 -1.966375 -2.139381
-v 1.155773 -2.334053 -2.115678
-v 1.284587 -1.227049 -1.760147
-v 1.340787 -1.553306 -1.912281
-v 1.340047 -1.987613 -2.029829
-v 1.265966 -2.347814 -2.044697
-v 1.217022 -1.337758 -1.906325
-v 1.098737 -0.923019 -1.639856
-v 1.179533 -2.473479 -2.054002
-v 1.242860 -2.166841 -2.099814
-v 1.262352 -1.759928 -2.056663
-v 1.396007 -1.386103 -1.736821
-v 1.258708 -0.966228 -1.488358
-v 1.246897 -2.491674 -1.990206
-v 1.364459 -2.199685 -1.984657
-v 1.426687 -1.804316 -1.901032
-v 1.110583 -2.575928 -2.012491
-v 1.507285 -1.256169 -1.591771
-v 1.565490 -1.623118 -1.763035
-v 1.524171 -2.078762 -1.918540
-v 1.386359 -2.434413 -1.986806
-v 1.194369 -2.666681 -1.980072
-v 1.070510 -2.689307 -1.917963
-v 1.265770 -2.511589 -1.950470
-v 1.413709 -2.223495 -1.916103
-v 1.468500 -1.421149 -1.635915
-v 1.323499 -0.997551 -1.398171
-v 1.493247 -1.836494 -1.808384
-v 1.108880 -1.554659 -1.977778
-v 1.140903 -1.970580 -2.068469
-v 1.128142 -2.312219 -2.047508
-v 1.247874 -1.262520 -1.693531
-v 1.294524 -1.578913 -1.857065
-v 1.294047 -1.991927 -1.969039
-v 1.225943 -2.327979 -1.983734
-v 1.171964 -1.385746 -1.855236
-v 1.144782 -2.444305 -1.992006
-v 1.202458 -2.157926 -2.035218
-v 1.220451 -1.774855 -1.994285
-v 1.361531 -1.420626 -1.679042
-v 1.222582 -2.476504 -1.922601
-v 1.332361 -2.200018 -1.917532
-v 1.391296 -1.823203 -1.837426
-v 1.083029 -2.558944 -1.944655
-v 1.040718 -2.699124 -1.845459
-v 1.258468 -2.511830 -1.872606
-v 1.401053 -2.234350 -1.839309
-v 1.452947 -1.457120 -1.567527
-v 1.477168 -1.860866 -1.735320
-v 0.975849 -0.963651 -1.635029
-v 1.144347 -0.984398 -1.525028
-v 1.060535 -2.792873 -1.896688
-v 1.405405 -0.929884 -1.320697
-v 1.578456 -1.432248 -1.602142
-v 1.596285 -1.887691 -1.787343
-v 1.498562 -2.297402 -1.896762
-v 1.325420 -2.597713 -1.929512
-v 1.025881 -1.011400 -1.758713
-v 1.219075 -1.035526 -1.634266
-v 1.416718 -1.021549 -1.455423
-v 1.188463 -1.087421 -1.581340
-v 1.158191 -1.113384 -1.770476
-v 1.329227 -1.159581 -1.608500
-v 1.398500 -1.193071 -1.512075
-v 1.297446 -1.199240 -1.552997
-v 1.386968 -1.232498 -1.444784
-v 1.495931 -1.164521 -1.457031
-v 0.837939 -1.221580 -1.942935
-v 0.897677 -1.547881 -2.093620
-v 0.971496 -1.983101 -2.180656
-v 1.027174 -2.344890 -2.142421
-v 0.986251 -1.334933 -2.000767
-v 0.892480 -0.920494 -1.724265
-v 1.092677 -2.472415 -2.089547
-v 1.086078 -2.164921 -2.163977
-v 1.050467 -1.757334 -2.143375
-v 0.738824 -1.378057 -2.005769
-v 0.671339 -0.959037 -1.728736
-v 0.999554 -2.488646 -2.091429
-v 0.917981 -2.194219 -2.167375
-v 0.823292 -1.796929 -2.147968
-v 0.560545 -1.244579 -1.979218
-v 0.631410 -1.611682 -2.145301
-v 0.760315 -2.069410 -2.231143
-v 0.898952 -2.428447 -2.186274
-v 1.026226 -2.664622 -2.048883
-v 0.957828 -2.507818 -2.076493
-v 0.834317 -2.216401 -2.153215
-v 0.615678 -1.410708 -1.984926
-v 0.561274 -0.988219 -1.710107
-v 0.710224 -1.826907 -2.128831
-v 0.816670 -1.257241 -1.869998
-v 0.891415 -1.573978 -2.022035
-v 0.961585 -1.987857 -2.105098
-v 1.013387 -2.325377 -2.070721
-v 0.981553 -1.383415 -1.933160
-v 1.074604 -2.443445 -2.020727
-v 1.069786 -2.156301 -2.089513
-v 1.036299 -1.772601 -2.069648
-v 0.722176 -1.412799 -1.940694
-v 0.969815 -2.473409 -2.026044
-v 0.893802 -2.194649 -2.097010
-v 0.803539 -1.816007 -2.077962
-v 0.908447 -2.507545 -2.015850
-v 0.789280 -2.226860 -2.089673
-v 0.578073 -1.446409 -1.925564
-v 0.669959 -1.850984 -2.065666
-v 0.778187 -0.979915 -1.674877
-v 0.449998 -0.918187 -1.711691
-v 0.513386 -1.419208 -2.038015
-v 0.620948 -1.875750 -2.186494
-v 0.758721 -2.288345 -2.199537
-v 0.898807 -2.592490 -2.104101
-v 0.800417 -1.030400 -1.805600
-v 0.534451 -1.010748 -1.816485
-v 0.784051 -1.082470 -1.746843
-v 0.937668 -1.110684 -1.860724
-v 0.701230 -1.151893 -1.865504
-v 0.583553 -1.183093 -1.845587
-v 0.684147 -1.191731 -1.803985
-v 0.543776 -1.222175 -1.789854
-v 0.476111 -1.152035 -1.874386
-v 1.058560 -2.580313 -2.023309
-v 1.155160 -2.581495 -1.983777
-v 1.036223 -2.565681 -1.953928
-v 1.122755 -2.566741 -1.918515
-v 1.186319 -0.939764 -1.571326
-v 1.315015 -1.356494 -1.829651
-v 1.352324 -1.777130 -1.986264
-v 1.309434 -2.179569 -2.047723
-v 1.213316 -2.484428 -2.022723
-v 1.371435 -0.904239 -1.387250
-v 1.544477 -1.406562 -1.668674
-v 1.561621 -1.861848 -1.853456
-v 1.462599 -2.270678 -1.961814
-v 1.296576 -2.567304 -1.993048
-v 1.260426 -1.370523 -1.776037
-v 1.305648 -1.792285 -1.927694
-v 1.265539 -2.172329 -1.986065
-v 1.177577 -2.459306 -1.961424
-v 1.251831 -1.131287 -1.697207
-v 1.462002 -1.138859 -1.523597
-v 1.218154 -1.174971 -1.637441
-v 0.999583 -0.916445 -1.691613
-v 1.106083 -1.330403 -1.964234
-v 1.160492 -1.753175 -2.109833
-v 1.167490 -2.161843 -2.139157
-v 1.136309 -2.474812 -2.072328
-v 0.781657 -0.934810 -1.736932
-v 0.862254 -1.350950 -2.014940
-v 0.936619 -1.772041 -2.156388
-v 1.001837 -2.175803 -2.173605
-v 1.046438 -2.482385 -2.091017
-v 1.085950 -2.749303 -1.957488
-v 0.521403 -0.893832 -1.735119
-v 0.584785 -1.394812 -2.061422
-v 0.692545 -1.851208 -2.209120
-v 0.830519 -2.262939 -2.220489
-v 0.964545 -2.563239 -2.128929
-v 1.080322 -1.380102 -1.902771
-v 1.131926 -1.768949 -2.040502
-v 1.138684 -2.153639 -2.068523
-v 1.109512 -2.447071 -2.006020
-v 0.863292 -1.365661 -1.938561
-v 0.928519 -1.787668 -2.082032
-v 0.990059 -2.168957 -2.098804
-v 1.029473 -2.457493 -2.022035
-v 1.052179 -1.106355 -1.825813
-v 0.819178 -1.125990 -1.874267
-v 0.547498 -1.127663 -1.897852
-v 0.800375 -1.169856 -1.808414
-v 0.880985 -1.086471 -1.688243
-v 0.918822 -1.065924 -1.651006
-v 0.969587 -1.059170 -1.622582
-v 1.025551 -1.067239 -1.607299
-v 1.078193 -1.088900 -1.607484
-v 0.858945 -1.125482 -1.635599
-v 0.896604 -1.100776 -1.597800
-v 0.947307 -1.092562 -1.569179
-v 1.003333 -1.102091 -1.554094
-v 1.056154 -1.127912 -1.554839
-v 0.848603 -1.157603 -1.611310
-v 0.883091 -1.142744 -1.566065
-v 0.932680 -1.137988 -1.534830
-v 0.989820 -1.144059 -1.522359
-v 1.045811 -1.160033 -1.530550
-v 0.843600 -1.197380 -1.600290
-v 0.876555 -1.194715 -1.551667
-v 0.925605 -1.194241 -1.519244
-v 0.983283 -1.196030 -1.507960
-v 1.040808 -1.199809 -1.519530
-v 0.844698 -1.238756 -1.604215
-v 0.877989 -1.248776 -1.556796
-v 0.927158 -1.252756 -1.524796
-v 0.984717 -1.250091 -1.513089
-v 1.041906 -1.241186 -1.523456
-v 0.851730 -1.275434 -1.622490
-v 0.887177 -1.296698 -1.580673
-v 0.937102 -1.304626 -1.550640
-v 0.993905 -1.298013 -1.536966
-v 1.048938 -1.277864 -1.541730
-v 0.863625 -1.301829 -1.652331
-v 0.902718 -1.331185 -1.619661
-v 0.953924 -1.341954 -1.592842
-v 1.009447 -1.332499 -1.575955
-v 1.060833 -1.304259 -1.571571
-v 0.878572 -1.313923 -1.689195
-v 0.922248 -1.346986 -1.667827
-v 0.975063 -1.359057 -1.644976
-v 1.028976 -1.348300 -1.624120
-v 1.075780 -1.316352 -1.608436
-v 0.894296 -1.309874 -1.727470
-v 0.942793 -1.341696 -1.717836
-v 0.997300 -1.353332 -1.699105
-v 1.049521 -1.343010 -1.674130
-v 1.091505 -1.312304 -1.646711
-v 0.908404 -1.290299 -1.761330
-v 0.961225 -1.316120 -1.762076
-v 1.017251 -1.325648 -1.746990
-v 1.067953 -1.317435 -1.718369
-v 1.105612 -1.292729 -1.680571
-v 0.930828 -1.228574 -1.814231
-v 0.983945 -1.251590 -1.815616
-v 1.040075 -1.260134 -1.800755
-v 1.090673 -1.252905 -1.771910
-v 1.128036 -1.231003 -1.733472
-v 1.090653 -1.124426 -1.638981
-v 1.103114 -1.159952 -1.670478
-v 1.115575 -1.195478 -1.701975
-v 1.068518 -1.169116 -1.586272
-v 1.080883 -1.210320 -1.617705
-v 1.093247 -1.251524 -1.649138
-v 0.893446 -1.121997 -1.719740
-v 0.905906 -1.157522 -1.751237
-v 0.918367 -1.193048 -1.782734
-v 0.871310 -1.166686 -1.667032
-v 0.883675 -1.207890 -1.698464
-v 0.896039 -1.249095 -1.729897
-v -0.000000 0.000000 0.559937
-v -0.038460 0.092850 0.987525
-v 0.053557 0.129300 0.559937
-v -0.092850 0.038460 0.987525
-v 0.129299 0.053558 0.559937
-v -0.038460 -0.092850 0.987525
-v 0.129299 -0.053557 0.559937
-v 0.092850 -0.038459 0.987525
-v 0.053557 -0.129299 0.559937
-v -0.092850 -0.038459 0.987525
-v -0.053558 -0.129299 0.559937
-v 0.038459 -0.092850 0.987525
-v -0.129300 -0.053557 0.559937
-v 0.038459 0.092850 0.987525
-v -0.129300 0.053558 0.559937
-v 0.092850 0.038460 0.987525
-v -0.053558 0.129300 0.559937
-v -0.032401 -0.078221 0.950122
-v -0.078222 0.032401 0.950122
-v 0.078221 0.032401 0.950122
-v 0.032400 0.078222 0.950122
-v 0.032400 -0.078221 0.950122
-v -0.032401 0.078222 0.950122
-v -0.078222 -0.032400 0.950122
-v 0.078221 -0.032400 0.950122
-v 0.070126 -0.029047 0.962019
-v -0.029048 -0.070126 0.962019
-v -0.070127 0.029047 0.962019
-v 0.070126 0.029048 0.962019
-v 0.029047 0.070127 0.962019
-v 0.029047 -0.070126 0.962019
-v -0.029048 0.070127 0.962019
-v -0.070127 -0.029047 0.962019
-v 0.017129 0.041354 0.978453
-v 0.041354 0.017130 0.978453
-v 0.041354 -0.017129 0.978453
-v 0.017129 -0.041354 0.978453
-v -0.017130 -0.041354 0.978453
-v -0.041354 -0.017129 0.978453
-v -0.041354 0.017130 0.978453
-v -0.017130 0.041354 0.978453
-v -0.071287 0.071287 0.987525
-v 0.053557 0.129300 0.987525
-v -0.100816 0.000000 0.987525
-v -0.000000 0.140392 0.559937
-v 0.099272 0.099272 0.559937
-v -0.071287 -0.071287 0.987525
-v 0.129299 0.053558 0.987525
-v 0.140391 0.000000 0.559937
-v -0.000000 -0.100815 0.987525
-v 0.129299 -0.053557 0.987525
-v 0.099272 -0.099272 0.559937
-v 0.071287 -0.071287 0.987525
-v 0.053557 -0.129299 0.987525
-v -0.000000 -0.140392 0.559937
-v -0.000000 0.100815 0.987525
-v -0.053558 -0.129299 0.987525
-v -0.099272 -0.099272 0.559937
-v 0.100815 0.000000 0.987525
-v -0.129300 -0.053557 0.987525
-v -0.140392 0.000000 0.559937
-v 0.071287 0.071287 0.987525
-v -0.129300 0.053558 0.987525
-v -0.099272 0.099272 0.559937
-v -0.053558 0.129300 0.987525
-v 0.060056 0.060056 0.950122
-v 0.038459 0.092850 0.950122
-v -0.000000 -0.084932 0.950122
-v -0.000000 0.084932 0.950122
-v 0.092850 0.038460 0.950122
-v -0.060056 0.060056 0.950122
-v 0.092850 -0.038459 0.950122
-v -0.084932 0.000000 0.950122
-v 0.038459 -0.092850 0.950122
-v -0.060056 -0.060056 0.950122
-v -0.038460 -0.092850 0.950122
-v 0.060056 -0.060056 0.950122
-v -0.092850 -0.038459 0.950122
-v 0.084932 0.000000 0.950122
-v -0.092850 0.038460 0.950122
-v -0.038460 0.092850 0.950122
-v 0.076142 0.000000 0.962019
-v 0.053840 0.053841 0.962019
-v -0.000000 -0.076142 0.962019
-v 0.053840 -0.053840 0.962019
-v -0.000000 0.076142 0.962019
-v -0.053841 0.053841 0.962019
-v -0.076142 0.000000 0.962019
-v -0.053841 -0.053840 0.962019
-v 0.027467 0.027468 0.979587
-v 0.024391 0.058886 0.972077
-v -0.000000 0.038846 0.979587
-v 0.038845 0.000000 0.979587
-v 0.058885 0.024391 0.972077
-v 0.027467 -0.027468 0.979587
-v 0.058885 -0.024391 0.972077
-v -0.000000 -0.038845 0.979587
-v 0.024391 -0.058885 0.972077
-v -0.027468 -0.027468 0.979587
-v -0.024391 -0.058885 0.972077
-v -0.038846 0.000000 0.979587
-v -0.058886 -0.024391 0.972077
-v -0.027468 0.027468 0.979587
-v -0.058886 0.024391 0.972077
-v -0.024391 0.058886 0.972077
-v -0.000000 0.140392 0.987525
-v 0.099272 0.099272 0.987525
-v 0.140391 0.000000 0.987525
-v 0.099272 -0.099272 0.987525
-v -0.000000 -0.140392 0.987525
-v -0.099272 -0.099272 0.987525
-v -0.140392 0.000000 0.987525
-v -0.099272 0.099272 0.987525
-v -0.000000 0.100815 0.950122
-v 0.071287 0.071287 0.950122
-v 0.100815 0.000000 0.950122
-v 0.071287 -0.071287 0.950122
-v -0.000000 -0.100815 0.950122
-v -0.071287 -0.071287 0.950122
-v -0.100816 0.000000 0.950122
-v -0.071287 0.071287 0.950122
-v -0.000000 0.000000 0.984690
-v -0.000000 0.062423 0.972360
-v 0.044139 0.044140 0.972360
-v 0.062423 0.000000 0.972360
-v 0.044139 -0.044139 0.972360
-v -0.000000 -0.062423 0.972360
-v -0.044140 -0.044139 0.972360
-v -0.062423 0.000000 0.972360
-v -0.044140 0.044140 0.972360
-v 1.750524 -1.273227 0.726173
-v 1.688630 -2.424659 0.632832
-v 1.788455 -2.081270 0.721865
-v 1.804838 -1.632543 0.752422
-v 1.562458 -1.290732 0.886599
-v 1.588084 -2.434017 0.718601
-v 1.633272 -2.095714 0.854240
-v 1.618261 -1.649909 0.911577
-v 1.592413 -2.611653 0.477869
-v 1.528859 -2.440978 0.751459
-v 1.451680 -1.303751 0.948059
-v 1.480184 -2.639663 0.550582
-v 1.508361 -1.662825 0.972550
-v 1.541863 -2.106457 0.904954
-v 1.637270 -2.382299 0.594706
-v 1.729267 -2.062886 0.676606
-v 1.744654 -1.637260 0.705372
-v 1.501095 -1.308424 0.846131
-v 1.528297 -2.403517 0.688628
-v 1.570316 -2.083784 0.815322
-v 1.555716 -1.656368 0.870055
-v 1.533404 -2.570652 0.455460
-v 1.453615 -2.422652 0.738755
-v 1.377808 -1.320705 0.926207
-v 1.407932 -2.620632 0.530094
-v 1.433799 -1.671554 0.948967
-v 1.466244 -2.101408 0.883841
-v 1.432393 -2.726928 0.566658
-v 1.481929 -2.519735 0.816115
-v 1.341930 -1.022926 0.981547
-v 1.498339 -2.172434 0.990009
-v 1.588851 -0.964844 0.615453
-v 1.465696 -1.697334 1.075143
-v 1.300067 -0.986233 0.846361
-v 1.414295 -0.977267 0.769504
-v 1.680466 -1.049562 0.682571
-v 1.504186 -1.065970 0.832944
-v 1.400350 -1.078173 0.890552
-v 1.443228 -1.087652 0.795047
-v 1.325981 -1.097723 0.872977
-v 1.403141 -1.293589 1.051057
-v 1.859843 -1.273468 0.505800
-v 1.747076 -2.424787 0.515014
-v 1.878659 -2.081469 0.540024
-v 1.913291 -1.632782 0.533794
-v 1.873773 -1.291418 0.259030
-v 1.754523 -2.434384 0.383083
-v 1.890154 -2.096280 0.336402
-v 1.927111 -1.650590 0.288978
-v 1.744845 -2.441453 0.316059
-v 1.855672 -1.304641 0.133666
-v 1.555284 -2.639828 0.399190
-v 1.909153 -1.663708 0.164607
-v 1.875217 -2.107191 0.232958
-v 1.685681 -2.382406 0.497114
-v 1.806830 -2.063057 0.520249
-v 1.839414 -1.637469 0.514350
-v 1.804411 -1.309092 0.234688
-v 1.694512 -2.403883 0.353561
-v 1.821087 -2.084337 0.309802
-v 1.856204 -1.657030 0.264312
-v 1.565317 -2.611593 0.532491
-v 1.689221 -2.423171 0.263804
-v 1.793563 -1.321621 0.088100
-v 1.495274 -2.620825 0.354026
-v 1.845256 -1.672461 0.119524
-v 1.812660 -2.102171 0.185515
-v 1.539093 -2.727163 0.351566
-v 1.767862 -2.520365 0.239713
-v 1.816177 -1.023971 0.025529
-v 1.916547 -2.173355 0.146958
-v 1.674139 -0.965032 0.443524
-v 1.964993 -1.698434 0.068626
-v 1.683246 -0.987077 0.073925
-v 1.691172 -0.977877 0.211358
-v 1.782935 -1.049787 0.476008
-v 1.795992 -1.066613 0.244702
-v 1.779025 -1.079007 0.127194
-v 1.728918 -1.088282 0.219135
-v 1.720018 -1.098592 0.078650
-v 1.908320 -1.294702 0.032684
-v 1.511807 -2.570604 0.498994
-v 1.595865 -2.616102 0.416704
-v 1.518702 -2.615932 0.572254
-v 1.537150 -2.585058 0.384202
-v 1.457326 -2.584882 0.545116
-v 1.816498 -1.271044 0.621597
-v 1.870289 -1.630377 0.648673
-v 1.842893 -2.079468 0.635574
-v 1.723902 -2.423491 0.576922
-v 1.664863 -1.279847 0.815763
-v 1.719856 -1.639110 0.841302
-v 1.717772 -2.086732 0.795790
-v 1.642833 -2.428198 0.680730
-v 1.781617 -1.418972 0.743636
-v 1.645438 -0.937729 0.660771
-v 1.625724 -2.542465 0.580733
-v 1.745664 -2.267739 0.682105
-v 1.810385 -1.868466 0.747006
-v 1.590977 -1.436717 0.906257
-v 1.475050 -0.953589 0.806117
-v 1.553973 -2.549143 0.641939
-v 1.616147 -2.279794 0.792587
-v 1.635348 -1.884759 0.896318
-v 1.564485 -2.622389 0.498059
-v 1.476735 -1.283818 1.024054
-v 1.539156 -1.687438 1.047824
-v 1.571283 -2.161819 0.961616
-v 1.554187 -2.507191 0.786784
-v 1.502275 -2.708683 0.568701
-v 1.447001 -2.701174 0.439865
-v 1.508944 -2.559236 0.656160
-v 1.539856 -2.288760 0.834913
-v 1.478683 -1.449914 0.968558
-v 1.374685 -0.965384 0.861799
-v 1.532244 -1.896875 0.953520
-v 1.801855 -1.635351 0.614731
-v 1.776097 -2.061292 0.602419
-v 1.666518 -2.381285 0.548410
-v 1.594551 -1.292010 0.771582
-v 1.663909 -1.643998 0.789429
-v 1.662090 -2.069748 0.746384
-v 1.592881 -2.388645 0.640084
-v 1.723603 -1.446522 0.690545
-v 1.576812 -2.494213 0.546359
-v 1.689361 -2.237608 0.639600
-v 1.750021 -1.861611 0.700329
-v 1.529217 -1.450603 0.864883
-v 1.495088 -2.513795 0.615960
-v 1.554268 -2.258646 0.757091
-v 1.572210 -1.882001 0.855563
-v 1.506130 -2.584922 0.469070
-v 1.377249 -2.687864 0.405249
-v 1.434695 -2.537522 0.644682
-v 1.464272 -2.276967 0.816935
-v 1.404763 -1.464162 0.945204
-v 1.456948 -1.898697 0.930758
-v 1.640337 -0.963162 0.533873
-v 1.515048 -0.969678 0.692563
-v 1.399961 -2.793507 0.416631
-v 1.311324 -0.887595 0.946793
-v 1.434083 -1.462191 1.074456
-v 1.489831 -1.950316 1.048525
-v 1.494583 -2.362603 0.909304
-v 1.460993 -2.641840 0.704036
-v 1.742306 -1.047515 0.584548
-v 1.600174 -1.055766 0.766547
-v 1.415510 -1.013164 0.954502
-v 1.538149 -1.087983 0.727222
-v 1.715495 -1.161394 0.704372
-v 1.533322 -1.178351 0.859772
-v 1.426015 -1.190962 0.919306
-v 1.472161 -1.198038 0.820589
-v 1.351894 -1.209214 0.899592
-v 1.372535 -1.158258 1.016302
-v 1.879341 -1.280319 0.383404
-v 1.932635 -1.639579 0.412367
-v 1.894748 -2.087122 0.439029
-v 1.757500 -2.428450 0.449577
-v 1.892432 -1.419216 0.520246
-v 1.744481 -0.937947 0.461112
-v 1.667431 -2.542557 0.496656
-v 1.820950 -2.267905 0.530338
-v 1.912131 -1.868690 0.541900
-v 1.906553 -1.437412 0.270098
-v 1.757102 -0.954210 0.237538
-v 1.672746 -2.549405 0.402509
-v 1.830543 -2.280267 0.360392
-v 1.925095 -1.885397 0.312226
-v 1.931355 -1.284820 0.107601
-v 1.987697 -1.688426 0.143626
-v 1.938083 -2.162627 0.222197
-v 1.788237 -2.507706 0.314969
-v 1.583017 -2.708861 0.405937
-v 1.656816 -2.559562 0.358069
-v 1.818077 -2.289373 0.274056
-v 1.888204 -1.450816 0.143019
-v 1.740702 -0.966190 0.123959
-v 1.908248 -1.897704 0.195547
-v 1.801613 -1.292466 0.354173
-v 1.857480 -1.644425 0.399216
-v 1.821736 -2.070100 0.424558
-v 1.694950 -2.388870 0.434328
-v 1.815038 -1.446724 0.506225
-v 1.610512 -2.494287 0.478426
-v 1.753069 -2.237749 0.511172
-v 1.838450 -1.861805 0.522068
-v 1.836232 -1.451279 0.245982
-v 1.616465 -2.514063 0.371280
-v 1.764862 -2.259110 0.332563
-v 1.854448 -1.882623 0.286609
-v 1.602773 -2.537892 0.305859
-v 1.758042 -2.277614 0.224733
-v 1.824873 -1.465088 0.098319
-v 1.844566 -1.899551 0.149372
-v 1.690876 -0.970065 0.338116
-v 1.770106 -0.888606 0.021951
-v 1.945524 -1.463318 0.043459
-v 1.958183 -1.951348 0.104391
-v 1.849851 -2.363385 0.193131
-v 1.665851 -2.642292 0.291070
-v 1.801212 -1.056209 0.361282
-v 1.839171 -1.014097 0.100459
-v 1.732345 -1.088411 0.335747
-v 1.821389 -1.161628 0.490904
-v 1.834883 -1.179016 0.251866
-v 1.817348 -1.191824 0.130430
-v 1.766664 -1.198687 0.226911
-v 1.756791 -1.210106 0.083375
-v 1.862249 -1.159337 0.029107
-v 1.578077 -2.624395 0.446543
-v 1.531690 -2.624293 0.540052
-v 1.517176 -2.589275 0.422366
-v 1.475624 -2.589183 0.506129
-v 1.567830 -0.943727 0.741939
-v 1.694784 -1.425682 0.834451
-v 1.730659 -1.874627 0.830389
-v 1.686672 -2.272298 0.743803
-v 1.589944 -2.547755 0.611252
-v 1.384897 -0.877837 0.919726
-v 1.507647 -1.452387 1.047384
-v 1.563092 -1.940180 1.020770
-v 1.567168 -2.351205 0.880306
-v 1.532501 -2.627206 0.682448
-v 1.644141 -1.419104 0.775773
-v 1.674293 -1.868556 0.779157
-v 1.633039 -2.244227 0.697797
-v 1.540711 -2.503473 0.575458
-v 1.632519 -1.167807 0.791155
-v 1.446123 -1.148491 0.989278
-v 1.566356 -1.189997 0.749388
-v 1.705210 -0.935751 0.566024
-v 1.848493 -1.416759 0.637628
-v 1.871788 -1.866434 0.649675
-v 1.791099 -2.266235 0.610085
-v 1.646598 -2.544466 0.538707
-v 1.762147 -0.944155 0.350222
-v 1.912197 -1.426161 0.396175
-v 1.930278 -1.875067 0.427984
-v 1.834378 -2.272623 0.446046
-v 1.670078 -2.547931 0.449713
-v 1.467779 -2.770892 0.450249
-v 1.793078 -0.878736 0.096888
-v 1.968487 -1.453402 0.118393
-v 1.980418 -1.941099 0.179496
-v 1.870690 -2.351874 0.268448
-v 1.691941 -2.627557 0.361040
-v 1.778443 -1.445025 0.602909
-v 1.803403 -1.859812 0.615744
-v 1.727836 -2.236285 0.578669
-v 1.592498 -2.497196 0.511818
-v 1.834842 -1.419524 0.391344
-v 1.855389 -1.868955 0.414092
-v 1.765323 -2.244518 0.431130
-v 1.611829 -2.503630 0.432092
-v 1.779402 -1.159279 0.603072
-v 1.840277 -1.168264 0.372343
-v 1.885263 -1.149459 0.104030
-v 1.766972 -1.190439 0.344974
-v 0.874137 -0.072697 0.644137
-v 0.924090 -0.122650 0.644137
-v 0.924090 -0.193295 0.644137
-v 0.838814 -0.157973 0.693786
-v 0.888640 -0.178611 0.838418
-v 0.788989 -0.178611 0.838418
-v 0.818176 -0.108147 0.838418
-v 0.888640 -0.137335 0.838418
-v 0.788989 -0.137335 0.838418
-v 1.093560 0.292984 -0.121358
-v 1.093560 0.121358 -0.292984
-v 1.093560 -0.121358 -0.292984
-v 1.093560 -0.292984 -0.121358
-v 1.093560 -0.292984 0.121358
-v 0.874137 -0.243249 0.838418
-v 1.093560 0.060866 0.332097
-v 1.173825 0.000000 -0.145497
-v 1.173825 -0.145497 0.000000
-v 1.173825 0.145498 0.000000
-v 1.093560 0.292984 0.121358
-v 0.753538 -0.122650 0.838418
-v 0.749101 -0.380203 -0.157485
-v 1.025283 0.089448 0.477009
-v 0.955232 -0.089447 0.477009
-v 0.851475 -0.416358 -0.462306
-v 0.851475 -0.098271 -0.685024
-v 0.851475 0.351573 -0.685024
-v 0.851475 0.669660 -0.462306
-v 1.025283 0.430563 0.167312
-v 1.025283 -0.430563 0.167312
-v 1.003557 -0.165728 -0.464350
-v 1.003557 0.454155 -0.219507
-v 0.955232 -0.430563 0.167312
-v 1.025283 -0.089447 0.477009
-v 0.818176 -0.207798 0.838418
-v 0.859453 -0.108147 0.838418
-v 0.859453 -0.207798 0.838418
-v 0.803492 -0.243249 0.838418
-v 0.924090 -0.122650 0.838418
-v 0.753538 -0.193295 0.838418
-v 0.803492 -0.072697 0.838418
-v 0.874137 -0.072697 0.838418
-v 0.924090 -0.193295 0.838418
-v 0.788989 0.137335 0.838418
-v 0.874137 0.243249 0.644137
-v 0.859453 0.207799 0.838418
-v 0.924090 0.193296 0.644137
-v 0.859453 0.108148 0.838418
-v 0.924090 0.122651 0.644137
-v 0.888640 0.178612 0.838418
-v 0.874137 0.072697 0.644137
-v 0.818176 0.207799 0.838418
-v 0.803492 0.072697 0.644137
-v 0.788989 0.178612 0.838418
-v 0.753538 0.122651 0.644137
-v 0.818176 0.108148 0.838418
-v 0.753538 0.193296 0.644137
-v 0.888640 0.137335 0.838418
-v 0.803492 0.243249 0.644137
-v 0.838814 0.157973 0.693786
-v 0.888640 0.178611 0.644137
-v 0.888640 0.137335 0.644137
-v 0.859453 0.108148 0.644137
-v 0.818176 0.108148 0.644137
-v 0.788989 0.137335 0.644137
-v 0.788989 0.178611 0.644137
-v 0.818176 0.207798 0.644137
-v 0.859453 0.207798 0.644137
-v 0.897023 -0.380203 0.157485
-v 0.897023 -0.380203 -0.157485
-v 0.897023 -0.157485 -0.380203
-v 0.897023 0.157485 -0.380203
-v 0.897023 0.380203 -0.157485
-v 0.897023 0.380203 0.157485
-v 0.878238 0.054073 0.438727
-v 0.921936 0.108160 0.427070
-v 0.921936 0.207541 0.386581
-v 0.955232 0.267793 0.403136
-v 0.955232 0.430563 0.167312
-v 0.878238 0.261384 0.354425
-v 1.093560 0.182224 0.281828
-v 0.803492 -0.072697 0.644137
-v 0.753538 -0.122650 0.644137
-v 0.753538 -0.193295 0.644137
-v 0.803492 -0.243249 0.644137
-v 0.874137 -0.243249 0.644137
-v 0.888640 -0.137334 0.423181
-v 0.888640 -0.178611 0.407436
-v 0.859453 -0.207797 0.393878
-v 0.818176 -0.207797 0.393878
-v 0.788989 -0.178611 0.407436
-v 0.788989 -0.137334 0.423181
-v 0.818176 -0.108147 0.432018
-v 0.859453 -0.108147 0.432018
-v 1.173825 0.063989 0.159232
-v 1.093560 -0.060866 0.332097
-v 0.878238 -0.054073 0.438727
-v 0.921936 -0.108160 0.427070
-v 0.921936 -0.207541 0.386581
-v 1.003557 0.197391 -0.464350
-v 0.878238 -0.261384 0.354425
-v 1.093560 -0.182224 0.281829
-v 0.749101 -0.380203 0.157485
-v 0.749101 -0.157485 -0.380203
-v 0.749101 0.157485 -0.380203
-v 0.749101 0.380203 -0.157485
-v 0.749101 0.380203 0.157485
-v 0.783638 0.054073 0.438727
-v 0.724188 0.108160 0.427070
-v 0.724188 0.207541 0.386581
-v 0.783638 0.261384 0.354425
-v 0.783638 -0.054073 0.438727
-v 0.724188 -0.108160 0.427070
-v 0.724188 -0.207541 0.386581
-v 0.783638 -0.261384 0.354425
-v 1.025283 0.267793 0.403136
-v 1.025283 -0.267792 0.403136
-v 0.933506 -0.422492 -0.219507
-v 1.003557 -0.422492 -0.219507
-v 0.933506 -0.165728 -0.464350
-v 0.955232 0.089448 0.477009
-v 0.933506 0.197391 -0.464350
-v 0.933506 0.454155 -0.219507
-v 0.955232 -0.267792 0.403136
-v 0.868328 -0.423461 -0.325842
-v 0.868328 -0.138308 -0.563310
-v 0.868327 0.264959 -0.563310
-v 0.868327 0.550112 -0.325842
-v 0.938379 0.550112 -0.325842
-v 0.938379 0.264959 -0.563310
-v 0.938379 -0.138308 -0.563310
-v 0.938379 -0.423461 -0.325842
-v 0.938379 -0.506980 -0.157927
-v 0.938379 0.633631 -0.157927
-v 1.173825 -0.063988 0.159232
-v 0.659388 0.000000 0.013883
-v 0.818176 -0.108147 0.693786
-v 0.859453 -0.108147 0.693786
-v 0.888640 -0.137334 0.693786
-v 0.888640 -0.178611 0.693786
-v 0.859453 -0.207798 0.693786
-v 0.877069 -0.196227 0.838418
-v 0.892914 -0.157973 0.838418
-v 0.784714 -0.157973 0.838418
-v 0.800560 -0.196227 0.838418
-v 0.838814 -0.103873 0.838418
-v 0.800560 -0.119719 0.838418
-v 0.877069 -0.119719 0.838418
-v 0.838814 -0.212073 0.838418
-v 0.773342 -0.223445 0.838418
-v 0.931406 -0.157973 0.838418
-v 1.093560 0.318118 0.000000
-v 1.093560 0.224943 -0.224943
-v 1.025283 0.380203 -0.157485
-v 1.147765 0.212503 -0.072955
-v 1.093560 0.000000 -0.318118
-v 1.147765 0.072955 -0.212503
-v 1.179819 -0.078990 -0.078990
-v 1.093560 -0.224943 -0.224943
-v 1.147765 -0.072955 -0.212503
-v 1.093560 -0.318118 0.000000
-v 1.147765 -0.212503 -0.072955
-v 1.093560 -0.240160 0.222155
-v 1.147765 -0.212503 0.072955
-v 1.093560 0.000000 0.337674
-v 1.093560 0.240160 0.222155
-v 1.179819 0.078990 -0.078990
-v 1.179819 -0.094987 0.082423
-v 1.179819 0.000000 0.139883
-v 1.179819 0.094987 0.082423
-v 1.147765 0.212503 0.072955
-v 1.025283 0.157485 -0.380203
-v 1.025283 -0.157485 -0.380203
-v 1.025283 -0.380203 -0.157485
-v 1.025283 -0.380203 0.157485
-v 1.147765 0.052587 0.239449
-v 1.025283 0.380203 0.157485
-v 0.749101 -0.412820 0.000000
-v 0.749101 -0.291908 -0.291907
-v 0.749101 0.291908 -0.291908
-v 0.933506 -0.486603 -0.003170
-v 0.659388 -0.380203 -0.157485
-v 1.025283 0.000000 0.485206
-v 1.025283 -0.178758 0.450344
-v 0.955232 0.178758 0.450344
-v 1.025283 0.352934 0.315440
-v 0.933506 0.518266 -0.003170
-v 0.955232 -0.380203 0.157485
-v 0.955232 -0.380203 -0.157485
-v 0.955232 -0.157485 -0.380203
-v 0.955232 0.157485 -0.380203
-v 0.955232 0.380203 -0.157485
-v 0.955232 0.380203 0.157485
-v 0.873201 -0.485597 -0.307469
-v 0.851475 -0.290254 -0.596729
-v 0.851475 0.126651 -0.717641
-v 0.851475 0.543556 -0.596729
-v 0.873201 0.707236 -0.307469
-v 0.781424 -0.416358 -0.462306
-v 0.781423 -0.098271 -0.685024
-v 0.781423 0.351573 -0.685024
-v 0.781423 0.669660 -0.462306
-v 0.955232 0.352934 0.315440
-v 1.003557 0.352362 -0.367283
-v 1.003557 0.015831 -0.500207
-v 0.746223 -0.157973 0.838418
-v 0.904286 -0.092501 0.838418
-v 0.773342 -0.092501 0.838418
-v 0.838814 -0.065381 0.838418
-v 0.904286 -0.223445 0.838418
-v 0.838814 -0.250564 0.838418
-v 0.877069 0.196228 0.838418
-v 0.874137 0.243249 0.838418
-v 0.838814 0.212073 0.838418
-v 0.838814 0.250565 0.644137
-v 0.904286 0.223445 0.644137
-v 0.800560 0.196228 0.838418
-v 0.924090 0.193296 0.838418
-v 0.931406 0.157973 0.644137
-v 0.784714 0.157973 0.838418
-v 0.924090 0.122651 0.838418
-v 0.904286 0.092501 0.644137
-v 0.800560 0.119719 0.838418
-v 0.874137 0.072697 0.838418
-v 0.838814 0.065382 0.644137
-v 0.838814 0.103873 0.838418
-v 0.803492 0.072697 0.838418
-v 0.773342 0.092501 0.644137
-v 0.877069 0.119719 0.838418
-v 0.753538 0.122651 0.838418
-v 0.746223 0.157973 0.644137
-v 0.892914 0.157973 0.838418
-v 0.753538 0.193296 0.838418
-v 0.773342 0.223445 0.644137
-v 0.803492 0.243249 0.838418
-v 0.859453 0.207798 0.693786
-v 0.888640 0.178611 0.693786
-v 0.888640 0.137335 0.693786
-v 0.859453 0.108148 0.693786
-v 0.818176 0.108148 0.693786
-v 0.788989 0.137335 0.693786
-v 0.788989 0.178611 0.693786
-v 0.818176 0.207798 0.693786
-v 0.659388 0.380203 0.157485
-v 0.877069 0.196227 0.644137
-v 0.892914 0.157973 0.644137
-v 0.877069 0.119719 0.644137
-v 0.838814 0.103873 0.644137
-v 0.800560 0.119719 0.644137
-v 0.784714 0.157973 0.644137
-v 0.800560 0.196227 0.644137
-v 0.838814 0.212073 0.644137
-v 0.887630 0.000000 0.442082
-v 0.892327 -0.317882 0.285463
-v 0.897023 -0.412820 0.000000
-v 0.897023 -0.291908 -0.291907
-v 0.897023 -0.000000 -0.412820
-v 0.897023 0.291908 -0.291908
-v 0.897023 0.412820 0.000000
-v 0.892327 0.317882 0.285463
-v 0.830938 -0.380203 0.157485
-v 0.830938 -0.380203 -0.157485
-v 0.830938 -0.157485 -0.380203
-v 0.830938 0.157485 -0.380203
-v 0.830938 0.380203 -0.157485
-v 0.830938 0.380203 0.157485
-v 0.722051 0.157911 0.411654
-v 0.834876 0.263521 0.353297
-v 0.834876 0.051936 0.439262
-v 0.908874 0.069733 0.435278
-v 0.924073 0.157911 0.411654
-v 0.908874 0.245787 0.363591
-v 1.025283 0.236471 0.365727
-v 0.788989 0.137335 0.423181
-v 0.955232 0.236471 0.365727
-v 1.025283 0.078986 0.430960
-v 0.788989 0.178611 0.407436
-v 0.955232 0.078986 0.430960
-v 0.818176 0.207798 0.393878
-v 0.859453 0.207798 0.393878
-v 0.888640 0.178611 0.407436
-v 0.888640 0.137335 0.423181
-v 0.859453 0.108147 0.432018
-v 0.818176 0.108147 0.432018
-v 1.147765 0.125542 0.209230
-v 1.093560 0.121639 0.313952
-v 0.788989 -0.137334 0.693786
-v 0.788989 -0.178611 0.693786
-v 0.818176 -0.207798 0.693786
-v 0.818176 -0.207798 0.644137
-v 0.788989 -0.178611 0.644137
-v 0.788989 -0.137334 0.644137
-v 0.818176 -0.108147 0.644137
-v 0.859453 -0.108147 0.644137
-v 0.888640 -0.137334 0.644137
-v 0.888640 -0.178611 0.644137
-v 0.859453 -0.207798 0.644137
-v 0.904286 -0.223445 0.644137
-v 0.931406 -0.157973 0.644137
-v 0.904286 -0.092501 0.644137
-v 0.838814 -0.065381 0.644137
-v 0.773342 -0.092501 0.644137
-v 0.746223 -0.157973 0.644137
-v 0.773342 -0.223445 0.644137
-v 0.838814 -0.250564 0.644137
-v 0.722051 -0.157911 0.411654
-v 0.838814 -0.103872 0.433088
-v 0.924073 -0.157911 0.411654
-v 0.838814 -0.212071 0.391623
-v 1.003557 0.518266 -0.003170
-v 0.800560 -0.196227 0.399523
-v 0.784714 -0.157973 0.415896
-v 0.800560 -0.119718 0.428739
-v 0.877069 -0.119718 0.428739
-v 0.892914 -0.157973 0.415896
-v 0.877069 -0.196227 0.399523
-v 1.093560 -0.121639 0.313952
-v 1.147765 -0.052587 0.239449
-v 0.834876 -0.263521 0.353297
-v 0.834876 -0.051936 0.439262
-v 0.908874 -0.069732 0.435278
-v 0.908874 -0.245786 0.363591
-v 1.025283 -0.236471 0.365727
-v 0.955232 -0.236471 0.365727
-v 1.025283 -0.078985 0.430960
-v 0.955232 -0.078985 0.430960
-v 1.147765 -0.125542 0.209230
-v 0.766370 0.000000 0.442082
-v 0.757735 -0.317882 0.285463
-v 0.749101 -0.000000 -0.412820
-v 0.749101 0.412820 0.000000
-v 0.659388 -0.380203 0.157485
-v 0.659388 -0.157485 -0.380203
-v 0.659388 0.157485 -0.380203
-v 0.659388 0.380203 -0.157485
-v 0.757735 0.317882 0.285463
-v 0.741188 0.245787 0.363591
-v 0.741188 0.069733 0.435278
-v 0.659388 0.078986 0.430960
-v 0.659388 0.236471 0.365727
-v 0.741188 -0.245786 0.363591
-v 0.741188 -0.069732 0.435278
-v 0.659388 -0.078985 0.430960
-v 0.659388 -0.236471 0.365727
-v 1.025283 -0.352934 0.315441
-v 1.003557 -0.486603 -0.003170
-v 1.025283 0.178758 0.450344
-v 0.955232 -0.352934 0.315441
-v 1.003557 -0.320699 -0.367283
-v 0.955232 -0.178758 0.450344
-v 0.955232 0.000000 0.485206
-v 0.933506 -0.320699 -0.367283
-v 0.933506 0.015831 -0.500207
-v 0.933506 0.352362 -0.367283
-v 0.868328 -0.506980 -0.157927
-v 0.868328 -0.310413 -0.469167
-v 0.868327 0.063326 -0.598087
-v 0.868327 0.437064 -0.469167
-v 0.868327 0.633631 -0.157927
-v 0.938379 0.437064 -0.469167
-v 0.938379 0.063326 -0.598087
-v 0.938379 -0.310413 -0.469167
-v 1.132824 0.249003 0.000000
-v 1.025283 0.412820 0.000000
-v 1.149263 0.154973 -0.154973
-v 1.025283 0.291908 -0.291908
-v 1.132824 0.000000 -0.249003
-v 1.025283 -0.000000 -0.412820
-v 1.193006 0.000000 0.016561
-v 1.149263 -0.154973 -0.154973
-v 1.025283 -0.291908 -0.291907
-v 1.132824 -0.249003 0.000000
-v 1.025283 -0.412820 0.000000
-v 1.149263 -0.168120 0.154155
-v 1.025283 -0.311654 0.288289
-v 1.149263 0.000000 0.237965
-v 1.025283 0.000000 0.438198
-v 1.149263 0.168120 0.154155
-v 1.025283 0.311654 0.288288
-v 0.659388 0.311654 0.288288
-v 0.659388 -0.412820 0.000000
-v 0.659388 -0.291908 -0.291907
-v 0.659388 0.291908 -0.291908
-v 0.955232 0.000000 0.438198
-v 0.955232 -0.311654 0.288289
-v 0.955232 -0.412820 0.000000
-v 0.955232 -0.291908 -0.291907
-v 0.955232 -0.000000 -0.412820
-v 0.955232 0.291908 -0.291908
-v 0.955232 0.311654 0.288288
-v 0.955232 0.412820 0.000000
-v 0.803150 -0.485597 -0.307469
-v 0.781424 -0.290254 -0.596729
-v 0.781423 0.126651 -0.717641
-v 0.781423 0.543556 -0.596729
-v 0.803149 0.707236 -0.307469
-v 0.838814 0.250565 0.838418
-v 0.904286 0.223445 0.838418
-v 0.931406 0.157973 0.838418
-v 0.904286 0.092501 0.838418
-v 0.838814 0.065382 0.838418
-v 0.773342 0.092501 0.838418
-v 0.746223 0.157973 0.838418
-v 0.773342 0.223445 0.838418
-v 0.838814 0.212073 0.693786
-v 0.877069 0.196227 0.693786
-v 0.892914 0.157973 0.693786
-v 0.877069 0.119719 0.693786
-v 0.838814 0.103873 0.693786
-v 0.800560 0.119719 0.693786
-v 0.784714 0.157973 0.693786
-v 0.800560 0.196227 0.693786
-v 0.659388 0.412820 0.000000
-v 0.659388 0.000000 0.438198
-v 0.659388 -0.311654 0.288289
-v 0.659388 -0.000000 -0.412820
-v 0.832907 0.000000 0.442349
-v 0.831923 -0.318416 0.285181
-v 0.830938 -0.412820 0.000000
-v 0.830938 -0.291908 -0.291907
-v 0.830938 -0.000000 -0.412820
-v 0.830938 0.291908 -0.291908
-v 0.830938 0.412820 0.000000
-v 0.831923 0.318417 0.285181
-v 0.838814 0.103872 0.433088
-v 0.955232 0.157850 0.407413
-v 1.025283 0.157850 0.407413
-v 0.838814 0.212072 0.391623
-v 0.659388 0.157850 0.407413
-v 0.800560 0.196227 0.399523
-v 0.784714 0.157973 0.415896
-v 0.800560 0.119719 0.428739
-v 0.877069 0.119719 0.428739
-v 0.892914 0.157973 0.415896
-v 0.877069 0.196227 0.399523
-v 1.132824 0.099110 0.253041
-v 0.838814 -0.212073 0.693786
-v 0.877069 -0.196227 0.693786
-v 0.892914 -0.157973 0.693786
-v 0.877069 -0.119718 0.693786
-v 0.838814 -0.103873 0.693786
-v 0.800560 -0.119718 0.693786
-v 0.784714 -0.157973 0.693786
-v 0.800560 -0.196227 0.693786
-v 0.800560 -0.196227 0.644137
-v 0.784714 -0.157973 0.644137
-v 0.800560 -0.119718 0.644137
-v 0.838814 -0.103873 0.644137
-v 0.877069 -0.119718 0.644137
-v 0.892914 -0.157973 0.644137
-v 0.877069 -0.196227 0.644137
-v 0.838814 -0.212073 0.644137
-v 0.955232 -0.157850 0.407413
-v 1.025283 -0.157850 0.407413
-v 0.659388 -0.157850 0.407413
-v 1.132824 -0.099110 0.253041
-v 0.544895 0.696067 -0.288320
-v 0.544895 0.288320 -0.696067
-v 0.191342 -0.340097 -0.821067
-v 0.544895 -0.288320 -0.696067
-v 0.191342 -0.821067 -0.340097
-v 0.544895 -0.696067 -0.288320
-v 0.166657 -0.713477 0.387925
-v 0.544895 -0.696067 0.288321
-v 0.166657 0.713478 0.387925
-v 0.544895 -0.288320 0.696067
-v 0.083622 -0.823788 0.154858
-v 0.544895 0.288321 0.696067
-v 0.166069 0.310356 0.749262
-v 0.544895 0.696067 0.288320
-v 0.707107 -0.478468 -0.198188
-v 0.707107 0.198188 0.478468
-v 0.707107 0.478468 -0.198188
-v 0.707107 -0.198188 -0.478468
-v 0.707107 -0.198188 0.478468
-v 0.707107 0.478468 0.198188
-v 0.707107 0.198188 -0.478468
-v 0.707107 -0.478468 0.198188
-v 0.659388 0.000000 0.000000
-v 0.141433 0.932922 0.094022
-v 0.141433 -0.932922 0.094022
-v 0.282886 -0.786051 0.380671
-v 0.282905 -0.333658 0.805521
-v 0.282905 0.333658 0.805521
-v 0.282886 0.786052 0.380671
-v 0.083329 -0.728391 0.393926
-v 0.083035 -0.316497 0.764091
-v 0.083035 0.316498 0.764091
-v 0.083329 0.728391 0.393926
-v 0.166069 -0.310355 0.749262
-v 0.083622 0.823788 0.154858
-v 0.191342 0.821067 -0.340097
-v 0.191342 0.340097 -0.821067
-v -0.544895 0.696067 -0.288320
-v -0.544895 0.288320 -0.696067
-v -0.191342 -0.340097 -0.821067
-v -0.544895 -0.288320 -0.696067
-v -0.191342 -0.821067 -0.340097
-v -0.544895 -0.696067 -0.288320
-v -0.166657 -0.713477 0.387925
-v -0.544895 -0.696067 0.288320
-v -0.166657 0.713478 0.387925
-v -0.544895 -0.288320 0.696067
-v -0.083622 -0.823788 0.154858
-v -0.544895 0.288321 0.696067
-v -0.166069 0.310356 0.749262
-v -0.544895 0.696067 0.288320
-v -0.141433 0.932922 0.094022
-v -0.141433 -0.932922 0.094022
-v -0.282886 -0.786051 0.380671
-v -0.282905 -0.333658 0.805521
-v -0.282905 0.333658 0.805521
-v -0.282886 0.786052 0.380671
-v -0.083328 -0.728391 0.393926
-v -0.083035 -0.316497 0.764091
-v -0.083035 0.316498 0.764091
-v -0.083328 0.728391 0.393926
-v -0.166069 -0.310355 0.749262
-v -0.083622 0.823788 0.154858
-v -0.191342 0.821067 -0.340097
-v -0.191342 0.340097 -0.821067
-v 0.544895 0.755780 -0.000000
-v 0.178865 0.919467 -0.061519
-v 0.544895 0.534417 -0.534417
-v 0.375401 0.773574 -0.320425
-v 0.544895 -0.000000 -0.755780
-v 0.191342 -0.000000 -0.891503
-v 0.375401 0.320425 -0.773574
-v 0.707107 0.250000 -0.603553
-v 0.544895 -0.534417 -0.534417
-v 0.191342 -0.630388 -0.630388
-v 0.000000 -0.346825 -0.837310
-v 0.375401 -0.320425 -0.773574
-v 0.707107 -0.250000 -0.603553
-v 0.544895 -0.755780 0.000000
-v 0.178865 -0.919467 -0.061519
-v 0.000000 -0.837310 -0.346825
-v 0.375401 -0.773574 -0.320425
-v 0.707107 -0.603553 -0.250000
-v 0.544895 -0.534417 0.534417
-v 0.146192 -0.787438 0.213267
-v 0.398287 -0.764820 0.330568
-v 0.707107 -0.603553 0.250000
-v 0.544895 0.000000 0.755780
-v 0.000000 -0.832560 0.154716
-v 0.166069 0.000000 0.813539
-v 0.166216 0.566314 0.594651
-v 0.398292 -0.318815 0.769687
-v 0.707107 -0.250000 0.603553
-v 0.544895 0.534417 0.534417
-v 0.000000 0.832560 0.154716
-v 0.398292 0.318815 0.769687
-v 0.707107 0.250000 0.603553
-v 0.398287 0.764820 0.330568
-v 0.707107 0.603553 0.250000
-v 0.707107 0.603553 -0.250000
-v 0.707107 -0.367352 -0.367352
-v 0.707107 0.000000 0.519514
-v 0.707107 0.367352 0.367352
-v 0.707107 0.519514 0.000000
-v 0.707107 0.367352 -0.367352
-v 0.707107 -0.000000 -0.519514
-v 0.707107 -0.519514 0.000000
-v 0.707107 -0.367352 0.367352
-v 0.659388 0.478468 -0.198188
-v 0.659388 0.478468 0.198188
-v 0.659388 0.198188 0.478468
-v 0.659388 -0.198188 0.478468
-v 0.659388 -0.478468 0.198188
-v 0.659388 -0.478468 -0.198188
-v 0.659388 -0.198188 -0.478468
-v 0.659388 0.198188 -0.478468
-v 0.091524 0.903905 0.188043
-v 0.091524 -0.903905 0.188043
-v 0.183088 -0.783522 0.434701
-v 0.183128 -0.340674 0.822462
-v 0.183128 0.340675 0.822461
-v 0.183088 0.783523 0.434700
-v 0.247513 0.882137 0.165686
-v 0.000000 0.946989 0.094019
-v 0.000000 -0.946989 0.094020
-v 0.247513 -0.882137 0.165686
-v 0.282901 -0.613585 0.630206
-v 0.282905 0.000000 0.874624
-v 0.282900 0.613585 0.630206
-v 0.083108 -0.577720 0.606001
-v 0.000000 -0.735848 0.396926
-v 0.083035 0.000000 0.829640
-v 0.000000 -0.319568 0.771506
-v 0.083108 0.577720 0.606001
-v 0.000000 0.319569 0.771506
-v 0.000000 0.735848 0.396926
-v 0.146192 0.787438 0.213267
-v 0.166216 -0.566313 0.594651
-v 0.000000 0.837310 -0.346825
-v 0.000000 0.346825 -0.837310
-v 0.191342 0.630388 -0.630388
-v -0.544895 0.755780 -0.000000
-v -0.178864 0.919467 -0.061519
-v -0.544895 0.534417 -0.534417
-v -0.375401 0.773574 -0.320425
-v -0.544895 -0.000000 -0.755780
-v -0.191342 -0.000000 -0.891503
-v -0.375401 0.320425 -0.773574
-v -0.707107 0.250000 -0.603553
-v -0.544895 -0.534417 -0.534417
-v -0.191342 -0.630388 -0.630388
-v -0.375401 -0.320425 -0.773574
-v -0.707107 -0.250000 -0.603553
-v -0.544895 -0.755780 0.000000
-v -0.178864 -0.919467 -0.061519
-v -0.375401 -0.773574 -0.320425
-v -0.707107 -0.603553 -0.250000
-v -0.544895 -0.534417 0.534417
-v -0.146192 -0.787438 0.213267
-v -0.398287 -0.764820 0.330568
-v -0.707107 -0.603553 0.250000
-v -0.544895 0.000000 0.755780
-v -0.166069 0.000000 0.813539
-v -0.166216 0.566314 0.594651
-v -0.398292 -0.318815 0.769687
-v -0.707107 -0.250000 0.603553
-v -0.544895 0.534417 0.534417
-v -0.398292 0.318815 0.769687
-v -0.707107 0.250000 0.603553
-v -0.398287 0.764820 0.330568
-v -0.707107 0.603553 0.250000
-v -0.707107 0.603553 -0.250000
-v -0.091524 0.903905 0.188043
-v -0.091524 -0.903905 0.188043
-v -0.183088 -0.783522 0.434701
-v -0.183128 -0.340674 0.822462
-v -0.183128 0.340675 0.822461
-v -0.183088 0.783523 0.434700
-v -0.247513 0.882137 0.165686
-v -0.247513 -0.882137 0.165686
-v -0.282901 -0.613585 0.630206
-v -0.282905 0.000000 0.874624
-v -0.282900 0.613585 0.630206
-v -0.083108 -0.577720 0.606001
-v -0.083035 0.000000 0.829640
-v -0.083108 0.577720 0.606001
-v -0.146192 0.787438 0.213267
-v -0.166216 -0.566313 0.594651
-v -0.191342 0.630388 -0.630388
-v 0.364049 0.867589 0.012906
-v 0.375401 0.593924 -0.593924
-v 0.375401 -0.000000 -0.839936
-v 0.375401 -0.593924 -0.593924
-v 0.364049 -0.867589 0.012906
-v 0.398291 -0.589723 0.593879
-v 0.398292 0.000000 0.835716
-v 0.398290 0.589724 0.593879
-v 0.707107 0.463388 -0.463388
-v 0.707107 0.655330 -0.000000
-v 0.707107 -0.000000 -0.655330
-v 0.707107 -0.463388 -0.463388
-v 0.707107 -0.655330 0.000000
-v 0.707107 -0.463388 0.463388
-v 0.707107 0.000000 0.655330
-v 0.707107 0.463388 0.463388
-v 0.659388 0.000000 0.519514
-v 0.659388 -0.367352 0.367352
-v 0.659388 -0.519514 0.000000
-v 0.659388 -0.367352 -0.367352
-v 0.659388 -0.000000 -0.519514
-v 0.659388 0.519514 0.000000
-v 0.659388 0.367352 -0.367352
-v 0.659388 0.367352 0.367352
-v 0.160177 0.864705 0.249712
-v 0.160177 -0.864705 0.249712
-v 0.183118 -0.621724 0.654965
-v 0.183128 0.000000 0.893018
-v 0.183118 0.621724 0.654965
-v -0.364049 0.867589 0.012906
-v -0.375401 0.593924 -0.593924
-v -0.375401 -0.000000 -0.839936
-v -0.375401 -0.593924 -0.593924
-v -0.364049 -0.867589 0.012906
-v -0.398291 -0.589723 0.593879
-v -0.398292 0.000000 0.835716
-v -0.398290 0.589724 0.593879
-v -0.707107 0.463388 -0.463388
-v -0.707107 0.655330 -0.000000
-v -0.707107 -0.000000 -0.655330
-v -0.707107 -0.463388 -0.463388
-v -0.707107 -0.655330 0.000000
-v -0.707107 -0.463388 0.463388
-v -0.707107 0.000000 0.655330
-v -0.707107 0.463388 0.463388
-v -0.160177 0.864705 0.249712
-v -0.160177 -0.864705 0.249712
-v -0.183118 -0.621724 0.654965
-v -0.183128 0.000000 0.893018
-v -0.183118 0.621724 0.654965
-v 0.000000 0.936560 -0.063201
-v 0.000000 -0.000000 -0.909140
-v 0.000000 -0.642859 -0.642859
-v 0.000000 -0.936560 -0.063201
-v 0.000000 0.913009 0.188039
-v 0.000000 -0.913009 0.188039
-v 0.000000 -0.583422 0.611676
-v 0.000000 0.000000 0.837691
-v 0.000000 0.583423 0.611676
-v 0.000000 0.642859 -0.642859
-v 0.863647 -0.626689 -1.251529
-v 0.682240 -0.619120 -0.627932
-v 0.647814 -0.632142 -0.674754
-v 0.673277 -0.653857 -0.605875
-v 0.636103 -0.677528 -0.645935
-v 0.659992 -0.676838 -0.573181
-v 0.618746 -0.707555 -0.603218
-v 0.644408 -0.684566 -0.534828
-v 0.598384 -0.717652 -0.553108
-v 0.628896 -0.675863 -0.496655
-v 0.578117 -0.706280 -0.503233
-v 0.615820 -0.652054 -0.464474
-v 0.561031 -0.675173 -0.461185
-v 0.607168 -0.616764 -0.443183
-v 0.549728 -0.629064 -0.433367
-v 0.635636 -0.619534 -0.690399
-v 0.787232 -0.626689 -1.282580
-v 0.825364 -0.643771 -1.266868
-v 0.482254 -0.619120 -0.709195
-v 0.539582 -0.632142 -0.718733
-v 0.597719 -0.636715 -0.706639
-v 0.473292 -0.653857 -0.687137
-v 0.527872 -0.677528 -0.689914
-v 0.585043 -0.685841 -0.675445
-v 0.460007 -0.676838 -0.654444
-v 0.510514 -0.707555 -0.647197
-v 0.566256 -0.718342 -0.629209
-v 0.444422 -0.684566 -0.616091
-v 0.490152 -0.717652 -0.597087
-v 0.544216 -0.729270 -0.574970
-v 0.428911 -0.675863 -0.577918
-v 0.469886 -0.706280 -0.547212
-v 0.522280 -0.716962 -0.520986
-v 0.415834 -0.652054 -0.545736
-v 0.452800 -0.675173 -0.505164
-v 0.503787 -0.683291 -0.475474
-v 0.407183 -0.616764 -0.524445
-v 0.441497 -0.629064 -0.477346
-v 0.491552 -0.633384 -0.445364
-v 0.559221 -0.619534 -0.721450
-v 0.879657 -0.585451 -1.245550
-v 0.864014 -0.544212 -1.252432
-v 0.604259 -0.575366 -0.436024
-v 0.545927 -0.574975 -0.424014
-v 0.644888 -0.576641 -0.536009
-v 0.685516 -0.577916 -0.635995
-v 0.652094 -0.578307 -0.685289
-v 0.682607 -0.536518 -0.628836
-v 0.648293 -0.524217 -0.675935
-v 0.673956 -0.501228 -0.607545
-v 0.636990 -0.478109 -0.648117
-v 0.660879 -0.477419 -0.575363
-v 0.619904 -0.447001 -0.606070
-v 0.645368 -0.468716 -0.537190
-v 0.599638 -0.435630 -0.556194
-v 0.629783 -0.476443 -0.498838
-v 0.579276 -0.445726 -0.506084
-v 0.616498 -0.499425 -0.466144
-v 0.561918 -0.475753 -0.463368
-v 0.607536 -0.534162 -0.444087
-v 0.550208 -0.521139 -0.434548
-v 0.636003 -0.537057 -0.691302
-v 0.825623 -0.585451 -1.267506
-v 0.771590 -0.585451 -1.289462
-v 0.787599 -0.544212 -1.283482
-v 0.825883 -0.527130 -1.268144
-v 0.404274 -0.575366 -0.517286
-v 0.437696 -0.574975 -0.467993
-v 0.487438 -0.574838 -0.435240
-v 0.444902 -0.576641 -0.617272
-v 0.485531 -0.577916 -0.717258
-v 0.543863 -0.578307 -0.729268
-v 0.482622 -0.536518 -0.710099
-v 0.540062 -0.524217 -0.719914
-v 0.598238 -0.519898 -0.707917
-v 0.473970 -0.501228 -0.688808
-v 0.528759 -0.478109 -0.692096
-v 0.586003 -0.469991 -0.677807
-v 0.460894 -0.477419 -0.656626
-v 0.511673 -0.447001 -0.650049
-v 0.567510 -0.436320 -0.632296
-v 0.445382 -0.468716 -0.618453
-v 0.491406 -0.435630 -0.600173
-v 0.545574 -0.424012 -0.578311
-v 0.429798 -0.476443 -0.580100
-v 0.471045 -0.445726 -0.550063
-v 0.523534 -0.434940 -0.524072
-v 0.416513 -0.499425 -0.547407
-v 0.453687 -0.475753 -0.507347
-v 0.504747 -0.467441 -0.477836
-v 0.407550 -0.534162 -0.525349
-v 0.441976 -0.521139 -0.478527
-v 0.492071 -0.516566 -0.446642
-v 0.559588 -0.537057 -0.722352
-v 1.003626 -1.231580 -1.599791
-v 0.933006 -0.691712 -1.245680
-v 0.889394 -0.724106 -1.270087
-v 0.917154 -0.691373 -1.206666
-v 0.868682 -0.723663 -1.219112
-v 0.902590 -0.674944 -1.170728
-v 0.849654 -0.702198 -1.172157
-v 0.891532 -0.644927 -1.143338
-v 0.835205 -0.662979 -1.136371
-v 0.885662 -0.605891 -1.128666
-v 0.827537 -0.611976 -1.117200
-v 0.885876 -0.563780 -1.128945
-v 0.827816 -0.556955 -1.117565
-v 0.892139 -0.525003 -1.144133
-v 0.835999 -0.506291 -1.137410
-v 0.879504 -0.725243 -1.291369
-v 0.927211 -1.231399 -1.630841
-v 0.960023 -1.240865 -1.602094
-v 0.733020 -0.691238 -1.326941
-v 0.781163 -0.723850 -1.314065
-v 0.836074 -0.735392 -1.294100
-v 0.717168 -0.690898 -1.287927
-v 0.760451 -0.723407 -1.263090
-v 0.813656 -0.734912 -1.238925
-v 0.702604 -0.674470 -1.251989
-v 0.741422 -0.701941 -1.216135
-v 0.793059 -0.711678 -1.188102
-v 0.691546 -0.644453 -1.224600
-v 0.726974 -0.662722 -1.180349
-v 0.777421 -0.669228 -1.149367
-v 0.685677 -0.605417 -1.209927
-v 0.719306 -0.611719 -1.161179
-v 0.769120 -0.614023 -1.128617
-v 0.685890 -0.563305 -1.210207
-v 0.719585 -0.556698 -1.161544
-v 0.769422 -0.554468 -1.129012
-v 0.692154 -0.524529 -1.225395
-v 0.727768 -0.506034 -1.181388
-v 0.778280 -0.499630 -1.150492
-v 0.803089 -0.725062 -1.322419
-v 1.032475 -1.208982 -1.625280
-v 1.029673 -1.186309 -1.663630
-v 0.903499 -0.495465 -1.171918
-v 0.850842 -0.467698 -1.173712
-v 0.925616 -0.585688 -1.226875
-v 0.947733 -0.675910 -1.281831
-v 0.908636 -0.703460 -1.317320
-v 0.959093 -0.646372 -1.309616
-v 0.923478 -0.664867 -1.353623
-v 0.965356 -0.607596 -1.324804
-v 0.931662 -0.614203 -1.373467
-v 0.965570 -0.565484 -1.325083
-v 0.931941 -0.559182 -1.373832
-v 0.959700 -0.526448 -1.310411
-v 0.924272 -0.508179 -1.354662
-v 0.948642 -0.496431 -1.283021
-v 0.909824 -0.468959 -1.318875
-v 0.934078 -0.480002 -1.247084
-v 0.890796 -0.447494 -1.271921
-v 0.918226 -0.479663 -1.208070
-v 0.870084 -0.447051 -1.220946
-v 0.905552 -0.679972 -1.355208
-v 0.978442 -1.208854 -1.647236
-v 0.924408 -1.208726 -1.669191
-v 0.953258 -1.186128 -1.694680
-v 0.996860 -1.176842 -1.692377
-v 0.703514 -0.494991 -1.253179
-v 0.742611 -0.467441 -1.217690
-v 0.794346 -0.457857 -1.189785
-v 0.725631 -0.585213 -1.308136
-v 0.747747 -0.675435 -1.363093
-v 0.800405 -0.703203 -1.361299
-v 0.759107 -0.645898 -1.390877
-v 0.815247 -0.664610 -1.397601
-v 0.872967 -0.671271 -1.384519
-v 0.765371 -0.607121 -1.406065
-v 0.823431 -0.613946 -1.417445
-v 0.881824 -0.616433 -1.405998
-v 0.765584 -0.565010 -1.406345
-v 0.823710 -0.558925 -1.417810
-v 0.882126 -0.556878 -1.406393
-v 0.759715 -0.525974 -1.391672
-v 0.816041 -0.507922 -1.398640
-v 0.873826 -0.501673 -1.385644
-v 0.748657 -0.495957 -1.364283
-v 0.801593 -0.468703 -1.362854
-v 0.858187 -0.459222 -1.346909
-v 0.734093 -0.479528 -1.328345
-v 0.782565 -0.447238 -1.315899
-v 0.837591 -0.435989 -1.296085
-v 0.718241 -0.479189 -1.289331
-v 0.761853 -0.446795 -1.264924
-v 0.815173 -0.435509 -1.240911
-v 0.829137 -0.679791 -1.386258
-v 1.180859 -0.645406 0.355250
-v 0.594171 -0.827093 0.144001
-v 0.645416 -0.830652 0.113862
-v 0.582832 -0.867274 0.138486
-v 0.630600 -0.883152 0.106657
-v 0.558528 -0.899571 0.126664
-v 0.598847 -0.925350 0.091211
-v 0.524961 -0.919068 0.110335
-v 0.554989 -0.950824 0.069876
-v 0.487240 -0.922795 0.091984
-v 0.505704 -0.955694 0.045899
-v 0.451108 -0.910186 0.074405
-v 0.458496 -0.939219 0.022931
-v 0.422066 -0.883161 0.060275
-v 0.420550 -0.903908 0.004469
-v 0.658134 -0.815698 0.100954
-v 1.216943 -0.645410 0.281079
-v 1.203219 -0.661802 0.320266
-v 0.688606 -0.827102 -0.050112
-v 0.696524 -0.830657 0.008810
-v 0.681357 -0.831904 0.066390
-v 0.677267 -0.867283 -0.055626
-v 0.681708 -0.883157 0.001604
-v 0.665321 -0.888729 0.058591
-v 0.652964 -0.899581 -0.067448
-v 0.649955 -0.925355 -0.013842
-v 0.630951 -0.934404 0.041872
-v 0.619397 -0.919077 -0.083778
-v 0.606097 -0.950829 -0.035177
-v 0.583480 -0.961977 0.018779
-v 0.581676 -0.922805 -0.102129
-v 0.556812 -0.955699 -0.059154
-v 0.530135 -0.967248 -0.007173
-v 0.545544 -0.910196 -0.119707
-v 0.509604 -0.939224 -0.082122
-v 0.479037 -0.949416 -0.032033
-v 0.516501 -0.883170 -0.133838
-v 0.471658 -0.903913 -0.100584
-v 0.437965 -0.911196 -0.052017
-v 0.694218 -0.815701 0.026783
-v 1.162960 -0.605827 0.365538
-v 1.160008 -0.566250 0.345103
-v 0.404535 -0.845832 0.051744
-v 0.397644 -0.855137 -0.006677
-v 0.497677 -0.815489 0.097056
-v 0.590820 -0.785145 0.142369
-v 0.641037 -0.775845 0.111730
-v 0.573288 -0.747817 0.133838
-v 0.618132 -0.727073 0.100584
-v 0.544246 -0.720791 0.119708
-v 0.580186 -0.691762 0.082122
-v 0.508114 -0.708182 0.102129
-v 0.532977 -0.675287 0.059154
-v 0.470393 -0.711909 0.083778
-v 0.483693 -0.680158 0.035177
-v 0.436826 -0.731406 0.067448
-v 0.439835 -0.705631 0.013842
-v 0.412523 -0.763703 0.055627
-v 0.408082 -0.747830 -0.001604
-v 0.401184 -0.803884 0.050112
-v 0.393266 -0.800329 -0.008809
-v 0.637283 -0.736541 0.090806
-v 1.188476 -0.605830 0.313091
-v 1.213991 -0.605832 0.260644
-v 1.196092 -0.566253 0.270932
-v 1.173732 -0.549858 0.305916
-v 0.498970 -0.845841 -0.142368
-v 0.448753 -0.855142 -0.111730
-v 0.413172 -0.858406 -0.064081
-v 0.592113 -0.815498 -0.097056
-v 0.685255 -0.785154 -0.051744
-v 0.692145 -0.775850 0.006677
-v 0.667724 -0.747826 -0.060275
-v 0.669240 -0.727078 -0.004469
-v 0.651825 -0.719791 0.052017
-v 0.638682 -0.720800 -0.074405
-v 0.631294 -0.691767 -0.022931
-v 0.610753 -0.681570 0.032034
-v 0.602550 -0.708191 -0.091984
-v 0.584086 -0.675292 -0.045899
-v 0.559655 -0.663738 0.007174
-v 0.564829 -0.711918 -0.110335
-v 0.534801 -0.680163 -0.069876
-v 0.506310 -0.669010 -0.018779
-v 0.531262 -0.731415 -0.126664
-v 0.490943 -0.705636 -0.091211
-v 0.458838 -0.696582 -0.041872
-v 0.506958 -0.763712 -0.138486
-v 0.459190 -0.747835 -0.106657
-v 0.424469 -0.742257 -0.058591
-v 0.495619 -0.803893 -0.144001
-v 0.444374 -0.800334 -0.113862
-v 0.408433 -0.799082 -0.066389
-v 0.673367 -0.736545 0.016635
-v 1.536358 -1.231944 0.528825
-v 1.164007 -0.710783 0.421187
-v 1.192851 -0.742883 0.380143
-v 1.126224 -0.712593 0.402674
-v 1.143485 -0.745248 0.355954
-v 1.090689 -0.698164 0.385279
-v 1.097057 -0.726395 0.333226
-v 1.062812 -0.669692 0.371650
-v 1.060634 -0.689196 0.315419
-v 1.046836 -0.631513 0.363861
-v 1.039760 -0.639312 0.305243
-v 1.045195 -0.589439 0.363099
-v 1.037615 -0.584340 0.304247
-v 1.058137 -0.549875 0.369480
-v 1.054525 -0.532647 0.312584
-v 1.214803 -0.743225 0.371777
-v 1.572648 -1.231869 0.454755
-v 1.542129 -1.241999 0.485718
-v 1.258981 -0.710588 0.227338
-v 1.244250 -0.742778 0.275232
-v 1.221028 -0.754118 0.328890
-v 1.221198 -0.712397 0.208825
-v 1.194885 -0.745142 0.251044
-v 1.167596 -0.756678 0.302709
-v 1.185664 -0.697968 0.191430
-v 1.148457 -0.726289 0.228316
-v 1.117342 -0.736272 0.278108
-v 1.157786 -0.669497 0.177800
-v 1.112033 -0.689090 0.210508
-v 1.077918 -0.696007 0.258833
-v 1.141811 -0.631318 0.170012
-v 1.091160 -0.639206 0.200332
-v 1.055325 -0.642014 0.247819
-v 1.140169 -0.589244 0.169250
-v 1.089015 -0.584234 0.199336
-v 1.053003 -0.582512 0.246741
-v 1.153111 -0.549679 0.175630
-v 1.105924 -0.532541 0.207673
-v 1.071305 -0.526560 0.255765
-v 1.251093 -0.743150 0.297706
-v 1.558713 -1.207595 0.558825
-v 1.596100 -1.183214 0.558145
-v 1.083692 -0.518844 0.382032
-v 1.087914 -0.492103 0.328983
-v 1.140988 -0.605927 0.410016
-v 1.198285 -0.693010 0.438000
-v 1.237637 -0.719662 0.402109
-v 1.223840 -0.661980 0.450551
-v 1.271027 -0.679119 0.418509
-v 1.236782 -0.622416 0.456932
-v 1.287936 -0.627426 0.426845
-v 1.235140 -0.580341 0.456170
-v 1.285791 -0.572453 0.425850
-v 1.219164 -0.542162 0.448381
-v 1.264917 -0.522570 0.415674
-v 1.191287 -0.513691 0.434752
-v 1.228494 -0.485370 0.397866
-v 1.155753 -0.499262 0.417357
-v 1.182066 -0.466517 0.375138
-v 1.117970 -0.501071 0.398844
-v 1.132701 -0.468882 0.350950
-v 1.274546 -0.694495 0.401096
-v 1.584374 -1.207542 0.506450
-v 1.610035 -1.207489 0.454074
-v 1.632390 -1.183140 0.484074
-v 1.626618 -1.173085 0.527182
-v 1.178666 -0.518649 0.188182
-v 1.139314 -0.491997 0.224073
-v 1.107446 -0.482676 0.273516
-v 1.235963 -0.605732 0.216166
-v 1.293259 -0.692815 0.244150
-v 1.289037 -0.719556 0.297198
-v 1.318814 -0.661784 0.256702
-v 1.322426 -0.679013 0.313598
-v 1.305645 -0.685100 0.370417
-v 1.331756 -0.622220 0.263083
-v 1.339336 -0.627320 0.321935
-v 1.323948 -0.629148 0.379441
-v 1.330114 -0.580146 0.262321
-v 1.337191 -0.572347 0.320939
-v 1.321626 -0.569646 0.378363
-v 1.314139 -0.541967 0.254532
-v 1.316317 -0.522464 0.310763
-v 1.299033 -0.515652 0.367348
-v 1.286261 -0.513495 0.240903
-v 1.279894 -0.485264 0.292955
-v 1.259609 -0.475388 0.348074
-v 1.250727 -0.499066 0.223507
-v 1.233466 -0.466411 0.270227
-v 1.209355 -0.454982 0.323473
-v 1.212944 -0.500876 0.204994
-v 1.184100 -0.468776 0.246039
-v 1.155923 -0.457541 0.297292
-v 1.310836 -0.694421 0.327025
-v 1.666868 -1.085842 0.428226
-v 1.633370 -1.059764 0.466150
-v 1.603599 -1.050567 0.515746
-v 1.582089 -1.059651 0.569462
-v 1.572115 -1.085633 0.619120
-v 1.607809 -1.106651 0.398933
-v 1.574888 -1.076423 0.437140
-v 1.545321 -1.065769 0.486835
-v 1.523608 -1.076310 0.540452
-v 1.513056 -1.106443 0.589828
-v 1.576834 -1.129750 0.383583
-v 1.534417 -1.106603 0.417085
-v 1.501515 -1.098436 0.465127
-v 1.483137 -1.106490 0.520396
-v 1.482080 -1.129542 0.574478
-v 1.556129 -1.164320 0.373344
-v 1.507364 -1.151772 0.403706
-v 1.472233 -1.147325 0.450646
-v 1.456084 -1.151659 0.507017
-v 1.461375 -1.164112 0.564238
-v 1.548846 -1.205099 0.369773
-v 1.497848 -1.205051 0.399041
-v 1.461933 -1.204995 0.445596
-v 1.446568 -1.204938 0.502352
-v 1.454092 -1.204890 0.560668
-v 1.556093 -1.245877 0.373415
-v 1.507318 -1.258330 0.403800
-v 1.472183 -1.262664 0.450747
-v 1.456038 -1.258217 0.507111
-v 1.461340 -1.245668 0.564310
-v 1.576769 -1.280447 0.383716
-v 1.534332 -1.303498 0.417258
-v 1.501423 -1.311553 0.465314
-v 1.483052 -1.303385 0.520569
-v 1.482015 -1.280238 0.574610
-v 1.607724 -1.303546 0.399106
-v 1.574777 -1.333678 0.437366
-v 1.545200 -1.344220 0.487080
-v 1.523497 -1.333565 0.540678
-v 1.512971 -1.303337 0.590001
-v 1.644247 -1.311657 0.417244
-v 1.622496 -1.344276 0.461064
-v 1.596851 -1.355691 0.512730
-v 1.571216 -1.344163 0.564375
-v 1.549493 -1.311448 0.608138
-v 1.680776 -1.303545 0.435367
-v 1.670224 -1.333678 0.484743
-v 1.648512 -1.344219 0.538360
-v 1.618944 -1.333565 0.588054
-v 1.586023 -1.303337 0.626261
-v 1.746068 -1.261106 0.467729
-v 1.736848 -1.288758 0.517764
-v 1.715603 -1.298428 0.571612
-v 1.685567 -1.288645 0.621075
-v 1.651314 -1.260897 0.658623
-v 1.591915 -1.129449 0.628996
-v 1.611714 -1.173265 0.638872
-v 1.631514 -1.217081 0.648747
-v 1.531297 -1.155666 0.598936
-v 1.549539 -1.204890 0.608045
-v 1.567781 -1.254113 0.617153
-v 1.686668 -1.129658 0.438101
-v 1.706468 -1.173474 0.447977
-v 1.726268 -1.217290 0.457853
-v 1.626051 -1.155875 0.408042
-v 1.644293 -1.205098 0.417150
-v 1.662535 -1.254322 0.426258
-v -1.182081 -1.207870 -1.842323
-v -1.205910 -2.337511 -2.090683
-v -1.249868 -1.971735 -2.099821
-v -1.235726 -1.534247 -1.995120
-v -1.364176 -1.254429 -1.680813
-v -1.303263 -2.362402 -2.004334
-v -1.400124 -2.010153 -1.966552
-v -1.416379 -1.580438 -1.834890
-v -1.081548 -2.560738 -2.036439
-v -1.343281 -2.380612 -1.952346
-v -1.439028 -1.288490 -1.583573
-v -1.169113 -2.608149 -1.942889
-v -1.490638 -1.614228 -1.738420
-v -1.461888 -2.038259 -1.886314
-v -1.170164 -2.315144 -2.026590
-v -1.210248 -1.975245 -2.034191
-v -1.196636 -1.560346 -1.934715
-v -1.332958 -1.292449 -1.623402
-v -1.277679 -2.352602 -1.936124
-v -1.367821 -2.020053 -1.899627
-v -1.383193 -1.608147 -1.773175
-v -1.062359 -2.539757 -1.966747
-v -1.337717 -2.384414 -1.874158
-v -1.427597 -1.326813 -1.515583
-v -1.155439 -2.611442 -1.866703
-v -1.476798 -1.645074 -1.667364
-v -1.449310 -2.055894 -1.810682
-v -1.198809 -2.702261 -1.922426
-v -1.420105 -2.460408 -1.934561
-v -1.458304 -1.044493 -1.404346
-v -1.557278 -2.102431 -1.870043
-v -1.062190 -0.968805 -1.593382
-v -1.600290 -1.645912 -1.715856
-v -1.326027 -1.036934 -1.342541
-v -1.235935 -1.007729 -1.442869
-v -1.125938 -1.017577 -1.710142
-v -1.296622 -1.061218 -1.558754
-v -1.366783 -1.093144 -1.467608
-v -1.268276 -1.102636 -1.503047
-v -1.359884 -1.133560 -1.400222
-v -1.545535 -1.278917 -1.543171
-v -0.951530 -1.206338 -1.928108
-v -1.082650 -2.336691 -2.136546
-v -1.059630 -1.970471 -2.170607
-v -1.007001 -1.532727 -2.080225
-v -0.707623 -1.250066 -1.925109
-v -0.952249 -2.360070 -2.134942
-v -0.858370 -2.006553 -2.168131
-v -0.765026 -1.576109 -2.077250
-v -0.887773 -2.377585 -2.121836
-v -0.587023 -1.282828 -1.900594
-v -1.010729 -2.607096 -2.001822
-v -0.645381 -1.608611 -2.052929
-v -0.758857 -2.033587 -2.147903
-v -1.068065 -2.314465 -2.064579
-v -1.046670 -1.974158 -2.095056
-v -0.996792 -1.559018 -2.009075
-v -0.693275 -1.288198 -1.861421
-v -0.927138 -2.350273 -2.066556
-v -0.838954 -2.016540 -2.096412
-v -0.749475 -1.603936 -2.008974
-v -1.138693 -2.561117 -2.015176
-v -0.840831 -2.381112 -2.059043
-v -0.550783 -1.320987 -1.841835
-v -0.971239 -2.610218 -1.935242
-v -0.609049 -1.639308 -1.990243
-v -0.718732 -2.051040 -2.082521
-v -0.973783 -2.700765 -2.006155
-v -0.817083 -2.456400 -2.158937
-v -0.458133 -1.037846 -1.776497
-v -0.675291 -2.096570 -2.198219
-v -0.882322 -0.967610 -1.660308
-v -0.547288 -1.638914 -2.107665
-v -0.517917 -1.031563 -1.643229
-v -0.652011 -1.003849 -1.660140
-v -0.909835 -1.016140 -1.790552
-v -0.681212 -1.057128 -1.787740
-v -0.568170 -1.087837 -1.764762
-v -0.665766 -1.098632 -1.727233
-v -0.528872 -1.128038 -1.709431
-v -0.480131 -1.271837 -1.939595
-v -1.107904 -2.540060 -1.949800
-v -1.021093 -2.571576 -2.035696
-v -1.183827 -2.572658 -1.975144
-v -0.992832 -2.561284 -1.968145
-v -1.161178 -2.562402 -1.905506
-v -1.070821 -1.201238 -1.895904
-v -1.125348 -1.527667 -2.048277
-v -1.158063 -1.966263 -2.144033
-v -1.146427 -2.333964 -2.119328
-v -1.281226 -1.225759 -1.769811
-v -1.334086 -1.551995 -1.923182
-v -1.331678 -1.986496 -2.039988
-v -1.258916 -2.347075 -2.051915
-v -1.209527 -1.337038 -1.913568
-v -1.097867 -0.922430 -1.644052
-v -1.172842 -2.473171 -2.058239
-v -1.233163 -2.166307 -2.106534
-v -1.252049 -1.759234 -2.064649
-v -1.394115 -1.384234 -1.749847
-v -1.262845 -0.964612 -1.497724
-v -1.242315 -2.490934 -1.996620
-v -1.358568 -2.198372 -1.995305
-v -1.421528 -1.802568 -1.914328
-v -1.105766 -2.575883 -2.014372
-v -1.509373 -1.253523 -1.608655
-v -1.563820 -1.620471 -1.781151
-v -1.519736 -2.076569 -1.934554
-v -1.381533 -2.432995 -1.997803
-v -1.190995 -2.666176 -1.984533
-v -1.069314 -2.689296 -1.918431
-v -1.262555 -2.510691 -1.957483
-v -1.410117 -2.221829 -1.928337
-v -1.469991 -1.418761 -1.651277
-v -1.330661 -0.995472 -1.409625
-v -1.491195 -1.834269 -1.823825
-v -1.100199 -1.554577 -1.981169
-v -1.131312 -1.970489 -2.072216
-v -1.120901 -2.312151 -2.050337
-v -1.246852 -1.261296 -1.701992
-v -1.289752 -1.577733 -1.866466
-v -1.287683 -1.990931 -1.977741
-v -1.220782 -2.327331 -1.989724
-v -1.166373 -1.385157 -1.860980
-v -1.139965 -2.444062 -1.995200
-v -1.194820 -2.157480 -2.040682
-v -1.212253 -1.774259 -2.000930
-v -1.361687 -1.418827 -1.690934
-v -1.220117 -2.475769 -1.928289
-v -1.328652 -2.198748 -1.927180
-v -1.388297 -1.821520 -1.849586
-v -1.080330 -2.558918 -1.945709
-v -1.041922 -2.699135 -1.844989
-v -1.257767 -2.510838 -1.879424
-v -1.399996 -2.232617 -1.851160
-v -1.456825 -1.454692 -1.582369
-v -1.477598 -1.858597 -1.750244
-v -0.975398 -0.963647 -1.635206
-v -1.147452 -0.983396 -1.530661
-v -1.060535 -2.792873 -1.896688
-v -1.414689 -0.927280 -1.334933
-v -1.581032 -1.429272 -1.621048
-v -1.595106 -1.884933 -1.806038
-v -1.495909 -2.295293 -1.911630
-v -1.323270 -2.596491 -1.938328
-v -1.021651 -1.011360 -1.760366
-v -1.218870 -1.034345 -1.642174
-v -1.422103 -1.019115 -1.469815
-v -1.190233 -1.086299 -1.588210
-v -1.154009 -1.112723 -1.776233
-v -1.330399 -1.157824 -1.619783
-v -1.402905 -1.190817 -1.525591
-v -1.300617 -1.197542 -1.563224
-v -1.393740 -1.230187 -1.457903
-v -1.501920 -1.161705 -1.473758
-v -0.828899 -1.222753 -1.938116
-v -0.885342 -1.549012 -2.090154
-v -0.958441 -1.984016 -2.178864
-v -1.017088 -2.345468 -2.141896
-v -0.975821 -1.335484 -2.000527
-v -0.888988 -0.921042 -1.721774
-v -1.084882 -2.472586 -2.090968
-v -1.074387 -2.165252 -2.165612
-v -1.037470 -1.757808 -2.144491
-v -0.728576 -1.379811 -1.997486
-v -0.668008 -0.960660 -1.719056
-v -0.991827 -2.489269 -2.089823
-v -0.906413 -2.195367 -2.163546
-v -0.810461 -1.798507 -2.141699
-v -0.550595 -1.247151 -1.965405
-v -0.617863 -1.614185 -2.133130
-v -0.746168 -2.071428 -2.222388
-v -0.887929 -2.429715 -2.181468
-v -1.020714 -2.665044 -2.047893
-v -0.950698 -2.508618 -2.073521
-v -0.823358 -2.217930 -2.146663
-v -0.606326 -1.413021 -1.972636
-v -0.558744 -0.990342 -1.696846
-v -0.698216 -1.829000 -2.118883
-v -0.810166 -1.258394 -1.864478
-v -0.881517 -1.575020 -2.018365
-v -0.950993 -1.988694 -2.103019
-v -1.005523 -2.325901 -2.069818
-v -0.973541 -1.383875 -1.932730
-v -1.068895 -2.443589 -2.021645
-v -1.060461 -2.156587 -2.090675
-v -1.025759 -1.773020 -2.070322
-v -0.714202 -1.414524 -1.931855
-v -0.964136 -2.474067 -2.023537
-v -0.884517 -2.195797 -2.092437
-v -0.793067 -1.817564 -2.071064
-v -0.903296 -2.508482 -2.011318
-v -0.780444 -2.228500 -2.081687
-v -0.570828 -1.448804 -1.912038
-v -0.660125 -1.853164 -2.054416
-v -0.776636 -0.980932 -1.668637
-v -0.447134 -0.920850 -1.694949
-v -0.502420 -1.422104 -2.022387
-v -0.607368 -1.878369 -2.173563
-v -0.746661 -2.290315 -2.190416
-v -0.891232 -2.593620 -2.099084
-v -0.794889 -1.031527 -1.799932
-v -0.528617 -1.013177 -1.802270
-v -0.780679 -1.083577 -1.740600
-v -0.930682 -1.111239 -1.859330
-v -0.694418 -1.153597 -1.856424
-v -0.577597 -1.185332 -1.832678
-v -0.679520 -1.193415 -1.794327
-v -0.539828 -1.224512 -1.775633
-v -0.469132 -1.154842 -1.858046
-v -1.053444 -2.580536 -2.023502
-v -1.151272 -2.581186 -1.987101
-v -1.033283 -2.565897 -1.953458
-v -1.120915 -2.566480 -1.920852
-v -1.187692 -0.938637 -1.578356
-v -1.310030 -1.355171 -1.840063
-v -1.344325 -1.775884 -1.997160
-v -1.301442 -2.178627 -2.056596
-v -1.207669 -2.483905 -2.028049
-v -1.378467 -0.901911 -1.400395
-v -1.544802 -1.403862 -1.686489
-v -1.558204 -1.859368 -1.871039
-v -1.457738 -2.268852 -1.975530
-v -1.292245 -2.566328 -2.000947
-v -1.257266 -1.369375 -1.784696
-v -1.299636 -1.791166 -1.937093
-v -1.259521 -2.171496 -1.993566
-v -1.173801 -2.458853 -1.965668
-v -1.250048 -1.130052 -1.705992
-v -1.465738 -1.136319 -1.539235
-v -1.218528 -1.173797 -1.645106
-v -0.997066 -0.916421 -1.692597
-v -1.096745 -1.330315 -1.967882
-v -1.148498 -1.753062 -2.114518
-v -1.156541 -2.161740 -2.143434
-v -1.129057 -2.474743 -2.075160
-v -0.777884 -0.935914 -1.730841
-v -0.851512 -1.352124 -2.010671
-v -0.923335 -1.773087 -2.153805
-v -0.989934 -2.176557 -2.172504
-v -1.038669 -2.482781 -2.090931
-v -1.083766 -2.749282 -1.958342
-v -0.517628 -0.896190 -1.720703
-v -0.572907 -1.397403 -2.048120
-v -0.678078 -1.853519 -2.198523
-v -0.817622 -2.264598 -2.213709
-v -0.955992 -2.564093 -2.126062
-v -1.073220 -1.380034 -1.905545
-v -1.122257 -1.768858 -2.044278
-v -1.129986 -2.153557 -2.071921
-v -1.104276 -2.447021 -2.008066
-v -0.855083 -1.366702 -1.934343
-v -0.917711 -1.788628 -2.079203
-v -0.980539 -2.169642 -2.097372
-v -1.023814 -2.457857 -2.021476
-v -1.046236 -1.106299 -1.828135
-v -0.811894 -1.127140 -1.869024
-v -0.539606 -1.130164 -1.883838
-v -0.795436 -1.170986 -1.802533
-v -0.879469 -1.087012 -1.685149
-v -0.918386 -1.066220 -1.649181
-v -0.970006 -1.059174 -1.622419
-v -1.026472 -1.066947 -1.608935
-v -1.079186 -1.088354 -1.610784
-v -0.859328 -1.126041 -1.631763
-v -0.898064 -1.101091 -1.595235
-v -0.949622 -1.092584 -1.568275
-v -1.006150 -1.101817 -1.554989
-v -1.059045 -1.127383 -1.557397
-v -0.849931 -1.158171 -1.607104
-v -0.885786 -1.143070 -1.563017
-v -0.936331 -1.138022 -1.533403
-v -0.993872 -1.143797 -1.522771
-v -1.049648 -1.159513 -1.532739
-v -0.845479 -1.197953 -1.595868
-v -0.879970 -1.195048 -1.548337
-v -0.930037 -1.194283 -1.517513
-v -0.988056 -1.195774 -1.508090
-v -1.045197 -1.199295 -1.521503
-v -0.846652 -1.239330 -1.599765
-v -0.881503 -1.249110 -1.553428
-v -0.931695 -1.252799 -1.523023
-v -0.989589 -1.249836 -1.513181
-v -1.046370 -1.240673 -1.525400
-v -0.853270 -1.276004 -1.618201
-v -0.890149 -1.297027 -1.577515
-v -0.941055 -1.304664 -1.549096
-v -0.998236 -1.297753 -1.537269
-v -1.052988 -1.277346 -1.543836
-v -0.864326 -1.302391 -1.648369
-v -0.904595 -1.331503 -1.616933
-v -0.956690 -1.341981 -1.591761
-v -1.012681 -1.332229 -1.576687
-v -1.064044 -1.303733 -1.574004
-v -0.878137 -1.314474 -1.685678
-v -0.922639 -1.347290 -1.665679
-v -0.976222 -1.359068 -1.644523
-v -1.030726 -1.348016 -1.625433
-v -1.077854 -1.315816 -1.611313
-v -0.892600 -1.310413 -1.724446
-v -0.941536 -1.341984 -1.716332
-v -0.996675 -1.353325 -1.699350
-v -1.049622 -1.342711 -1.676086
-v -1.092317 -1.311756 -1.650082
-v -0.905513 -1.290827 -1.758773
-v -0.958408 -1.316394 -1.761182
-v -1.014937 -1.325626 -1.747895
-v -1.066494 -1.317120 -1.720936
-v -1.105230 -1.292169 -1.684408
-v -0.925919 -1.229083 -1.812462
-v -0.979076 -1.251844 -1.815524
-v -1.035697 -1.260092 -1.802467
-v -1.087162 -1.252571 -1.775278
-v -1.125636 -1.230425 -1.738097
-v -1.090799 -1.123872 -1.642612
-v -1.102411 -1.159389 -1.674441
-v -1.114024 -1.194907 -1.706269
-v -1.070592 -1.168580 -1.589150
-v -1.082138 -1.209777 -1.620903
-v -1.093684 -1.250973 -1.652655
-v -0.891082 -1.122530 -1.716977
-v -0.902694 -1.158047 -1.748805
-v -0.914307 -1.193565 -1.780634
-v -0.870874 -1.167238 -1.663515
-v -0.882420 -1.208434 -1.695268
-v -0.893967 -1.249631 -1.727020
-v -1.750524 -1.273227 0.726173
-v -1.688630 -2.424658 0.632831
-v -1.788454 -2.081269 0.721864
-v -1.804838 -1.632543 0.752421
-v -1.562458 -1.290732 0.886599
-v -1.588084 -2.434017 0.718600
-v -1.633272 -2.095714 0.854240
-v -1.618261 -1.649909 0.911577
-v -1.592412 -2.611653 0.477868
-v -1.528858 -2.440977 0.751459
-v -1.451679 -1.303750 0.948058
-v -1.480183 -2.639662 0.550581
-v -1.508360 -1.662824 0.972550
-v -1.541863 -2.106456 0.904953
-v -1.637269 -2.382299 0.594705
-v -1.729266 -2.062886 0.676606
-v -1.744654 -1.637260 0.705372
-v -1.501094 -1.308424 0.846131
-v -1.528297 -2.403516 0.688627
-v -1.570316 -2.083784 0.815322
-v -1.555715 -1.656368 0.870055
-v -1.533403 -2.570652 0.455459
-v -1.453614 -2.422652 0.738754
-v -1.377808 -1.320704 0.926206
-v -1.407932 -2.620632 0.530093
-v -1.433798 -1.671554 0.948966
-v -1.466244 -2.101408 0.883841
-v -1.432393 -2.726928 0.566657
-v -1.481929 -2.519734 0.816114
-v -1.341930 -1.022926 0.981547
-v -1.498339 -2.172434 0.990009
-v -1.588851 -0.964844 0.615452
-v -1.465695 -1.697334 1.075142
-v -1.300067 -0.986233 0.846361
-v -1.414294 -0.977266 0.769504
-v -1.680466 -1.049562 0.682571
-v -1.504186 -1.065970 0.832944
-v -1.400350 -1.078172 0.890552
-v -1.443228 -1.087652 0.795046
-v -1.325980 -1.097723 0.872976
-v -1.403141 -1.293589 1.051056
-v -1.859843 -1.273468 0.505800
-v -1.747076 -2.424787 0.515013
-v -1.878659 -2.081469 0.540024
-v -1.913291 -1.632782 0.533793
-v -1.873773 -1.291418 0.259029
-v -1.754522 -2.434383 0.383082
-v -1.890153 -2.096280 0.336401
-v -1.927111 -1.650590 0.288977
-v -1.744845 -2.441453 0.316058
-v -1.855671 -1.304640 0.133666
-v -1.555284 -2.639828 0.399189
-v -1.909152 -1.663707 0.164606
-v -1.875217 -2.107191 0.232957
-v -1.685681 -2.382405 0.497113
-v -1.806830 -2.063057 0.520249
-v -1.839414 -1.637469 0.514350
-v -1.804410 -1.309092 0.234687
-v -1.694512 -2.403883 0.353560
-v -1.821087 -2.084337 0.309801
-v -1.856203 -1.657030 0.264312
-v -1.565316 -2.611593 0.532490
-v -1.689221 -2.423171 0.263804
-v -1.793563 -1.321621 0.088100
-v -1.495273 -2.620824 0.354025
-v -1.845255 -1.672461 0.119524
-v -1.812659 -2.102171 0.185514
-v -1.539092 -2.727163 0.351565
-v -1.767861 -2.520365 0.239713
-v -1.816177 -1.023971 0.025529
-v -1.916547 -2.173355 0.146957
-v -1.674138 -0.965031 0.443524
-v -1.964993 -1.698434 0.068625
-v -1.683245 -0.987077 0.073925
-v -1.691171 -0.977877 0.211358
-v -1.782935 -1.049787 0.476008
-v -1.795992 -1.066613 0.244702
-v -1.779024 -1.079007 0.127194
-v -1.728917 -1.088282 0.219134
-v -1.720018 -1.098592 0.078650
-v -1.908319 -1.294702 0.032684
-v -1.511807 -2.570604 0.498994
-v -1.595865 -2.616102 0.416703
-v -1.518702 -2.615932 0.572254
-v -1.537149 -2.585058 0.384201
-v -1.457325 -2.584882 0.545115
-v -1.816497 -1.271043 0.621596
-v -1.870289 -1.630377 0.648673
-v -1.842892 -2.079468 0.635573
-v -1.723902 -2.423491 0.576922
-v -1.664863 -1.279846 0.815762
-v -1.719856 -1.639110 0.841301
-v -1.717772 -2.086731 0.795789
-v -1.642833 -2.428197 0.680729
-v -1.781616 -1.418972 0.743635
-v -1.645437 -0.937729 0.660770
-v -1.625723 -2.542464 0.580732
-v -1.745664 -2.267738 0.682104
-v -1.810385 -1.868466 0.747006
-v -1.590976 -1.436717 0.906257
-v -1.475050 -0.953589 0.806117
-v -1.553973 -2.549143 0.641938
-v -1.616146 -2.279794 0.792586
-v -1.635347 -1.884758 0.896318
-v -1.564485 -2.622388 0.498058
-v -1.476735 -1.283818 1.024053
-v -1.539156 -1.687438 1.047823
-v -1.571283 -2.161818 0.961615
-v -1.554186 -2.507190 0.786783
-v -1.502275 -2.708683 0.568701
-v -1.447001 -2.701173 0.439864
-v -1.508944 -2.559236 0.656159
-v -1.539856 -2.288759 0.834912
-v -1.478682 -1.449913 0.968558
-v -1.374685 -0.965383 0.861799
-v -1.532244 -1.896875 0.953519
-v -1.801855 -1.635351 0.614730
-v -1.776096 -2.061292 0.602418
-v -1.666518 -2.381285 0.548409
-v -1.594550 -1.292010 0.771582
-v -1.663909 -1.643998 0.789428
-v -1.662089 -2.069747 0.746383
-v -1.592881 -2.388644 0.640083
-v -1.723603 -1.446522 0.690545
-v -1.576812 -2.494213 0.546358
-v -1.689360 -2.237608 0.639600
-v -1.750021 -1.861611 0.700328
-v -1.529216 -1.450603 0.864883
-v -1.495088 -2.513795 0.615960
-v -1.554268 -2.258646 0.757091
-v -1.572209 -1.882001 0.855562
-v -1.506130 -2.584921 0.469069
-v -1.377248 -2.687863 0.405248
-v -1.434694 -2.537521 0.644681
-v -1.464271 -2.276966 0.816934
-v -1.404762 -1.464162 0.945204
-v -1.456948 -1.898697 0.930757
-v -1.640337 -0.963162 0.533873
-v -1.515047 -0.969678 0.692563
-v -1.399961 -2.793507 0.416630
-v -1.311324 -0.887595 0.946792
-v -1.434082 -1.462191 1.074455
-v -1.489831 -1.950315 1.048524
-v -1.494583 -2.362602 0.909303
-v -1.460993 -2.641840 0.704035
-v -1.742306 -1.047515 0.584548
-v -1.600174 -1.055766 0.766547
-v -1.415510 -1.013164 0.954502
-v -1.538149 -1.087983 0.727221
-v -1.715495 -1.161394 0.704372
-v -1.533321 -1.178351 0.859771
-v -1.426015 -1.190961 0.919305
-v -1.472161 -1.198038 0.820589
-v -1.351894 -1.209214 0.899591
-v -1.372535 -1.158257 1.016302
-v -1.879341 -1.280319 0.383404
-v -1.932635 -1.639579 0.412367
-v -1.894748 -2.087121 0.439029
-v -1.757500 -2.428450 0.449576
-v -1.892432 -1.419216 0.520246
-v -1.744481 -0.937947 0.461112
-v -1.667431 -2.542556 0.496655
-v -1.820950 -2.267904 0.530337
-v -1.912130 -1.868690 0.541900
-v -1.906552 -1.437412 0.270098
-v -1.757101 -0.954210 0.237538
-v -1.672745 -2.549405 0.402508
-v -1.830543 -2.280266 0.360391
-v -1.925095 -1.885397 0.312225
-v -1.931355 -1.284820 0.107601
-v -1.987697 -1.688426 0.143626
-v -1.938083 -2.162626 0.222196
-v -1.788237 -2.507706 0.314968
-v -1.583016 -2.708861 0.405937
-v -1.656816 -2.559561 0.358069
-v -1.818077 -2.289372 0.274055
-v -1.888203 -1.450816 0.143019
-v -1.740701 -0.966190 0.123959
-v -1.908247 -1.897704 0.195547
-v -1.801612 -1.292466 0.354173
-v -1.857480 -1.644424 0.399215
-v -1.821736 -2.070099 0.424557
-v -1.694949 -2.388869 0.434327
-v -1.815037 -1.446723 0.506225
-v -1.610511 -2.494287 0.478425
-v -1.753069 -2.237749 0.511172
-v -1.838449 -1.861805 0.522067
-v -1.836232 -1.451279 0.245982
-v -1.616465 -2.514062 0.371279
-v -1.764861 -2.259110 0.332562
-v -1.854447 -1.882623 0.286608
-v -1.602772 -2.537892 0.305858
-v -1.758042 -2.277614 0.224732
-v -1.824872 -1.465088 0.098318
-v -1.844566 -1.899551 0.149371
-v -1.690876 -0.970065 0.338116
-v -1.770105 -0.888606 0.021951
-v -1.945523 -1.463318 0.043458
-v -1.958182 -1.951347 0.104390
-v -1.849851 -2.363385 0.193130
-v -1.665850 -2.642291 0.291069
-v -1.801211 -1.056209 0.361282
-v -1.839170 -1.014097 0.100459
-v -1.732345 -1.088411 0.335747
-v -1.821389 -1.161627 0.490904
-v -1.834882 -1.179015 0.251866
-v -1.817348 -1.191824 0.130430
-v -1.766664 -1.198687 0.226911
-v -1.756790 -1.210106 0.083375
-v -1.862248 -1.159337 0.029106
-v -1.578076 -2.624394 0.446542
-v -1.531689 -2.624292 0.540052
-v -1.517175 -2.589274 0.422365
-v -1.475623 -2.589183 0.506128
-v -1.567829 -0.943726 0.741939
-v -1.694784 -1.425682 0.834451
-v -1.730659 -1.874627 0.830389
-v -1.686671 -2.272297 0.743802
-v -1.589944 -2.547754 0.611251
-v -1.384897 -0.877837 0.919726
-v -1.507647 -1.452387 1.047384
-v -1.563092 -1.940179 1.020769
-v -1.567168 -2.351205 0.880305
-v -1.532501 -2.627205 0.682448
-v -1.644140 -1.419104 0.775772
-v -1.674293 -1.868556 0.779156
-v -1.633039 -2.244226 0.697796
-v -1.540710 -2.503473 0.575457
-v -1.632518 -1.167806 0.791155
-v -1.446122 -1.148491 0.989277
-v -1.566356 -1.189996 0.749388
-v -1.705210 -0.935751 0.566024
-v -1.848493 -1.416759 0.637627
-v -1.871788 -1.866434 0.649674
-v -1.791099 -2.266235 0.610084
-v -1.646598 -2.544466 0.538706
-v -1.762146 -0.944155 0.350221
-v -1.912197 -1.426161 0.396175
-v -1.930278 -1.875067 0.427983
-v -1.834378 -2.272623 0.446045
-v -1.670078 -2.547931 0.449712
-v -1.467779 -2.770891 0.450248
-v -1.793078 -0.878736 0.096888
-v -1.968487 -1.453402 0.118392
-v -1.980418 -1.941099 0.179496
-v -1.870690 -2.351874 0.268447
-v -1.691940 -2.627557 0.361039
-v -1.778443 -1.445025 0.602909
-v -1.803403 -1.859812 0.615743
-v -1.727836 -2.236285 0.578669
-v -1.592497 -2.497195 0.511817
-v -1.834842 -1.419524 0.391343
-v -1.855389 -1.868955 0.414091
-v -1.765323 -2.244518 0.431129
-v -1.611829 -2.503630 0.432091
-v -1.779402 -1.159279 0.603072
-v -1.840276 -1.168264 0.372343
-v -1.885263 -1.149459 0.104030
-v -1.766972 -1.190438 0.344973
-v -0.874137 -0.072697 0.644137
-v -0.924090 -0.122650 0.644137
-v -0.924090 -0.193295 0.644137
-v -0.838814 -0.157973 0.693786
-v -0.888640 -0.178611 0.838418
-v -0.788989 -0.178611 0.838418
-v -0.818176 -0.108147 0.838418
-v -0.888640 -0.137335 0.838418
-v -0.788989 -0.137335 0.838418
-v -1.093560 0.292984 -0.121358
-v -1.093560 0.121358 -0.292984
-v -1.093560 -0.121358 -0.292984
-v -1.093560 -0.292984 -0.121358
-v -1.093560 -0.292984 0.121358
-v -0.874137 -0.243249 0.838418
-v -1.093560 0.060866 0.332097
-v -1.173825 0.000000 -0.145497
-v -1.173825 -0.145497 0.000000
-v -1.173825 0.145498 0.000000
-v -1.093560 0.292984 0.121358
-v -0.753538 -0.122650 0.838418
-v -0.749101 -0.380203 -0.157485
-v -1.025283 0.089448 0.477009
-v -0.955232 -0.089447 0.477009
-v -0.851475 -0.416358 -0.462306
-v -0.851475 -0.098271 -0.685024
-v -0.851475 0.351573 -0.685024
-v -0.851475 0.669660 -0.462306
-v -1.025283 0.430563 0.167312
-v -1.025283 -0.430563 0.167312
-v -1.003557 -0.165728 -0.464350
-v -1.003557 0.454155 -0.219507
-v -0.955232 -0.430563 0.167312
-v -1.025283 -0.089447 0.477009
-v -0.818176 -0.207798 0.838418
-v -0.859453 -0.108147 0.838418
-v -0.859453 -0.207798 0.838418
-v -0.803492 -0.243249 0.838418
-v -0.924090 -0.122650 0.838418
-v -0.753538 -0.193295 0.838418
-v -0.803492 -0.072697 0.838418
-v -0.874137 -0.072697 0.838418
-v -0.924090 -0.193295 0.838418
-v -0.788989 0.137335 0.838418
-v -0.874137 0.243249 0.644137
-v -0.859453 0.207799 0.838418
-v -0.924090 0.193296 0.644137
-v -0.859453 0.108148 0.838418
-v -0.924090 0.122651 0.644137
-v -0.888640 0.178612 0.838418
-v -0.874137 0.072697 0.644137
-v -0.818176 0.207799 0.838418
-v -0.803492 0.072697 0.644137
-v -0.788989 0.178612 0.838418
-v -0.753538 0.122651 0.644137
-v -0.818176 0.108148 0.838418
-v -0.753538 0.193296 0.644137
-v -0.888640 0.137335 0.838418
-v -0.803492 0.243249 0.644137
-v -0.838814 0.157973 0.693786
-v -0.888640 0.178611 0.644137
-v -0.888640 0.137335 0.644137
-v -0.859453 0.108148 0.644137
-v -0.818176 0.108148 0.644137
-v -0.788989 0.137335 0.644137
-v -0.788989 0.178611 0.644137
-v -0.818176 0.207798 0.644137
-v -0.859453 0.207798 0.644137
-v -0.897023 -0.380203 0.157485
-v -0.897023 -0.380203 -0.157485
-v -0.897023 -0.157485 -0.380203
-v -0.897023 0.157485 -0.380203
-v -0.897023 0.380203 -0.157485
-v -0.897023 0.380203 0.157485
-v -0.878238 0.054073 0.438727
-v -0.921936 0.108160 0.427070
-v -0.921936 0.207541 0.386581
-v -0.955232 0.267793 0.403136
-v -0.955232 0.430563 0.167312
-v -0.878238 0.261384 0.354425
-v -1.093560 0.182224 0.281828
-v -0.803492 -0.072697 0.644137
-v -0.753538 -0.122650 0.644137
-v -0.753538 -0.193295 0.644137
-v -0.803492 -0.243249 0.644137
-v -0.874137 -0.243249 0.644137
-v -0.888640 -0.137334 0.423181
-v -0.888640 -0.178611 0.407436
-v -0.859453 -0.207797 0.393878
-v -0.818176 -0.207797 0.393878
-v -0.788989 -0.178611 0.407436
-v -0.788989 -0.137334 0.423181
-v -0.818176 -0.108147 0.432018
-v -0.859453 -0.108147 0.432018
-v -1.173825 0.063989 0.159232
-v -1.093560 -0.060866 0.332097
-v -0.878238 -0.054073 0.438727
-v -0.921936 -0.108160 0.427070
-v -0.921936 -0.207541 0.386581
-v -1.003557 0.197391 -0.464350
-v -0.878238 -0.261384 0.354425
-v -1.093560 -0.182224 0.281829
-v -0.749101 -0.380203 0.157485
-v -0.749101 -0.157485 -0.380203
-v -0.749101 0.157485 -0.380203
-v -0.749101 0.380203 -0.157485
-v -0.749101 0.380203 0.157485
-v -0.783638 0.054073 0.438727
-v -0.724188 0.108160 0.427070
-v -0.724188 0.207541 0.386581
-v -0.783638 0.261384 0.354425
-v -0.783638 -0.054073 0.438727
-v -0.724188 -0.108160 0.427070
-v -0.724188 -0.207541 0.386581
-v -0.783638 -0.261384 0.354425
-v -1.025283 0.267793 0.403136
-v -1.025283 -0.267792 0.403136
-v -0.933506 -0.422492 -0.219507
-v -1.003557 -0.422492 -0.219507
-v -0.933506 -0.165728 -0.464350
-v -0.955232 0.089448 0.477009
-v -0.933506 0.197391 -0.464350
-v -0.933506 0.454155 -0.219507
-v -0.955232 -0.267792 0.403136
-v -0.868328 -0.423461 -0.325842
-v -0.868328 -0.138308 -0.563310
-v -0.868327 0.264959 -0.563310
-v -0.868327 0.550112 -0.325842
-v -0.938379 0.550112 -0.325842
-v -0.938379 0.264959 -0.563310
-v -0.938379 -0.138308 -0.563310
-v -0.938379 -0.423461 -0.325842
-v -0.938379 -0.506980 -0.157927
-v -0.938379 0.633631 -0.157927
-v -1.173825 -0.063988 0.159232
-v -0.659388 0.000000 0.013883
-v -0.818176 -0.108147 0.693786
-v -0.859453 -0.108147 0.693786
-v -0.888640 -0.137334 0.693786
-v -0.888640 -0.178611 0.693786
-v -0.859453 -0.207798 0.693786
-v -0.877069 -0.196227 0.838418
-v -0.892914 -0.157973 0.838418
-v -0.784714 -0.157973 0.838418
-v -0.800560 -0.196227 0.838418
-v -0.838814 -0.103873 0.838418
-v -0.800560 -0.119719 0.838418
-v -0.877069 -0.119719 0.838418
-v -0.838814 -0.212073 0.838418
-v -0.773342 -0.223445 0.838418
-v -0.931406 -0.157973 0.838418
-v -1.093560 0.318118 0.000000
-v -1.093560 0.224943 -0.224943
-v -1.025283 0.380203 -0.157485
-v -1.147765 0.212503 -0.072955
-v -1.093560 0.000000 -0.318118
-v -1.147765 0.072955 -0.212503
-v -1.179819 -0.078990 -0.078990
-v -1.093560 -0.224943 -0.224943
-v -1.147765 -0.072955 -0.212503
-v -1.093560 -0.318118 0.000000
-v -1.147765 -0.212503 -0.072955
-v -1.093560 -0.240160 0.222155
-v -1.147765 -0.212503 0.072955
-v -1.093560 0.000000 0.337674
-v -1.093560 0.240160 0.222155
-v -1.179819 0.078990 -0.078990
-v -1.179819 -0.094987 0.082423
-v -1.179819 0.000000 0.139883
-v -1.179819 0.094987 0.082423
-v -1.147765 0.212503 0.072955
-v -1.025283 0.157485 -0.380203
-v -1.025283 -0.157485 -0.380203
-v -1.025283 -0.380203 -0.157485
-v -1.025283 -0.380203 0.157485
-v -1.147765 0.052587 0.239449
-v -1.025283 0.380203 0.157485
-v -0.749101 -0.412820 0.000000
-v -0.749101 -0.291908 -0.291907
-v -0.749101 0.291908 -0.291908
-v -0.933506 -0.486603 -0.003170
-v -0.659388 -0.380203 -0.157485
-v -1.025283 0.000000 0.485206
-v -1.025283 -0.178758 0.450344
-v -0.955232 0.178758 0.450344
-v -1.025283 0.352934 0.315440
-v -0.933506 0.518266 -0.003170
-v -0.955232 -0.380203 0.157485
-v -0.955232 -0.380203 -0.157485
-v -0.955232 -0.157485 -0.380203
-v -0.955232 0.157485 -0.380203
-v -0.955232 0.380203 -0.157485
-v -0.955232 0.380203 0.157485
-v -0.873201 -0.485597 -0.307469
-v -0.851475 -0.290254 -0.596729
-v -0.851475 0.126651 -0.717641
-v -0.851475 0.543556 -0.596729
-v -0.873201 0.707236 -0.307469
-v -0.781424 -0.416358 -0.462306
-v -0.781423 -0.098271 -0.685024
-v -0.781423 0.351573 -0.685024
-v -0.781423 0.669660 -0.462306
-v -0.955232 0.352934 0.315440
-v -1.003557 0.352362 -0.367283
-v -1.003557 0.015831 -0.500207
-v -0.746223 -0.157973 0.838418
-v -0.904286 -0.092501 0.838418
-v -0.773342 -0.092501 0.838418
-v -0.838814 -0.065381 0.838418
-v -0.904286 -0.223445 0.838418
-v -0.838814 -0.250564 0.838418
-v -0.877069 0.196228 0.838418
-v -0.874137 0.243249 0.838418
-v -0.838814 0.212073 0.838418
-v -0.838814 0.250565 0.644137
-v -0.904286 0.223445 0.644137
-v -0.800560 0.196228 0.838418
-v -0.924090 0.193296 0.838418
-v -0.931406 0.157973 0.644137
-v -0.784714 0.157973 0.838418
-v -0.924090 0.122651 0.838418
-v -0.904286 0.092501 0.644137
-v -0.800560 0.119719 0.838418
-v -0.874137 0.072697 0.838418
-v -0.838814 0.065382 0.644137
-v -0.838814 0.103873 0.838418
-v -0.803492 0.072697 0.838418
-v -0.773342 0.092501 0.644137
-v -0.877069 0.119719 0.838418
-v -0.753538 0.122651 0.838418
-v -0.746223 0.157973 0.644137
-v -0.892914 0.157973 0.838418
-v -0.753538 0.193296 0.838418
-v -0.773342 0.223445 0.644137
-v -0.803492 0.243249 0.838418
-v -0.859453 0.207798 0.693786
-v -0.888640 0.178611 0.693786
-v -0.888640 0.137335 0.693786
-v -0.859453 0.108148 0.693786
-v -0.818176 0.108148 0.693786
-v -0.788989 0.137335 0.693786
-v -0.788989 0.178611 0.693786
-v -0.818176 0.207798 0.693786
-v -0.659388 0.380203 0.157485
-v -0.877069 0.196227 0.644137
-v -0.892914 0.157973 0.644137
-v -0.877069 0.119719 0.644137
-v -0.838814 0.103873 0.644137
-v -0.800560 0.119719 0.644137
-v -0.784714 0.157973 0.644137
-v -0.800560 0.196227 0.644137
-v -0.838814 0.212073 0.644137
-v -0.887630 0.000000 0.442082
-v -0.892327 -0.317882 0.285463
-v -0.897023 -0.412820 0.000000
-v -0.897023 -0.291908 -0.291907
-v -0.897023 -0.000000 -0.412820
-v -0.897023 0.291908 -0.291908
-v -0.897023 0.412820 0.000000
-v -0.892327 0.317882 0.285463
-v -0.830938 -0.380203 0.157485
-v -0.830938 -0.380203 -0.157485
-v -0.830938 -0.157485 -0.380203
-v -0.830938 0.157485 -0.380203
-v -0.830938 0.380203 -0.157485
-v -0.830938 0.380203 0.157485
-v -0.722051 0.157911 0.411654
-v -0.834876 0.263521 0.353297
-v -0.834876 0.051936 0.439262
-v -0.908874 0.069733 0.435278
-v -0.924073 0.157911 0.411654
-v -0.908874 0.245787 0.363591
-v -1.025283 0.236471 0.365727
-v -0.788989 0.137335 0.423181
-v -0.955232 0.236471 0.365727
-v -1.025283 0.078986 0.430960
-v -0.788989 0.178611 0.407436
-v -0.955232 0.078986 0.430960
-v -0.818176 0.207798 0.393878
-v -0.859453 0.207798 0.393878
-v -0.888640 0.178611 0.407436
-v -0.888640 0.137335 0.423181
-v -0.859453 0.108147 0.432018
-v -0.818176 0.108147 0.432018
-v -1.147765 0.125542 0.209230
-v -1.093560 0.121639 0.313952
-v -0.788989 -0.137334 0.693786
-v -0.788989 -0.178611 0.693786
-v -0.818176 -0.207798 0.693786
-v -0.818176 -0.207798 0.644137
-v -0.788989 -0.178611 0.644137
-v -0.788989 -0.137334 0.644137
-v -0.818176 -0.108147 0.644137
-v -0.859453 -0.108147 0.644137
-v -0.888640 -0.137334 0.644137
-v -0.888640 -0.178611 0.644137
-v -0.859453 -0.207798 0.644137
-v -0.904286 -0.223445 0.644137
-v -0.931406 -0.157973 0.644137
-v -0.904286 -0.092501 0.644137
-v -0.838814 -0.065381 0.644137
-v -0.773342 -0.092501 0.644137
-v -0.746223 -0.157973 0.644137
-v -0.773342 -0.223445 0.644137
-v -0.838814 -0.250564 0.644137
-v -0.722051 -0.157911 0.411654
-v -0.838814 -0.103872 0.433088
-v -0.924073 -0.157911 0.411654
-v -0.838814 -0.212071 0.391623
-v -1.003557 0.518266 -0.003170
-v -0.800560 -0.196227 0.399523
-v -0.784714 -0.157973 0.415896
-v -0.800560 -0.119718 0.428739
-v -0.877069 -0.119718 0.428739
-v -0.892914 -0.157973 0.415896
-v -0.877069 -0.196227 0.399523
-v -1.093560 -0.121639 0.313952
-v -1.147765 -0.052587 0.239449
-v -0.834876 -0.263521 0.353297
-v -0.834876 -0.051936 0.439262
-v -0.908874 -0.069732 0.435278
-v -0.908874 -0.245786 0.363591
-v -1.025283 -0.236471 0.365727
-v -0.955232 -0.236471 0.365727
-v -1.025283 -0.078985 0.430960
-v -0.955232 -0.078985 0.430960
-v -1.147765 -0.125542 0.209230
-v -0.766370 0.000000 0.442082
-v -0.757735 -0.317882 0.285463
-v -0.749101 -0.000000 -0.412820
-v -0.749101 0.412820 0.000000
-v -0.659388 -0.380203 0.157485
-v -0.659388 -0.157485 -0.380203
-v -0.659388 0.157485 -0.380203
-v -0.659388 0.380203 -0.157485
-v -0.757735 0.317882 0.285463
-v -0.741188 0.245787 0.363591
-v -0.741188 0.069733 0.435278
-v -0.659388 0.078986 0.430960
-v -0.659388 0.236471 0.365727
-v -0.741188 -0.245786 0.363591
-v -0.741188 -0.069732 0.435278
-v -0.659388 -0.078985 0.430960
-v -0.659388 -0.236471 0.365727
-v -1.025283 -0.352934 0.315441
-v -1.003557 -0.486603 -0.003170
-v -1.025283 0.178758 0.450344
-v -0.955232 -0.352934 0.315441
-v -1.003557 -0.320699 -0.367283
-v -0.955232 -0.178758 0.450344
-v -0.955232 0.000000 0.485206
-v -0.933506 -0.320699 -0.367283
-v -0.933506 0.015831 -0.500207
-v -0.933506 0.352362 -0.367283
-v -0.868328 -0.506980 -0.157927
-v -0.868328 -0.310413 -0.469167
-v -0.868327 0.063326 -0.598087
-v -0.868327 0.437064 -0.469167
-v -0.868327 0.633631 -0.157927
-v -0.938379 0.437064 -0.469167
-v -0.938379 0.063326 -0.598087
-v -0.938379 -0.310413 -0.469167
-v -1.132824 0.249003 0.000000
-v -1.025283 0.412820 0.000000
-v -1.149263 0.154973 -0.154973
-v -1.025283 0.291908 -0.291908
-v -1.132824 0.000000 -0.249003
-v -1.025283 -0.000000 -0.412820
-v -1.193006 0.000000 0.016561
-v -1.149263 -0.154973 -0.154973
-v -1.025283 -0.291908 -0.291907
-v -1.132824 -0.249003 0.000000
-v -1.025283 -0.412820 0.000000
-v -1.149263 -0.168120 0.154155
-v -1.025283 -0.311654 0.288289
-v -1.149263 0.000000 0.237965
-v -1.025283 0.000000 0.438198
-v -1.149263 0.168120 0.154155
-v -1.025283 0.311654 0.288288
-v -0.659388 0.311654 0.288288
-v -0.659388 -0.412820 0.000000
-v -0.659388 -0.291908 -0.291907
-v -0.659388 0.291908 -0.291908
-v -0.955232 0.000000 0.438198
-v -0.955232 -0.311654 0.288289
-v -0.955232 -0.412820 0.000000
-v -0.955232 -0.291908 -0.291907
-v -0.955232 -0.000000 -0.412820
-v -0.955232 0.291908 -0.291908
-v -0.955232 0.311654 0.288288
-v -0.955232 0.412820 0.000000
-v -0.803150 -0.485597 -0.307469
-v -0.781424 -0.290254 -0.596729
-v -0.781423 0.126651 -0.717641
-v -0.781423 0.543556 -0.596729
-v -0.803149 0.707236 -0.307469
-v -0.838814 0.250565 0.838418
-v -0.904286 0.223445 0.838418
-v -0.931406 0.157973 0.838418
-v -0.904286 0.092501 0.838418
-v -0.838814 0.065382 0.838418
-v -0.773342 0.092501 0.838418
-v -0.746223 0.157973 0.838418
-v -0.773342 0.223445 0.838418
-v -0.838814 0.212073 0.693786
-v -0.877069 0.196227 0.693786
-v -0.892914 0.157973 0.693786
-v -0.877069 0.119719 0.693786
-v -0.838814 0.103873 0.693786
-v -0.800560 0.119719 0.693786
-v -0.784714 0.157973 0.693786
-v -0.800560 0.196227 0.693786
-v -0.659388 0.412820 0.000000
-v -0.659388 0.000000 0.438198
-v -0.659388 -0.311654 0.288289
-v -0.659388 -0.000000 -0.412820
-v -0.832907 0.000000 0.442349
-v -0.831923 -0.318416 0.285181
-v -0.830938 -0.412820 0.000000
-v -0.830938 -0.291908 -0.291907
-v -0.830938 -0.000000 -0.412820
-v -0.830938 0.291908 -0.291908
-v -0.830938 0.412820 0.000000
-v -0.831923 0.318417 0.285181
-v -0.838814 0.103872 0.433088
-v -0.955232 0.157850 0.407413
-v -1.025283 0.157850 0.407413
-v -0.838814 0.212072 0.391623
-v -0.659388 0.157850 0.407413
-v -0.800560 0.196227 0.399523
-v -0.784714 0.157973 0.415896
-v -0.800560 0.119719 0.428739
-v -0.877069 0.119719 0.428739
-v -0.892914 0.157973 0.415896
-v -0.877069 0.196227 0.399523
-v -1.132824 0.099110 0.253041
-v -0.838814 -0.212073 0.693786
-v -0.877069 -0.196227 0.693786
-v -0.892914 -0.157973 0.693786
-v -0.877069 -0.119718 0.693786
-v -0.838814 -0.103873 0.693786
-v -0.800560 -0.119718 0.693786
-v -0.784714 -0.157973 0.693786
-v -0.800560 -0.196227 0.693786
-v -0.800560 -0.196227 0.644137
-v -0.784714 -0.157973 0.644137
-v -0.800560 -0.119718 0.644137
-v -0.838814 -0.103873 0.644137
-v -0.877069 -0.119718 0.644137
-v -0.892914 -0.157973 0.644137
-v -0.877069 -0.196227 0.644137
-v -0.838814 -0.212073 0.644137
-v -0.955232 -0.157850 0.407413
-v -1.025283 -0.157850 0.407413
-v -0.659388 -0.157850 0.407413
-v -1.132824 -0.099110 0.253041
-v -0.707107 -0.478468 -0.198188
-v -0.707107 0.198188 0.478468
-v -0.707107 0.478468 -0.198188
-v -0.707107 -0.198188 -0.478468
-v -0.707107 -0.198188 0.478468
-v -0.707107 0.478468 0.198188
-v -0.707107 0.198188 -0.478468
-v -0.707107 -0.478468 0.198188
-v -0.659388 0.000000 0.000000
-v -0.707107 -0.367352 -0.367352
-v -0.707107 0.000000 0.519514
-v -0.707107 0.367352 0.367352
-v -0.707107 0.519514 0.000000
-v -0.707107 0.367352 -0.367352
-v -0.707107 -0.000000 -0.519514
-v -0.707107 -0.519514 0.000000
-v -0.707107 -0.367352 0.367352
-v -0.659388 0.478468 -0.198188
-v -0.659388 0.478468 0.198188
-v -0.659388 0.198188 0.478468
-v -0.659388 -0.198188 0.478468
-v -0.659388 -0.478468 0.198188
-v -0.659388 -0.478468 -0.198188
-v -0.659388 -0.198188 -0.478468
-v -0.659388 0.198188 -0.478468
-v -0.659388 0.000000 0.519514
-v -0.659388 -0.367352 0.367352
-v -0.659388 -0.519514 0.000000
-v -0.659388 -0.367352 -0.367352
-v -0.659388 -0.000000 -0.519514
-v -0.659388 0.519514 0.000000
-v -0.659388 0.367352 -0.367352
-v -0.659388 0.367352 0.367352
-v -0.863307 -0.626480 -1.251705
-v -0.682393 -0.618577 -0.627969
-v -0.647988 -0.631848 -0.674737
-v -0.673610 -0.653314 -0.605838
-v -0.636513 -0.677234 -0.645822
-v -0.660460 -0.676295 -0.573090
-v -0.619331 -0.707260 -0.603034
-v -0.644944 -0.684023 -0.534710
-v -0.599059 -0.717357 -0.552888
-v -0.629424 -0.675320 -0.496540
-v -0.578782 -0.705986 -0.503017
-v -0.616264 -0.651511 -0.464392
-v -0.561587 -0.674878 -0.461014
-v -0.607467 -0.616222 -0.443160
-v -0.550092 -0.628771 -0.433273
-v -0.635739 -0.619326 -0.690395
-v -0.786867 -0.626894 -1.282691
-v -0.825091 -0.643768 -1.266979
-v -0.482341 -0.619661 -0.709061
-v -0.539721 -0.632434 -0.718624
-v -0.597888 -0.636714 -0.706570
-v -0.473558 -0.654397 -0.686931
-v -0.528246 -0.677820 -0.689709
-v -0.585468 -0.685839 -0.675273
-v -0.460408 -0.677379 -0.654182
-v -0.511064 -0.707847 -0.646921
-v -0.566870 -0.718340 -0.628960
-v -0.444892 -0.685106 -0.615802
-v -0.490791 -0.717943 -0.596775
-v -0.544928 -0.729268 -0.574682
-v -0.429373 -0.676403 -0.577632
-v -0.470514 -0.706572 -0.546903
-v -0.522980 -0.716960 -0.520702
-v -0.416213 -0.652595 -0.545484
-v -0.453320 -0.675465 -0.504900
-v -0.504368 -0.683290 -0.475238
-v -0.407415 -0.617305 -0.524252
-v -0.441825 -0.629357 -0.477160
-v -0.491927 -0.633383 -0.445212
-v -0.559298 -0.619740 -0.721381
-v -0.879130 -0.585156 -1.245817
-v -0.863290 -0.544004 -1.252763
-v -0.604371 -0.574824 -0.436077
-v -0.546048 -0.574682 -0.424018
-v -0.644921 -0.576099 -0.536095
-v -0.685470 -0.577374 -0.636112
-v -0.652009 -0.578013 -0.685377
-v -0.682375 -0.535976 -0.629029
-v -0.647965 -0.523925 -0.676122
-v -0.673577 -0.500687 -0.607797
-v -0.636470 -0.477817 -0.648381
-v -0.660417 -0.476879 -0.575649
-v -0.619276 -0.446710 -0.606378
-v -0.644898 -0.468176 -0.537479
-v -0.598999 -0.435339 -0.556507
-v -0.629382 -0.475903 -0.499099
-v -0.578726 -0.445435 -0.506360
-v -0.616232 -0.498884 -0.466351
-v -0.561544 -0.475462 -0.463572
-v -0.607449 -0.533621 -0.444220
-v -0.550069 -0.520847 -0.434658
-v -0.635721 -0.536850 -0.691453
-v -0.825078 -0.585449 -1.267727
-v -0.771027 -0.585742 -1.289637
-v -0.786849 -0.544418 -1.283749
-v -0.825066 -0.527130 -1.268475
-v -0.404320 -0.575908 -0.517169
-v -0.437781 -0.575268 -0.467905
-v -0.487549 -0.574838 -0.435194
-v -0.444869 -0.577182 -0.617187
-v -0.485419 -0.578457 -0.717204
-v -0.543742 -0.578600 -0.729263
-v -0.482323 -0.537060 -0.710121
-v -0.539698 -0.524511 -0.720008
-v -0.597863 -0.519899 -0.708069
-v -0.473526 -0.501770 -0.688889
-v -0.528203 -0.478403 -0.692268
-v -0.585422 -0.469992 -0.678043
-v -0.460366 -0.477962 -0.656741
-v -0.511008 -0.447296 -0.650264
-v -0.566810 -0.436322 -0.632579
-v -0.444846 -0.469259 -0.618571
-v -0.490731 -0.435925 -0.600393
-v -0.544862 -0.424014 -0.578599
-v -0.429330 -0.476986 -0.580191
-v -0.470459 -0.446021 -0.550247
-v -0.522920 -0.434942 -0.524321
-v -0.416180 -0.499968 -0.547443
-v -0.453277 -0.476048 -0.507459
-v -0.504322 -0.467442 -0.478008
-v -0.407397 -0.534704 -0.525312
-v -0.441802 -0.521433 -0.478544
-v -0.491902 -0.516567 -0.446711
-v -0.559281 -0.537264 -0.722439
-v -1.004603 -1.231164 -1.599998
-v -0.933715 -0.690640 -1.246944
-v -0.890084 -0.723524 -1.270651
-v -0.918379 -0.690299 -1.207724
-v -0.870046 -0.723079 -1.219408
-v -0.904142 -0.673870 -1.171656
-v -0.851445 -0.701613 -1.172282
-v -0.893172 -0.643853 -1.144231
-v -0.837112 -0.662393 -1.136450
-v -0.887138 -0.604817 -1.129624
-v -0.829229 -0.611391 -1.117365
-v -0.886960 -0.562707 -1.130059
-v -0.828996 -0.556371 -1.117934
-v -0.892665 -0.523932 -1.145470
-v -0.836449 -0.505709 -1.138069
-v -0.879923 -0.724831 -1.291796
-v -0.927784 -1.231800 -1.630031
-v -0.961061 -1.240857 -1.601689
-v -0.732674 -0.692302 -1.325542
-v -0.781281 -0.724423 -1.313188
-v -0.836556 -0.735387 -1.293913
-v -0.717338 -0.691962 -1.286322
-v -0.761244 -0.723979 -1.261944
-v -0.814868 -0.734905 -1.238447
-v -0.703101 -0.675532 -1.250254
-v -0.742642 -0.702512 -1.214819
-v -0.794734 -0.711671 -1.187439
-v -0.692131 -0.645515 -1.222829
-v -0.728309 -0.663293 -1.178987
-v -0.779220 -0.669220 -1.148654
-v -0.686098 -0.606480 -1.208222
-v -0.720426 -0.612291 -1.159902
-v -0.770687 -0.614015 -1.127997
-v -0.685920 -0.564369 -1.208657
-v -0.720193 -0.557271 -1.160470
-v -0.770435 -0.554462 -1.128612
-v -0.691624 -0.525594 -1.224068
-v -0.727647 -0.506609 -1.180606
-v -0.778502 -0.499626 -1.150407
-v -0.803105 -0.725466 -1.321828
-v -1.032903 -1.208399 -1.625950
-v -1.029384 -1.185896 -1.664342
-v -0.903383 -0.494396 -1.173510
-v -0.850453 -0.467119 -1.174705
-v -0.925599 -0.584618 -1.228428
-v -0.947815 -0.674839 -1.283345
-v -0.908507 -0.702879 -1.318211
-v -0.958533 -0.645303 -1.311386
-v -0.922511 -0.664289 -1.354848
-v -0.964238 -0.606528 -1.326797
-v -0.929964 -0.613627 -1.374983
-v -0.964060 -0.564418 -1.327231
-v -0.929731 -0.558607 -1.375551
-v -0.958026 -0.525383 -1.312625
-v -0.921848 -0.507605 -1.356467
-v -0.947056 -0.495365 -1.285199
-v -0.907515 -0.468385 -1.320634
-v -0.932819 -0.478936 -1.249131
-v -0.888914 -0.446919 -1.273509
-v -0.917483 -0.478595 -1.209911
-v -0.868876 -0.446474 -1.222266
-v -0.904705 -0.679563 -1.356140
-v -0.978584 -1.208848 -1.647186
-v -0.924265 -1.209297 -1.668423
-v -0.952566 -1.186532 -1.694375
-v -0.996107 -1.176839 -1.692684
-v -0.702342 -0.496058 -1.252108
-v -0.741651 -0.468018 -1.217242
-v -0.793660 -0.457856 -1.190062
-v -0.724558 -0.586280 -1.307025
-v -0.746774 -0.676502 -1.361943
-v -0.799704 -0.703779 -1.360748
-v -0.757493 -0.646966 -1.389983
-v -0.813708 -0.665188 -1.397385
-v -0.871655 -0.671271 -1.385047
-v -0.763197 -0.608191 -1.405394
-v -0.821161 -0.614527 -1.417520
-v -0.879722 -0.616435 -1.406841
-v -0.763019 -0.566080 -1.405829
-v -0.820929 -0.559506 -1.418088
-v -0.879470 -0.556882 -1.407456
-v -0.756986 -0.527045 -1.391222
-v -0.813046 -0.508504 -1.399003
-v -0.870938 -0.501678 -1.386799
-v -0.746015 -0.497028 -1.363797
-v -0.798713 -0.469285 -1.363171
-v -0.855424 -0.459227 -1.348014
-v -0.731779 -0.480598 -1.327729
-v -0.780111 -0.447819 -1.316046
-v -0.835290 -0.435992 -1.297006
-v -0.716443 -0.480258 -1.288509
-v -0.760074 -0.447374 -1.264802
-v -0.813601 -0.435511 -1.241541
-v -0.827886 -0.680198 -1.386172
-v -1.180859 -0.645406 0.355250
-v -0.594171 -0.827093 0.144001
-v -0.645416 -0.830652 0.113862
-v -0.582831 -0.867274 0.138486
-v -0.630600 -0.883152 0.106657
-v -0.558528 -0.899571 0.126664
-v -0.598847 -0.925350 0.091211
-v -0.524961 -0.919068 0.110335
-v -0.554989 -0.950823 0.069876
-v -0.487240 -0.922795 0.091984
-v -0.505704 -0.955694 0.045899
-v -0.451108 -0.910186 0.074405
-v -0.458496 -0.939219 0.022931
-v -0.422066 -0.883160 0.060275
-v -0.420550 -0.903908 0.004469
-v -0.658134 -0.815697 0.100954
-v -1.216943 -0.645409 0.281079
-v -1.203219 -0.661802 0.320267
-v -0.688606 -0.827102 -0.050112
-v -0.696524 -0.830657 0.008810
-v -0.681357 -0.831904 0.066390
-v -0.677267 -0.867283 -0.055626
-v -0.681708 -0.883157 0.001604
-v -0.665321 -0.888729 0.058591
-v -0.652964 -0.899580 -0.067448
-v -0.649955 -0.925355 -0.013842
-v -0.630951 -0.934404 0.041872
-v -0.619397 -0.919077 -0.083778
-v -0.606097 -0.950828 -0.035177
-v -0.583480 -0.961976 0.018779
-v -0.581676 -0.922804 -0.102129
-v -0.556812 -0.955699 -0.059154
-v -0.530135 -0.967248 -0.007173
-v -0.545544 -0.910195 -0.119707
-v -0.509604 -0.939224 -0.082122
-v -0.479037 -0.949416 -0.032034
-v -0.516501 -0.883170 -0.133838
-v -0.471658 -0.903913 -0.100584
-v -0.437965 -0.911196 -0.052017
-v -0.694218 -0.815701 0.026783
-v -1.162960 -0.605827 0.365538
-v -1.160008 -0.566250 0.345103
-v -0.404535 -0.845832 0.051744
-v -0.397644 -0.855136 -0.006677
-v -0.497677 -0.815488 0.097056
-v -0.590819 -0.785145 0.142369
-v -0.641037 -0.775845 0.111730
-v -0.573288 -0.747816 0.133838
-v -0.618132 -0.727073 0.100584
-v -0.544246 -0.720791 0.119708
-v -0.580186 -0.691762 0.082122
-v -0.508114 -0.708181 0.102129
-v -0.532977 -0.675287 0.059154
-v -0.470393 -0.711909 0.083778
-v -0.483693 -0.680157 0.035177
-v -0.436826 -0.731405 0.067448
-v -0.439835 -0.705631 0.013842
-v -0.412523 -0.763703 0.055627
-v -0.408081 -0.747829 -0.001604
-v -0.401184 -0.803884 0.050112
-v -0.393266 -0.800329 -0.008809
-v -0.637283 -0.736541 0.090806
-v -1.188475 -0.605830 0.313091
-v -1.213991 -0.605832 0.260644
-v -1.196092 -0.566253 0.270932
-v -1.173732 -0.549858 0.305916
-v -0.498970 -0.845841 -0.142368
-v -0.448753 -0.855141 -0.111730
-v -0.413172 -0.858405 -0.064081
-v -0.592113 -0.815498 -0.097056
-v -0.685255 -0.785154 -0.051744
-v -0.692145 -0.775850 0.006677
-v -0.667724 -0.747826 -0.060275
-v -0.669240 -0.727078 -0.004469
-v -0.651825 -0.719790 0.052017
-v -0.638682 -0.720800 -0.074405
-v -0.631294 -0.691767 -0.022931
-v -0.610753 -0.681570 0.032034
-v -0.602550 -0.708191 -0.091984
-v -0.584086 -0.675292 -0.045899
-v -0.559655 -0.663738 0.007174
-v -0.564829 -0.711918 -0.110335
-v -0.534801 -0.680162 -0.069876
-v -0.506310 -0.669010 -0.018779
-v -0.531262 -0.731415 -0.126664
-v -0.490943 -0.705636 -0.091211
-v -0.458838 -0.696582 -0.041872
-v -0.506958 -0.763712 -0.138486
-v -0.459190 -0.747834 -0.106657
-v -0.424469 -0.742257 -0.058591
-v -0.495619 -0.803893 -0.144001
-v -0.444374 -0.800334 -0.113862
-v -0.408433 -0.799082 -0.066389
-v -0.673367 -0.736545 0.016635
-v -1.536357 -1.231944 0.528825
-v -1.164006 -0.710783 0.421187
-v -1.192850 -0.742883 0.380143
-v -1.126223 -0.712593 0.402674
-v -1.143485 -0.745247 0.355955
-v -1.090689 -0.698163 0.385279
-v -1.097056 -0.726395 0.333226
-v -1.062811 -0.669692 0.371650
-v -1.060633 -0.689195 0.315419
-v -1.046836 -0.631513 0.363861
-v -1.039760 -0.639312 0.305243
-v -1.045194 -0.589439 0.363099
-v -1.037615 -0.584339 0.304247
-v -1.058136 -0.549875 0.369480
-v -1.054524 -0.532646 0.312584
-v -1.214803 -0.743225 0.371777
-v -1.572647 -1.231869 0.454755
-v -1.542129 -1.241999 0.485718
-v -1.258980 -0.710587 0.227338
-v -1.244250 -0.742777 0.275232
-v -1.221028 -0.754118 0.328890
-v -1.221198 -0.712397 0.208825
-v -1.194885 -0.745142 0.251044
-v -1.167595 -0.756677 0.302709
-v -1.185663 -0.697968 0.191430
-v -1.148456 -0.726289 0.228316
-v -1.117342 -0.736271 0.278108
-v -1.157786 -0.669496 0.177800
-v -1.112033 -0.689089 0.210508
-v -1.077917 -0.696007 0.258833
-v -1.141810 -0.631317 0.170012
-v -1.091160 -0.639206 0.200332
-v -1.055324 -0.642013 0.247819
-v -1.140168 -0.589243 0.169250
-v -1.089014 -0.584233 0.199337
-v -1.053002 -0.582511 0.246741
-v -1.153110 -0.549679 0.175631
-v -1.105924 -0.532541 0.207673
-v -1.071305 -0.526559 0.255765
-v -1.251093 -0.743150 0.297706
-v -1.558712 -1.207594 0.558825
-v -1.596099 -1.183214 0.558145
-v -1.083691 -0.518844 0.382032
-v -1.087914 -0.492103 0.328983
-v -1.140988 -0.605927 0.410016
-v -1.198284 -0.693010 0.438000
-v -1.237636 -0.719662 0.402109
-v -1.223839 -0.661979 0.450551
-v -1.271026 -0.679118 0.418509
-v -1.236781 -0.622415 0.456932
-v -1.287935 -0.627425 0.426845
-v -1.235139 -0.580341 0.456170
-v -1.285790 -0.572452 0.425850
-v -1.219164 -0.542162 0.448382
-v -1.264917 -0.522569 0.415674
-v -1.191287 -0.513691 0.434752
-v -1.228494 -0.485370 0.397866
-v -1.155752 -0.499261 0.417357
-v -1.182065 -0.466517 0.375138
-v -1.117969 -0.501071 0.398844
-v -1.132700 -0.468881 0.350950
-v -1.274545 -0.694495 0.401096
-v -1.584373 -1.207541 0.506450
-v -1.610034 -1.207489 0.454074
-v -1.632390 -1.183139 0.484074
-v -1.626618 -1.173084 0.527182
-v -1.178666 -0.518649 0.188182
-v -1.139313 -0.491997 0.224073
-v -1.107445 -0.482675 0.273516
-v -1.235962 -0.605731 0.216166
-v -1.293259 -0.692814 0.244150
-v -1.289036 -0.719556 0.297198
-v -1.318814 -0.661784 0.256702
-v -1.322426 -0.679012 0.313598
-v -1.305645 -0.685099 0.370417
-v -1.331756 -0.622220 0.263083
-v -1.339335 -0.627319 0.321935
-v -1.323947 -0.629147 0.379441
-v -1.330114 -0.580146 0.262321
-v -1.337190 -0.572347 0.320939
-v -1.321625 -0.569645 0.378363
-v -1.314138 -0.541967 0.254532
-v -1.316317 -0.522463 0.310763
-v -1.299033 -0.515652 0.367349
-v -1.286261 -0.513495 0.240903
-v -1.279894 -0.485264 0.292956
-v -1.259608 -0.475387 0.348074
-v -1.250726 -0.499066 0.223507
-v -1.233465 -0.466411 0.270227
-v -1.209355 -0.454981 0.323473
-v -1.212944 -0.500876 0.204995
-v -1.184100 -0.468775 0.246039
-v -1.155922 -0.457541 0.297292
-v -1.310835 -0.694420 0.327026
-v -1.666868 -1.085842 0.428225
-v -1.633369 -1.059764 0.466150
-v -1.603599 -1.050567 0.515746
-v -1.582089 -1.059651 0.569461
-v -1.572115 -1.085633 0.619120
-v -1.607809 -1.106651 0.398933
-v -1.574888 -1.076423 0.437140
-v -1.545320 -1.065769 0.486835
-v -1.523607 -1.076310 0.540451
-v -1.513055 -1.106442 0.589828
-v -1.576834 -1.129750 0.383583
-v -1.534416 -1.106603 0.417084
-v -1.501514 -1.098436 0.465127
-v -1.483136 -1.106490 0.520396
-v -1.482080 -1.129541 0.574478
-v -1.556128 -1.164320 0.373344
-v -1.507364 -1.151771 0.403706
-v -1.472233 -1.147325 0.450646
-v -1.456083 -1.151659 0.507017
-v -1.461375 -1.164112 0.564238
-v -1.548845 -1.205099 0.369773
-v -1.497848 -1.205051 0.399041
-v -1.461933 -1.204994 0.445596
-v -1.446568 -1.204938 0.502352
-v -1.454092 -1.204890 0.560668
-v -1.556093 -1.245877 0.373415
-v -1.507318 -1.258330 0.403799
-v -1.472183 -1.262663 0.450747
-v -1.456037 -1.258217 0.507111
-v -1.461339 -1.245668 0.564310
-v -1.576768 -1.280447 0.383715
-v -1.534331 -1.303498 0.417257
-v -1.501422 -1.311553 0.465314
-v -1.483051 -1.303385 0.520569
-v -1.482015 -1.280238 0.574610
-v -1.607724 -1.303546 0.399106
-v -1.574776 -1.333678 0.437366
-v -1.545200 -1.344220 0.487079
-v -1.523496 -1.333565 0.540677
-v -1.512970 -1.303337 0.590000
-v -1.644246 -1.311657 0.417243
-v -1.622496 -1.344276 0.461064
-v -1.596850 -1.355690 0.512729
-v -1.571216 -1.344163 0.564375
-v -1.549493 -1.311448 0.608138
-v -1.680776 -1.303545 0.435366
-v -1.670224 -1.333678 0.484743
-v -1.648511 -1.344219 0.538360
-v -1.618944 -1.333565 0.588054
-v -1.586022 -1.303337 0.626261
-v -1.746067 -1.261105 0.467728
-v -1.736847 -1.288757 0.517763
-v -1.715603 -1.298428 0.571611
-v -1.685567 -1.288645 0.621075
-v -1.651313 -1.260897 0.658623
-v -1.591914 -1.129449 0.628996
-v -1.611714 -1.173265 0.638871
-v -1.631514 -1.217081 0.648747
-v -1.531297 -1.155666 0.598936
-v -1.549539 -1.204890 0.608044
-v -1.567780 -1.254113 0.617153
-v -1.686668 -1.129657 0.438101
-v -1.706468 -1.173473 0.447977
-v -1.726267 -1.217289 0.457852
-v -1.626051 -1.155874 0.408041
-v -1.644293 -1.205098 0.417150
-v -1.662534 -1.254322 0.426258
-v 1.346916 -2.381913 -1.942518
-v 1.265770 -2.511589 -1.950470
-v 1.413709 -2.223495 -1.916103
-v 1.436000 -1.290831 -1.569027
-v 1.468500 -1.421149 -1.635915
-v 1.398500 -1.193071 -1.512075
-v 1.171437 -2.608611 -1.939058
-v 1.070510 -2.689307 -1.917963
-v 1.070510 -2.689307 -1.917963
-v 1.491001 -1.616583 -1.722674
-v 1.493247 -1.836494 -1.808384
-v 1.464985 -2.040243 -1.872126
-v 1.338816 -2.385806 -1.864556
-v 1.258468 -2.511830 -1.872606
-v 1.401053 -2.234350 -1.839309
-v 1.422199 -1.329201 -1.501505
-v 1.452947 -1.457120 -1.567527
-v 1.386968 -1.232498 -1.444784
-v 1.155298 -2.611952 -1.863357
-v 1.040718 -2.699124 -1.845459
-v 1.040718 -2.699124 -1.845459
-v 1.474728 -1.647468 -1.652153
-v 1.477168 -1.860866 -1.735320
-v 1.449890 -2.057932 -1.796968
-v 1.200002 -2.702898 -1.917805
-v 1.325420 -2.597713 -1.929512
-v 1.060535 -2.792873 -1.896688
-v 1.060535 -2.792873 -1.896688
-v 1.060535 -2.792873 -1.896688
-v 1.422740 -2.462110 -1.922399
-v 1.498562 -2.297402 -1.896762
-v 1.450668 -1.047202 -1.388864
-v 1.405405 -0.929884 -1.320697
-v 1.405405 -0.929884 -1.320697
-v 1.495931 -1.164521 -1.457031
-v 1.559489 -2.104904 -1.852897
-v 1.596285 -1.887691 -1.787343
-v 1.061223 -0.969297 -1.590438
-v 0.975849 -0.963651 -1.635029
-v 1.144347 -0.984398 -1.525028
-v 1.144347 -0.984398 -1.525028
-v 1.599714 -1.648835 -1.696641
-v 1.578456 -1.432248 -1.602142
-v 1.316506 -1.039091 -1.331341
-v 1.316506 -1.039091 -1.331341
-v 1.316506 -1.039091 -1.331341
-v 1.323499 -0.997551 -1.398171
-v 1.323499 -0.997551 -1.398171
-v 1.323499 -0.997551 -1.398171
-v 1.229836 -1.009296 -1.434471
-v 1.361000 -1.095311 -1.455123
-v 1.351737 -1.135795 -1.388062
-v 1.541195 -1.281839 -1.525198
-v 0.897126 -2.376407 -2.126591
-v 0.834317 -2.216401 -2.153215
-v 0.957828 -2.507818 -2.076493
-v 0.594692 -1.280531 -1.913326
-v 0.583553 -1.183093 -1.845587
-v 0.615678 -1.410708 -1.984926
-v 1.015041 -2.606696 -2.003062
-v 0.656356 -1.606364 -2.064247
-v 0.710224 -1.826907 -2.128831
-v 0.770780 -2.031744 -2.156225
-v 0.848169 -2.379799 -2.065350
-v 0.789280 -2.226860 -2.089673
-v 0.908447 -2.507545 -2.015850
-v 0.556394 -1.318601 -1.855829
-v 0.543776 -1.222175 -1.789854
-v 0.578073 -1.446409 -1.925564
-v 0.973411 -2.609725 -1.937794
-v 0.617874 -1.636978 -2.002815
-v 0.669959 -1.850984 -2.065666
-v 0.728485 -2.049100 -2.092198
-v 0.977802 -2.700177 -2.008739
-v 0.898807 -2.592490 -2.104101
-v 0.827289 -2.454819 -2.166083
-v 0.758721 -2.288345 -2.199537
-v 0.463054 -1.035111 -1.793038
-v 0.476111 -1.152035 -1.874386
-v 0.449998 -0.918187 -1.711691
-v 0.449998 -0.918187 -1.711691
-v 0.688576 -2.094242 -2.209312
-v 0.620948 -1.875750 -2.186494
-v 0.883613 -0.967122 -1.663124
-v 0.778187 -0.979915 -1.674877
-v 0.778187 -0.979915 -1.674877
-v 0.559933 -1.636105 -2.122165
-v 0.513386 -1.419208 -2.038015
-v 0.518541 -1.029322 -1.657903
-v 0.518541 -1.029322 -1.657903
-v 0.518541 -1.029322 -1.657903
-v 0.561274 -0.988219 -1.710107
-v 0.561274 -0.988219 -1.710107
-v 0.561274 -0.988219 -1.710107
-v 0.653243 -1.002236 -1.670437
-v 0.572414 -1.085656 -1.777847
-v 0.531159 -1.125748 -1.723878
-v 0.489167 -1.268959 -1.955734
-v 0.999583 -0.916445 -1.691613
-v 1.098737 -0.923019 -1.639856
-v 1.186319 -0.939764 -1.571326
-v 1.258708 -0.966228 -1.488358
-v 1.462002 -1.138859 -1.523597
-v 1.507285 -1.256169 -1.591771
-v 1.544477 -1.406562 -1.668674
-v 1.565490 -1.623118 -1.763035
-v 1.561621 -1.861848 -1.853456
-v 1.524171 -2.078762 -1.918540
-v 1.462599 -2.270678 -1.961814
-v 1.386359 -2.434413 -1.986806
-v 1.296576 -2.567304 -1.993048
-v 1.194369 -2.666681 -1.980072
-v 1.085950 -2.749303 -1.957488
-v 1.085950 -2.749303 -1.957488
-v 1.085950 -2.749303 -1.957488
-v 1.371435 -0.904239 -1.387250
-v 1.371435 -0.904239 -1.387250
-v 1.218154 -1.174971 -1.637441
-v 1.247874 -1.262520 -1.693531
-v 1.260426 -1.370523 -1.776037
-v 1.171964 -1.385746 -1.855236
-v 1.080322 -1.380102 -1.902771
-v 1.416718 -1.021549 -1.455423
-v 1.188463 -1.087421 -1.581340
-v 0.892480 -0.920494 -1.724265
-v 0.781657 -0.934810 -1.736932
-v 0.671339 -0.959037 -1.728736
-v 0.547498 -1.127663 -1.897852
-v 0.560545 -1.244579 -1.979218
-v 0.584785 -1.394812 -2.061422
-v 0.631410 -1.611682 -2.145301
-v 0.692545 -1.851208 -2.209120
-v 0.760315 -2.069410 -2.231143
-v 0.830519 -2.262939 -2.220489
-v 0.898952 -2.428447 -2.186274
-v 0.964545 -2.563239 -2.128929
-v 1.026226 -2.664622 -2.048883
-v 0.521403 -0.893832 -1.735119
-v 0.521403 -0.893832 -1.735119
-v 0.800375 -1.169856 -1.808414
-v 0.816670 -1.257241 -1.869998
-v 0.863292 -1.365661 -1.938561
-v 0.981553 -1.383415 -1.933160
-v 0.534451 -1.010748 -1.816485
-v 0.784051 -1.082470 -1.746843
-v 0.880985 -1.086471 -1.688243
-v 0.880985 -1.086471 -1.688243
-v 0.918822 -1.065924 -1.651006
-v 0.969587 -1.059170 -1.622582
-v 1.025551 -1.067239 -1.607299
-v 1.078193 -1.088900 -1.607484
-v 1.078193 -1.088900 -1.607484
-v 1.056154 -1.127912 -1.554839
-v 0.858945 -1.125482 -1.635599
-v 0.848603 -1.157603 -1.611310
-v 1.045811 -1.160033 -1.530550
-v 0.843600 -1.197380 -1.600290
-v 1.040808 -1.199809 -1.519530
-v 0.844698 -1.238756 -1.604215
-v 1.041906 -1.241186 -1.523456
-v 0.851730 -1.275434 -1.622490
-v 1.048938 -1.277864 -1.541730
-v 0.863625 -1.301829 -1.652331
-v 1.060833 -1.304259 -1.571571
-v 0.878572 -1.313923 -1.689195
-v 1.075780 -1.316352 -1.608436
-v 0.894296 -1.309874 -1.727470
-v 1.091505 -1.312304 -1.646711
-v 0.908404 -1.290299 -1.761330
-v 1.105612 -1.292729 -1.680571
-v 0.930828 -1.228574 -1.814231
-v 0.930828 -1.228574 -1.814231
-v 0.983945 -1.251590 -1.815616
-v 1.040075 -1.260134 -1.800755
-v 1.090673 -1.252905 -1.771910
-v 1.128036 -1.231003 -1.733472
-v 1.128036 -1.231003 -1.733472
-v 0.918367 -1.193048 -1.782734
-v 1.115575 -1.195478 -1.701975
-v 1.090653 -1.124426 -1.638981
-v 1.103114 -1.159952 -1.670478
-v 0.893446 -1.121997 -1.719740
-v 0.905906 -1.157522 -1.751237
-v -0.038460 0.092850 0.987525
-v -0.071287 0.071287 0.987525
-v -0.000000 0.100815 0.987525
-v 0.053557 0.129300 0.559937
-v -0.000000 0.140392 0.559937
-v 0.099272 0.099272 0.559937
-v -0.092850 0.038460 0.987525
-v -0.100816 0.000000 0.987525
-v 0.129299 0.053558 0.559937
-v 0.140391 0.000000 0.559937
-v -0.038460 -0.092850 0.987525
-v -0.000000 -0.100815 0.987525
-v -0.071287 -0.071287 0.987525
-v 0.129299 -0.053557 0.559937
-v 0.099272 -0.099272 0.559937
-v 0.092850 -0.038459 0.987525
-v 0.100815 0.000000 0.987525
-v 0.071287 -0.071287 0.987525
-v 0.053557 -0.129299 0.559937
-v -0.000000 -0.140392 0.559937
-v -0.092850 -0.038459 0.987525
-v -0.053558 -0.129299 0.559937
-v -0.099272 -0.099272 0.559937
-v 0.038459 -0.092850 0.987525
-v -0.129300 -0.053557 0.559937
-v -0.140392 0.000000 0.559937
-v 0.038459 0.092850 0.987525
-v 0.071287 0.071287 0.987525
-v -0.129300 0.053558 0.559937
-v -0.099272 0.099272 0.559937
-v 0.092850 0.038460 0.987525
-v -0.053558 0.129300 0.559937
-v -0.032401 -0.078221 0.950122
-v -0.000000 -0.084932 0.950122
-v -0.060056 -0.060056 0.950122
-v -0.078222 0.032401 0.950122
-v -0.084932 0.000000 0.950122
-v -0.060056 0.060056 0.950122
-v 0.078221 0.032401 0.950122
-v 0.060056 0.060056 0.950122
-v 0.084932 0.000000 0.950122
-v 0.032400 0.078222 0.950122
-v -0.000000 0.084932 0.950122
-v 0.032400 -0.078221 0.950122
-v 0.060056 -0.060056 0.950122
-v -0.032401 0.078222 0.950122
-v -0.078222 -0.032400 0.950122
-v 0.078221 -0.032400 0.950122
-v 0.099272 0.099272 0.987525
-v 0.053557 0.129300 0.987525
-v -0.000000 0.140392 0.987525
-v 0.140391 0.000000 0.987525
-v 0.129299 0.053558 0.987525
-v 0.099272 -0.099272 0.987525
-v 0.129299 -0.053557 0.987525
-v -0.000000 -0.140392 0.987525
-v 0.053557 -0.129299 0.987525
-v -0.099272 -0.099272 0.987525
-v -0.053558 -0.129299 0.987525
-v -0.140392 0.000000 0.987525
-v -0.129300 -0.053557 0.987525
-v -0.099272 0.099272 0.987525
-v -0.129300 0.053558 0.987525
-v -0.053558 0.129300 0.987525
-v 0.071287 0.071287 0.950122
-v 0.038459 0.092850 0.950122
-v -0.000000 0.100815 0.950122
-v 0.100815 0.000000 0.950122
-v 0.092850 0.038460 0.950122
-v 0.071287 -0.071287 0.950122
-v 0.092850 -0.038459 0.950122
-v -0.000000 -0.100815 0.950122
-v 0.038459 -0.092850 0.950122
-v -0.071287 -0.071287 0.950122
-v -0.038460 -0.092850 0.950122
-v -0.100816 0.000000 0.950122
-v -0.092850 -0.038459 0.950122
-v -0.071287 0.071287 0.950122
-v -0.092850 0.038460 0.950122
-v -0.038460 0.092850 0.950122
-v 1.528859 -2.440978 0.751459
-v 1.508944 -2.559236 0.656160
-v 1.539856 -2.288760 0.834913
-v 1.451680 -1.303751 0.948059
-v 1.478683 -1.449914 0.968558
-v 1.426015 -1.190962 0.919306
-v 1.480184 -2.639663 0.550582
-v 1.447001 -2.701174 0.439865
-v 1.447001 -2.701174 0.439865
-v 1.508361 -1.662825 0.972550
-v 1.532244 -1.896875 0.953520
-v 1.541863 -2.106457 0.904954
-v 1.453615 -2.422652 0.738755
-v 1.434695 -2.537522 0.644682
-v 1.464272 -2.276967 0.816935
-v 1.377808 -1.320705 0.926207
-v 1.404763 -1.464162 0.945204
-v 1.351894 -1.209214 0.899592
-v 1.407932 -2.620632 0.530094
-v 1.377249 -2.687864 0.405249
-v 1.377249 -2.687864 0.405249
-v 1.433799 -1.671554 0.948967
-v 1.456948 -1.898697 0.930758
-v 1.466244 -2.101408 0.883841
-v 1.432393 -2.726928 0.566658
-v 1.460993 -2.641840 0.704036
-v 1.399961 -2.793507 0.416631
-v 1.399961 -2.793507 0.416631
-v 1.399961 -2.793507 0.416631
-v 1.481929 -2.519735 0.816115
-v 1.494583 -2.362603 0.909304
-v 1.341930 -1.022926 0.981547
-v 1.311324 -0.887595 0.946793
-v 1.311324 -0.887595 0.946793
-v 1.372535 -1.158258 1.016302
-v 1.498339 -2.172434 0.990009
-v 1.489831 -1.950316 1.048525
-v 1.588851 -0.964844 0.615453
-v 1.640337 -0.963162 0.533873
-v 1.515048 -0.969678 0.692563
-v 1.515048 -0.969678 0.692563
-v 1.465696 -1.697334 1.075143
-v 1.434083 -1.462191 1.074456
-v 1.300067 -0.986233 0.846361
-v 1.300067 -0.986233 0.846361
-v 1.300067 -0.986233 0.846361
-v 1.374685 -0.965384 0.861799
-v 1.374685 -0.965384 0.861799
-v 1.374685 -0.965384 0.861799
-v 1.414295 -0.977267 0.769504
-v 1.400350 -1.078173 0.890552
-v 1.325981 -1.097723 0.872977
-v 1.403141 -1.293589 1.051057
-v 1.744845 -2.441453 0.316059
-v 1.818077 -2.289373 0.274056
-v 1.656816 -2.559562 0.358069
-v 1.855672 -1.304641 0.133666
-v 1.817348 -1.191824 0.130430
-v 1.888204 -1.450816 0.143019
-v 1.555284 -2.639828 0.399190
-v 1.909153 -1.663708 0.164607
-v 1.908248 -1.897704 0.195547
-v 1.875217 -2.107191 0.232958
-v 1.689221 -2.423171 0.263804
-v 1.758042 -2.277614 0.224733
-v 1.602773 -2.537892 0.305859
-v 1.793563 -1.321621 0.088100
-v 1.756791 -1.210106 0.083375
-v 1.824873 -1.465088 0.098319
-v 1.495274 -2.620825 0.354026
-v 1.845256 -1.672461 0.119524
-v 1.844566 -1.899551 0.149372
-v 1.812660 -2.102171 0.185515
-v 1.539093 -2.727163 0.351566
-v 1.665851 -2.642292 0.291070
-v 1.767862 -2.520365 0.239713
-v 1.849851 -2.363385 0.193131
-v 1.816177 -1.023971 0.025529
-v 1.862249 -1.159337 0.029107
-v 1.770106 -0.888606 0.021951
-v 1.770106 -0.888606 0.021951
-v 1.916547 -2.173355 0.146958
-v 1.958183 -1.951348 0.104391
-v 1.674139 -0.965032 0.443524
-v 1.690876 -0.970065 0.338116
-v 1.690876 -0.970065 0.338116
-v 1.964993 -1.698434 0.068626
-v 1.945524 -1.463318 0.043459
-v 1.683246 -0.987077 0.073925
-v 1.683246 -0.987077 0.073925
-v 1.683246 -0.987077 0.073925
-v 1.740702 -0.966190 0.123959
-v 1.740702 -0.966190 0.123959
-v 1.740702 -0.966190 0.123959
-v 1.691172 -0.977877 0.211358
-v 1.779025 -1.079007 0.127194
-v 1.720018 -1.098592 0.078650
-v 1.908320 -1.294702 0.032684
-v 1.705210 -0.935751 0.566024
-v 1.645438 -0.937729 0.660771
-v 1.567830 -0.943727 0.741939
-v 1.475050 -0.953589 0.806117
-v 1.446123 -1.148491 0.989278
-v 1.476735 -1.283818 1.024054
-v 1.507647 -1.452387 1.047384
-v 1.539156 -1.687438 1.047824
-v 1.563092 -1.940180 1.020770
-v 1.571283 -2.161819 0.961616
-v 1.567168 -2.351205 0.880306
-v 1.554187 -2.507191 0.786784
-v 1.532501 -2.627206 0.682448
-v 1.502275 -2.708683 0.568701
-v 1.467779 -2.770892 0.450249
-v 1.467779 -2.770892 0.450249
-v 1.467779 -2.770892 0.450249
-v 1.384897 -0.877837 0.919726
-v 1.384897 -0.877837 0.919726
-v 1.566356 -1.189997 0.749388
-v 1.594551 -1.292010 0.771582
-v 1.644141 -1.419104 0.775773
-v 1.723603 -1.446522 0.690545
-v 1.778443 -1.445025 0.602909
-v 1.415510 -1.013164 0.954502
-v 1.538149 -1.087983 0.727222
-v 1.744481 -0.937947 0.461112
-v 1.762147 -0.944155 0.350222
-v 1.757102 -0.954210 0.237538
-v 1.885263 -1.149459 0.104030
-v 1.931355 -1.284820 0.107601
-v 1.968487 -1.453402 0.118393
-v 1.987697 -1.688426 0.143626
-v 1.980418 -1.941099 0.179496
-v 1.938083 -2.162627 0.222197
-v 1.870690 -2.351874 0.268448
-v 1.788237 -2.507706 0.314969
-v 1.691941 -2.627557 0.361040
-v 1.583017 -2.708861 0.405937
-v 1.793078 -0.878736 0.096888
-v 1.793078 -0.878736 0.096888
-v 1.766972 -1.190439 0.344974
-v 1.801613 -1.292466 0.354173
-v 1.834842 -1.419524 0.391344
-v 1.815038 -1.446724 0.506225
-v 1.839171 -1.014097 0.100459
-v 1.732345 -1.088411 0.335747
-v 0.874137 -0.072697 0.644137
-v 0.838814 -0.065381 0.644137
-v 0.904286 -0.092501 0.644137
-v 0.924090 -0.122650 0.644137
-v 0.931406 -0.157973 0.644137
-v 0.924090 -0.193295 0.644137
-v 0.904286 -0.223445 0.644137
-v 0.888640 -0.178611 0.838418
-v 0.892914 -0.157973 0.838418
-v 0.877069 -0.196227 0.838418
-v 0.788989 -0.178611 0.838418
-v 0.800560 -0.196227 0.838418
-v 0.784714 -0.157973 0.838418
-v 0.818176 -0.108147 0.838418
-v 0.800560 -0.119719 0.838418
-v 0.838814 -0.103873 0.838418
-v 0.888640 -0.137335 0.838418
-v 0.877069 -0.119719 0.838418
-v 0.788989 -0.137335 0.838418
-v 1.025283 0.089448 0.477009
-v 1.025283 0.000000 0.485206
-v 0.955232 -0.089447 0.477009
-v 0.955232 0.000000 0.485206
-v 0.955232 -0.178758 0.450344
-v 0.851475 -0.416358 -0.462306
-v 0.873201 -0.485597 -0.307469
-v 0.851475 -0.290254 -0.596729
-v 0.851475 -0.098271 -0.685024
-v 0.851475 0.126651 -0.717641
-v 0.851475 0.351573 -0.685024
-v 0.851475 0.543556 -0.596729
-v 0.851475 0.669660 -0.462306
-v 0.873201 0.707236 -0.307469
-v 1.025283 0.430563 0.167312
-v 1.025283 0.352934 0.315440
-v 1.025283 -0.430563 0.167312
-v 1.025283 -0.352934 0.315441
-v 1.003557 -0.486603 -0.003170
-v 0.868328 -0.506980 -0.157927
-v 0.933506 -0.486603 -0.003170
-v 0.955232 -0.430563 0.167312
-v 0.955232 -0.352934 0.315441
-v 1.025283 -0.089447 0.477009
-v 1.025283 -0.178758 0.450344
-v 0.818176 -0.207798 0.838418
-v 0.838814 -0.212073 0.838418
-v 0.859453 -0.108147 0.838418
-v 0.859453 -0.207798 0.838418
-v 0.803492 -0.243249 0.838418
-v 0.838814 -0.250564 0.838418
-v 0.773342 -0.223445 0.838418
-v 0.924090 -0.122650 0.838418
-v 0.904286 -0.092501 0.838418
-v 0.931406 -0.157973 0.838418
-v 0.753538 -0.193295 0.838418
-v 0.746223 -0.157973 0.838418
-v 0.803492 -0.072697 0.838418
-v 0.838814 -0.065381 0.838418
-v 0.868327 0.633631 -0.157927
-v 0.933506 0.518266 -0.003170
-v 0.924090 -0.193295 0.838418
-v 1.025283 0.178758 0.450344
-v 1.003557 0.518266 -0.003170
-v 0.788989 0.137335 0.838418
-v 0.800560 0.119719 0.838418
-v 0.784714 0.157973 0.838418
-v 0.874137 0.243249 0.644137
-v 0.838814 0.250565 0.644137
-v 0.904286 0.223445 0.644137
-v 0.859453 0.207799 0.838418
-v 0.838814 0.212073 0.838418
-v 0.877069 0.196228 0.838418
-v 0.924090 0.193296 0.644137
-v 0.931406 0.157973 0.644137
-v 0.859453 0.108148 0.838418
-v 0.877069 0.119719 0.838418
-v 0.838814 0.103873 0.838418
-v 0.924090 0.122651 0.644137
-v 0.904286 0.092501 0.644137
-v 0.888640 0.178612 0.838418
-v 0.892914 0.157973 0.838418
-v 0.874137 0.072697 0.644137
-v 0.838814 0.065382 0.644137
-v 0.818176 0.207799 0.838418
-v 0.800560 0.196228 0.838418
-v 0.803492 0.072697 0.644137
-v 0.773342 0.092501 0.644137
-v 0.788989 0.178612 0.838418
-v 0.753538 0.122651 0.644137
-v 0.746223 0.157973 0.644137
-v 0.818176 0.108148 0.838418
-v 0.753538 0.193296 0.644137
-v 0.773342 0.223445 0.644137
-v 0.888640 0.137335 0.838418
-v 0.803492 0.243249 0.644137
-v 1.025283 -0.267792 0.403136
-v 0.888640 0.178611 0.644137
-v 0.877069 0.196227 0.644137
-v 0.892914 0.157973 0.644137
-v 0.888640 0.137335 0.644137
-v 0.877069 0.119719 0.644137
-v 0.859453 0.108148 0.644137
-v 0.838814 0.103873 0.644137
-v 0.818176 0.108148 0.644137
-v 0.800560 0.119719 0.644137
-v 0.788989 0.137335 0.644137
-v 0.784714 0.157973 0.644137
-v 0.788989 0.178611 0.644137
-v 0.800560 0.196227 0.644137
-v 0.818176 0.207798 0.644137
-v 0.838814 0.212073 0.644137
-v 0.859453 0.207798 0.644137
-v 0.955232 0.267793 0.403136
-v 0.955232 0.178758 0.450344
-v 0.955232 0.352934 0.315440
-v 0.955232 0.430563 0.167312
-v 0.803492 -0.072697 0.644137
-v 0.773342 -0.092501 0.644137
-v 0.753538 -0.122650 0.644137
-v 0.746223 -0.157973 0.644137
-v 0.753538 -0.193295 0.644137
-v 0.773342 -0.223445 0.644137
-v 0.803492 -0.243249 0.644137
-v 0.838814 -0.250564 0.644137
-v 0.874137 -0.243249 0.644137
-v 0.888640 -0.137334 0.423181
-v 0.892914 -0.157973 0.415896
-v 0.877069 -0.119718 0.428739
-v 0.888640 -0.178611 0.407436
-v 0.877069 -0.196227 0.399523
-v 0.859453 -0.207797 0.393878
-v 0.838814 -0.212071 0.391623
-v 0.818176 -0.207797 0.393878
-v 0.800560 -0.196227 0.399523
-v 0.788989 -0.178611 0.407436
-v 0.784714 -0.157973 0.415896
-v 0.788989 -0.137334 0.423181
-v 0.800560 -0.119718 0.428739
-v 0.818176 -0.108147 0.432018
-v 0.838814 -0.103872 0.433088
-v 0.859453 -0.108147 0.432018
-v 1.025283 0.267793 0.403136
-v 0.955232 0.089448 0.477009
-v 0.955232 -0.267792 0.403136
-v 0.938379 -0.506980 -0.157927
-v 0.938379 0.633631 -0.157927
-v 0.800560 -0.119718 0.693786
-v 0.818176 -0.108147 0.693786
-v 0.838814 -0.103873 0.693786
-v 0.859453 -0.108147 0.693786
-v 0.877069 -0.119718 0.693786
-v 0.888640 -0.137334 0.693786
-v 0.892914 -0.157973 0.693786
-v 0.888640 -0.178611 0.693786
-v 0.877069 -0.196227 0.693786
-v 0.859453 -0.207798 0.693786
-v 0.838814 -0.212073 0.693786
-v 1.025283 0.291908 -0.291908
-v 1.025283 0.380203 -0.157485
-v 1.025283 0.412820 0.000000
-v 1.025283 0.157485 -0.380203
-v 1.025283 -0.000000 -0.412820
-v 1.025283 -0.157485 -0.380203
-v 1.025283 -0.291908 -0.291907
-v 1.025283 -0.380203 -0.157485
-v 1.025283 -0.412820 0.000000
-v 1.025283 -0.380203 0.157485
-v 1.025283 -0.311654 0.288289
-v 1.025283 0.311654 0.288288
-v 1.025283 0.380203 0.157485
-v 0.659388 -0.291908 -0.291907
-v 0.659388 -0.380203 -0.157485
-v 0.659388 -0.412820 0.000000
-v 0.955232 -0.311654 0.288289
-v 0.955232 -0.380203 0.157485
-v 0.955232 -0.412820 0.000000
-v 0.955232 -0.380203 -0.157485
-v 0.955232 -0.291908 -0.291907
-v 0.955232 -0.157485 -0.380203
-v 0.955232 -0.000000 -0.412820
-v 0.955232 0.157485 -0.380203
-v 0.955232 0.291908 -0.291908
-v 0.955232 0.380203 -0.157485
-v 0.955232 0.412820 0.000000
-v 0.955232 0.380203 0.157485
-v 0.955232 0.311654 0.288288
-v 0.803150 -0.485597 -0.307469
-v 0.781424 -0.416358 -0.462306
-v 0.781424 -0.290254 -0.596729
-v 0.781423 -0.098271 -0.685024
-v 0.781423 0.126651 -0.717641
-v 0.781423 0.351573 -0.685024
-v 0.781423 0.543556 -0.596729
-v 0.781423 0.669660 -0.462306
-v 0.803149 0.707236 -0.307469
-v 0.904286 0.223445 0.838418
-v 0.874137 0.243249 0.838418
-v 0.838814 0.250565 0.838418
-v 0.931406 0.157973 0.838418
-v 0.924090 0.193296 0.838418
-v 0.904286 0.092501 0.838418
-v 0.924090 0.122651 0.838418
-v 0.838814 0.065382 0.838418
-v 0.874137 0.072697 0.838418
-v 0.773342 0.092501 0.838418
-v 0.803492 0.072697 0.838418
-v 0.874137 -0.243249 0.838418
-v 0.904286 -0.223445 0.838418
-v 0.753538 -0.122650 0.838418
-v 0.746223 0.157973 0.838418
-v 0.753538 0.122651 0.838418
-v 0.773342 -0.092501 0.838418
-v 0.773342 0.223445 0.838418
-v 0.753538 0.193296 0.838418
-v 0.803492 0.243249 0.838418
-v 0.877069 0.196227 0.693786
-v 0.859453 0.207798 0.693786
-v 0.838814 0.212073 0.693786
-v 0.892914 0.157973 0.693786
-v 0.888640 0.178611 0.693786
-v 0.877069 0.119719 0.693786
-v 0.888640 0.137335 0.693786
-v 0.838814 0.103873 0.693786
-v 0.859453 0.108148 0.693786
-v 0.800560 0.119719 0.693786
-v 0.818176 0.108148 0.693786
-v 0.784714 0.157973 0.693786
-v 0.788989 0.137335 0.693786
-v 0.800560 0.196227 0.693786
-v 0.788989 0.178611 0.693786
-v 0.818176 0.207798 0.693786
-v 0.659388 0.311654 0.288288
-v 0.659388 0.380203 0.157485
-v 0.659388 0.412820 0.000000
-v 1.025283 0.236471 0.365727
-v 1.025283 0.157850 0.407413
-v 0.784714 0.157973 0.415896
-v 0.788989 0.137335 0.423181
-v 0.800560 0.119719 0.428739
-v 0.955232 0.236471 0.365727
-v 0.955232 0.157850 0.407413
-v 1.025283 0.000000 0.438198
-v 1.025283 0.078986 0.430960
-v 0.800560 0.196227 0.399523
-v 0.788989 0.178611 0.407436
-v 0.955232 0.000000 0.438198
-v 0.955232 0.078986 0.430960
-v 0.838814 0.212072 0.391623
-v 0.818176 0.207798 0.393878
-v 0.859453 0.207798 0.393878
-v 0.877069 0.196227 0.399523
-v 0.892914 0.157973 0.415896
-v 0.888640 0.178611 0.407436
-v 0.877069 0.119719 0.428739
-v 0.888640 0.137335 0.423181
-v 0.838814 0.103872 0.433088
-v 0.859453 0.108147 0.432018
-v 0.818176 0.108147 0.432018
-v 0.784714 -0.157973 0.693786
-v 0.788989 -0.137334 0.693786
-v 0.800560 -0.196227 0.693786
-v 0.788989 -0.178611 0.693786
-v 0.818176 -0.207798 0.693786
-v 0.838814 -0.212073 0.644137
-v 0.818176 -0.207798 0.644137
-v 0.800560 -0.196227 0.644137
-v 0.788989 -0.178611 0.644137
-v 0.784714 -0.157973 0.644137
-v 0.788989 -0.137334 0.644137
-v 0.800560 -0.119718 0.644137
-v 0.818176 -0.108147 0.644137
-v 0.838814 -0.103873 0.644137
-v 0.859453 -0.108147 0.644137
-v 0.877069 -0.119718 0.644137
-v 0.888640 -0.137334 0.644137
-v 0.892914 -0.157973 0.644137
-v 0.888640 -0.178611 0.644137
-v 0.877069 -0.196227 0.644137
-v 0.859453 -0.207798 0.644137
-v 0.874137 -0.072697 0.838418
-v 1.025283 -0.236471 0.365727
-v 1.025283 -0.157850 0.407413
-v 0.955232 -0.236471 0.365727
-v 0.955232 -0.157850 0.407413
-v 1.025283 -0.078985 0.430960
-v 0.955232 -0.078985 0.430960
-v 0.659388 -0.380203 0.157485
-v 0.659388 -0.311654 0.288289
-v 0.659388 -0.000000 -0.412820
-v 0.659388 -0.157485 -0.380203
-v 0.659388 0.291908 -0.291908
-v 0.659388 0.157485 -0.380203
-v 0.659388 0.380203 -0.157485
-v 0.659388 0.157850 0.407413
-v 0.659388 0.078986 0.430960
-v 0.659388 0.000000 0.438198
-v 0.659388 0.236471 0.365727
-v 0.659388 -0.157850 0.407413
-v 0.659388 -0.078985 0.430960
-v 0.659388 -0.236471 0.365727
-v 0.166657 -0.713477 0.387925
-v 0.166216 -0.566313 0.594651
-v 0.146192 -0.787438 0.213267
-v 0.166657 0.713478 0.387925
-v 0.146192 0.787438 0.213267
-v 0.166216 0.566314 0.594651
-v 0.083622 -0.823788 0.154858
-v 0.000000 -0.832560 0.154716
-v 0.166069 0.310356 0.749262
-v 0.166069 0.000000 0.813539
-v 0.707107 -0.478468 -0.198188
-v 0.707107 -0.519514 0.000000
-v 0.707107 -0.367352 -0.367352
-v 0.707107 0.198188 0.478468
-v 0.707107 0.367352 0.367352
-v 0.707107 0.000000 0.519514
-v 0.707107 0.478468 -0.198188
-v 0.707107 0.519514 0.000000
-v 0.707107 0.367352 -0.367352
-v 0.707107 -0.198188 -0.478468
-v 0.707107 -0.000000 -0.519514
-v 0.707107 -0.198188 0.478468
-v 0.707107 0.478468 0.198188
-v 0.707107 0.198188 -0.478468
-v 0.707107 -0.478468 0.198188
-v 0.166069 -0.310355 0.749262
-v 0.083622 0.823788 0.154858
-v 0.000000 0.832560 0.154716
-v -0.166657 -0.713477 0.387925
-v -0.146192 -0.787438 0.213267
-v -0.166216 -0.566313 0.594651
-v -0.166657 0.713478 0.387925
-v -0.166216 0.566314 0.594651
-v -0.146192 0.787438 0.213267
-v -0.083622 -0.823788 0.154858
-v -0.166069 0.310356 0.749262
-v -0.166069 0.000000 0.813539
-v -0.166069 -0.310355 0.749262
-v -0.083622 0.823788 0.154858
-v 0.707107 0.463388 -0.463388
-v 0.707107 0.250000 -0.603553
-v 0.707107 -0.000000 -0.655330
-v 0.707107 -0.250000 -0.603553
-v 0.707107 -0.463388 -0.463388
-v 0.707107 -0.603553 -0.250000
-v 0.707107 -0.655330 0.000000
-v 0.707107 -0.603553 0.250000
-v 0.707107 -0.463388 0.463388
-v 0.707107 -0.250000 0.603553
-v 0.707107 0.000000 0.655330
-v 0.707107 0.250000 0.603553
-v 0.707107 0.463388 0.463388
-v 0.707107 0.603553 0.250000
-v 0.707107 0.655330 -0.000000
-v 0.707107 0.603553 -0.250000
-v 0.659388 0.367352 -0.367352
-v 0.659388 0.478468 -0.198188
-v 0.659388 0.519514 0.000000
-v 0.659388 0.367352 0.367352
-v 0.659388 0.478468 0.198188
-v 0.659388 0.000000 0.519514
-v 0.659388 0.198188 0.478468
-v 0.659388 -0.367352 0.367352
-v 0.659388 -0.198188 0.478468
-v 0.659388 -0.519514 0.000000
-v 0.659388 -0.478468 0.198188
-v 0.659388 -0.367352 -0.367352
-v 0.659388 -0.478468 -0.198188
-v 0.659388 -0.000000 -0.519514
-v 0.659388 -0.198188 -0.478468
-v 0.659388 0.198188 -0.478468
-v 0.160177 0.864705 0.249712
-v 0.091524 0.903905 0.188043
-v 0.000000 0.913009 0.188039
-v 0.160177 -0.864705 0.249712
-v 0.091524 -0.903905 0.188043
-v 0.000000 -0.913009 0.188039
-v 0.183088 -0.783522 0.434701
-v 0.183118 -0.621724 0.654965
-v 0.183128 -0.340674 0.822462
-v 0.183128 0.000000 0.893018
-v 0.183128 0.340675 0.822461
-v 0.183118 0.621724 0.654965
-v 0.183088 0.783523 0.434700
-v -0.707107 0.463388 -0.463388
-v -0.707107 0.250000 -0.603553
-v -0.707107 -0.000000 -0.655330
-v -0.707107 -0.250000 -0.603553
-v -0.707107 -0.463388 -0.463388
-v -0.707107 -0.603553 -0.250000
-v -0.707107 -0.655330 0.000000
-v -0.707107 -0.603553 0.250000
-v -0.707107 -0.463388 0.463388
-v -0.707107 -0.250000 0.603553
-v -0.707107 0.000000 0.655330
-v -0.707107 0.250000 0.603553
-v -0.707107 0.463388 0.463388
-v -0.707107 0.603553 0.250000
-v -0.707107 0.655330 -0.000000
-v -0.707107 0.603553 -0.250000
-v -0.160177 0.864705 0.249712
-v -0.091524 0.903905 0.188043
-v -0.160177 -0.864705 0.249712
-v -0.091524 -0.903905 0.188043
-v -0.183088 -0.783522 0.434701
-v -0.183118 -0.621724 0.654965
-v -0.183128 -0.340674 0.822462
-v -0.183128 0.000000 0.893018
-v -0.183128 0.340675 0.822461
-v -0.183118 0.621724 0.654965
-v -0.183088 0.783523 0.434700
-v 0.879657 -0.585451 -1.245550
-v 0.863647 -0.626689 -1.251529
-v 0.825364 -0.643771 -1.266868
-v 0.673277 -0.653857 -0.605875
-v 0.682240 -0.619120 -0.627932
-v 0.659992 -0.676838 -0.573181
-v 0.644408 -0.684566 -0.534828
-v 0.628896 -0.675863 -0.496655
-v 0.615820 -0.652054 -0.464474
-v 0.607168 -0.616764 -0.443183
-v 0.604259 -0.575366 -0.436024
-v 0.685516 -0.577916 -0.635995
-v 0.652094 -0.578307 -0.685289
-v 0.635636 -0.619534 -0.690399
-v 0.597719 -0.636715 -0.706639
-v 0.771590 -0.585451 -1.289462
-v 0.787232 -0.626689 -1.282580
-v 0.473292 -0.653857 -0.687137
-v 0.482254 -0.619120 -0.709195
-v 0.460007 -0.676838 -0.654444
-v 0.444422 -0.684566 -0.616091
-v 0.428911 -0.675863 -0.577918
-v 0.415834 -0.652054 -0.545736
-v 0.407183 -0.616764 -0.524445
-v 0.404274 -0.575366 -0.517286
-v 0.485531 -0.577916 -0.717258
-v 0.543863 -0.578307 -0.729268
-v 0.559221 -0.619534 -0.721450
-v 0.864014 -0.544212 -1.252432
-v 0.825883 -0.527130 -1.268144
-v 0.673956 -0.501228 -0.607545
-v 0.682607 -0.536518 -0.628836
-v 0.660879 -0.477419 -0.575363
-v 0.645368 -0.468716 -0.537190
-v 0.629783 -0.476443 -0.498838
-v 0.616498 -0.499425 -0.466144
-v 0.607536 -0.534162 -0.444087
-v 0.636003 -0.537057 -0.691302
-v 0.598238 -0.519898 -0.707917
-v 0.787599 -0.544212 -1.283482
-v 0.473970 -0.501228 -0.688808
-v 0.482622 -0.536518 -0.710099
-v 0.460894 -0.477419 -0.656626
-v 0.445382 -0.468716 -0.618453
-v 0.429798 -0.476443 -0.580100
-v 0.416513 -0.499425 -0.547407
-v 0.407550 -0.534162 -0.525349
-v 0.559588 -0.537057 -0.722352
-v 1.032475 -1.208982 -1.625280
-v 1.003626 -1.231580 -1.599791
-v 0.960023 -1.240865 -1.602094
-v 0.917154 -0.691373 -1.206666
-v 0.933006 -0.691712 -1.245680
-v 0.902590 -0.674944 -1.170728
-v 0.891532 -0.644927 -1.143338
-v 0.885662 -0.605891 -1.128666
-v 0.885876 -0.563780 -1.128945
-v 0.892139 -0.525003 -1.144133
-v 0.903499 -0.495465 -1.171918
-v 0.947733 -0.675910 -1.281831
-v 0.908636 -0.703460 -1.317320
-v 0.879504 -0.725243 -1.291369
-v 0.836074 -0.735392 -1.294100
-v 0.924408 -1.208726 -1.669191
-v 0.927211 -1.231399 -1.630841
-v 0.717168 -0.690898 -1.287927
-v 0.733020 -0.691238 -1.326941
-v 0.702604 -0.674470 -1.251989
-v 0.691546 -0.644453 -1.224600
-v 0.685677 -0.605417 -1.209927
-v 0.685890 -0.563305 -1.210207
-v 0.692154 -0.524529 -1.225395
-v 0.703514 -0.494991 -1.253179
-v 0.747747 -0.675435 -1.363093
-v 0.800405 -0.703203 -1.361299
-v 0.803089 -0.725062 -1.322419
-v 1.029673 -1.186309 -1.663630
-v 0.996860 -1.176842 -1.692377
-v 0.965356 -0.607596 -1.324804
-v 0.959093 -0.646372 -1.309616
-v 0.965570 -0.565484 -1.325083
-v 0.959700 -0.526448 -1.310411
-v 0.948642 -0.496431 -1.283021
-v 0.934078 -0.480002 -1.247084
-v 0.918226 -0.479663 -1.208070
-v 0.905552 -0.679972 -1.355208
-v 0.872967 -0.671271 -1.384519
-v 0.953258 -1.186128 -1.694680
-v 0.765371 -0.607121 -1.406065
-v 0.759107 -0.645898 -1.390877
-v 0.765584 -0.565010 -1.406345
-v 0.759715 -0.525974 -1.391672
-v 0.748657 -0.495957 -1.364283
-v 0.734093 -0.479528 -1.328345
-v 0.718241 -0.479189 -1.289331
-v 0.829137 -0.679791 -1.386258
-v 1.162960 -0.605827 0.365538
-v 1.180859 -0.645406 0.355250
-v 1.203219 -0.661802 0.320266
-v 0.582832 -0.867274 0.138486
-v 0.594171 -0.827093 0.144001
-v 0.558528 -0.899571 0.126664
-v 0.524961 -0.919068 0.110335
-v 0.487240 -0.922795 0.091984
-v 0.451108 -0.910186 0.074405
-v 0.422066 -0.883161 0.060275
-v 0.404535 -0.845832 0.051744
-v 0.590820 -0.785145 0.142369
-v 0.641037 -0.775845 0.111730
-v 0.658134 -0.815698 0.100954
-v 0.681357 -0.831904 0.066390
-v 1.213991 -0.605832 0.260644
-v 1.216943 -0.645410 0.281079
-v 0.677267 -0.867283 -0.055626
-v 0.688606 -0.827102 -0.050112
-v 0.652964 -0.899581 -0.067448
-v 0.619397 -0.919077 -0.083778
-v 0.581676 -0.922805 -0.102129
-v 0.545544 -0.910196 -0.119707
-v 0.516501 -0.883170 -0.133838
-v 0.498970 -0.845841 -0.142368
-v 0.685255 -0.785154 -0.051744
-v 0.692145 -0.775850 0.006677
-v 0.694218 -0.815701 0.026783
-v 1.160008 -0.566250 0.345103
-v 1.173732 -0.549858 0.305916
-v 0.544246 -0.720791 0.119708
-v 0.573288 -0.747817 0.133838
-v 0.508114 -0.708182 0.102129
-v 0.470393 -0.711909 0.083778
-v 0.436826 -0.731406 0.067448
-v 0.412523 -0.763703 0.055627
-v 0.401184 -0.803884 0.050112
-v 0.637283 -0.736541 0.090806
-v 0.651825 -0.719791 0.052017
-v 1.196092 -0.566253 0.270932
-v 0.638682 -0.720800 -0.074405
-v 0.667724 -0.747826 -0.060275
-v 0.602550 -0.708191 -0.091984
-v 0.564829 -0.711918 -0.110335
-v 0.531262 -0.731415 -0.126664
-v 0.506958 -0.763712 -0.138486
-v 0.495619 -0.803893 -0.144001
-v 0.673367 -0.736545 0.016635
-v 1.558713 -1.207595 0.558825
-v 1.536358 -1.231944 0.528825
-v 1.542129 -1.241999 0.485718
-v 1.126224 -0.712593 0.402674
-v 1.164007 -0.710783 0.421187
-v 1.090689 -0.698164 0.385279
-v 1.062812 -0.669692 0.371650
-v 1.046836 -0.631513 0.363861
-v 1.045195 -0.589439 0.363099
-v 1.058137 -0.549875 0.369480
-v 1.083692 -0.518844 0.382032
-v 1.198285 -0.693010 0.438000
-v 1.237637 -0.719662 0.402109
-v 1.214803 -0.743225 0.371777
-v 1.221028 -0.754118 0.328890
-v 1.610035 -1.207489 0.454074
-v 1.572648 -1.231869 0.454755
-v 1.221198 -0.712397 0.208825
-v 1.258981 -0.710588 0.227338
-v 1.185664 -0.697968 0.191430
-v 1.157786 -0.669497 0.177800
-v 1.141811 -0.631318 0.170012
-v 1.140169 -0.589244 0.169250
-v 1.153111 -0.549679 0.175630
-v 1.178666 -0.518649 0.188182
-v 1.293259 -0.692815 0.244150
-v 1.289037 -0.719556 0.297198
-v 1.251093 -0.743150 0.297706
-v 1.596100 -1.183214 0.558145
-v 1.626618 -1.173085 0.527182
-v 1.236782 -0.622416 0.456932
-v 1.223840 -0.661980 0.450551
-v 1.235140 -0.580341 0.456170
-v 1.219164 -0.542162 0.448381
-v 1.191287 -0.513691 0.434752
-v 1.155753 -0.499262 0.417357
-v 1.117970 -0.501071 0.398844
-v 1.274546 -0.694495 0.401096
-v 1.305645 -0.685100 0.370417
-v 1.632390 -1.183140 0.484074
-v 1.331756 -0.622220 0.263083
-v 1.318814 -0.661784 0.256702
-v 1.330114 -0.580146 0.262321
-v 1.314139 -0.541967 0.254532
-v 1.286261 -0.513495 0.240903
-v 1.250727 -0.499066 0.223507
-v 1.212944 -0.500876 0.204994
-v 1.310836 -0.694421 0.327025
-v 0.707107 -0.367352 0.367352
-v 1.666868 -1.085842 0.428226
-v 1.666868 -1.085842 0.428226
-v 1.633370 -1.059764 0.466150
-v 1.603599 -1.050567 0.515746
-v 1.582089 -1.059651 0.569462
-v 1.572115 -1.085633 0.619120
-v 1.572115 -1.085633 0.619120
-v 1.513056 -1.106443 0.589828
-v 1.607809 -1.106651 0.398933
-v 1.576834 -1.129750 0.383583
-v 1.482080 -1.129542 0.574478
-v 1.556129 -1.164320 0.373344
-v 1.461375 -1.164112 0.564238
-v 1.548846 -1.205099 0.369773
-v 1.454092 -1.204890 0.560668
-v 1.556093 -1.245877 0.373415
-v 1.461340 -1.245668 0.564310
-v 1.576769 -1.280447 0.383716
-v 1.482015 -1.280238 0.574610
-v 1.607724 -1.303546 0.399106
-v 1.512971 -1.303337 0.590001
-v 1.644247 -1.311657 0.417244
-v 1.549493 -1.311448 0.608138
-v 1.680776 -1.303545 0.435367
-v 1.586023 -1.303337 0.626261
-v 1.746068 -1.261106 0.467729
-v 1.746068 -1.261106 0.467729
-v 1.736848 -1.288758 0.517764
-v 1.715603 -1.298428 0.571612
-v 1.685567 -1.288645 0.621075
-v 1.651314 -1.260897 0.658623
-v 1.651314 -1.260897 0.658623
-v 1.726268 -1.217290 0.457853
-v 1.631514 -1.217081 0.648747
-v 1.591915 -1.129449 0.628996
-v 1.611714 -1.173265 0.638872
-v 1.686668 -1.129658 0.438101
-v 1.706468 -1.173474 0.447977
-v -1.343281 -2.380612 -1.952346
-v -1.262555 -2.510691 -1.957483
-v -1.410117 -2.221829 -1.928337
-v -1.439028 -1.288490 -1.583573
-v -1.469991 -1.418761 -1.651277
-v -1.402905 -1.190817 -1.525591
-v -1.169113 -2.608149 -1.942889
-v -1.069314 -2.689296 -1.918431
-v -1.069314 -2.689296 -1.918431
-v -1.490638 -1.614228 -1.738420
-v -1.491195 -1.834269 -1.823825
-v -1.461888 -2.038259 -1.886314
-v -1.337717 -2.384414 -1.874158
-v -1.257767 -2.510838 -1.879424
-v -1.399996 -2.232617 -1.851160
-v -1.427597 -1.326813 -1.515583
-v -1.456825 -1.454692 -1.582369
-v -1.393740 -1.230187 -1.457903
-v -1.155439 -2.611442 -1.866703
-v -1.041922 -2.699135 -1.844989
-v -1.041922 -2.699135 -1.844989
-v -1.476798 -1.645074 -1.667364
-v -1.477598 -1.858597 -1.750244
-v -1.449310 -2.055894 -1.810682
-v -1.198809 -2.702261 -1.922426
-v -1.323270 -2.596491 -1.938328
-v -1.060535 -2.792873 -1.896688
-v -1.060535 -2.792873 -1.896688
-v -1.060535 -2.792873 -1.896688
-v -1.420105 -2.460408 -1.934561
-v -1.495909 -2.295293 -1.911630
-v -1.458304 -1.044493 -1.404346
-v -1.414689 -0.927280 -1.334933
-v -1.414689 -0.927280 -1.334933
-v -1.501920 -1.161705 -1.473758
-v -1.557278 -2.102431 -1.870043
-v -1.595106 -1.884933 -1.806038
-v -1.062190 -0.968805 -1.593382
-v -0.975398 -0.963647 -1.635206
-v -1.147452 -0.983396 -1.530661
-v -1.147452 -0.983396 -1.530661
-v -1.600290 -1.645912 -1.715856
-v -1.581032 -1.429272 -1.621048
-v -1.326027 -1.036934 -1.342541
-v -1.326027 -1.036934 -1.342541
-v -1.326027 -1.036934 -1.342541
-v -1.330661 -0.995472 -1.409625
-v -1.330661 -0.995472 -1.409625
-v -1.330661 -0.995472 -1.409625
-v -1.235935 -1.007729 -1.442869
-v -1.366783 -1.093144 -1.467608
-v -1.359884 -1.133560 -1.400222
-v -1.545535 -1.278917 -1.543171
-v -0.887773 -2.377585 -2.121836
-v -0.823358 -2.217930 -2.146663
-v -0.950698 -2.508618 -2.073521
-v -0.587023 -1.282828 -1.900594
-v -0.577597 -1.185332 -1.832678
-v -0.606326 -1.413021 -1.972636
-v -1.010729 -2.607096 -2.001822
-v -0.645381 -1.608611 -2.052929
-v -0.698216 -1.829000 -2.118883
-v -0.758857 -2.033587 -2.147903
-v -0.840831 -2.381112 -2.059043
-v -0.780444 -2.228500 -2.081687
-v -0.903296 -2.508482 -2.011318
-v -0.550783 -1.320987 -1.841835
-v -0.539828 -1.224512 -1.775633
-v -0.570828 -1.448804 -1.912038
-v -0.971239 -2.610218 -1.935242
-v -0.609049 -1.639308 -1.990243
-v -0.660125 -1.853164 -2.054416
-v -0.718732 -2.051040 -2.082521
-v -0.973783 -2.700765 -2.006155
-v -0.891232 -2.593620 -2.099084
-v -0.817083 -2.456400 -2.158937
-v -0.746661 -2.290315 -2.190416
-v -0.458133 -1.037846 -1.776497
-v -0.469132 -1.154842 -1.858046
-v -0.447134 -0.920850 -1.694949
-v -0.447134 -0.920850 -1.694949
-v -0.675291 -2.096570 -2.198219
-v -0.607368 -1.878369 -2.173563
-v -0.882322 -0.967610 -1.660308
-v -0.776636 -0.980932 -1.668637
-v -0.776636 -0.980932 -1.668637
-v -0.547288 -1.638914 -2.107665
-v -0.502420 -1.422104 -2.022387
-v -0.517917 -1.031563 -1.643229
-v -0.517917 -1.031563 -1.643229
-v -0.517917 -1.031563 -1.643229
-v -0.558744 -0.990342 -1.696846
-v -0.558744 -0.990342 -1.696846
-v -0.558744 -0.990342 -1.696846
-v -0.652011 -1.003849 -1.660140
-v -0.568170 -1.087837 -1.764762
-v -0.528872 -1.128038 -1.709431
-v -0.480131 -1.271837 -1.939595
-v -0.997066 -0.916421 -1.692597
-v -1.097867 -0.922430 -1.644052
-v -1.187692 -0.938637 -1.578356
-v -1.262845 -0.964612 -1.497724
-v -1.465738 -1.136319 -1.539235
-v -1.509373 -1.253523 -1.608655
-v -1.544802 -1.403862 -1.686489
-v -1.563820 -1.620471 -1.781151
-v -1.558204 -1.859368 -1.871039
-v -1.519736 -2.076569 -1.934554
-v -1.457738 -2.268852 -1.975530
-v -1.381533 -2.432995 -1.997803
-v -1.292245 -2.566328 -2.000947
-v -1.190995 -2.666176 -1.984533
-v -1.083766 -2.749282 -1.958342
-v -1.083766 -2.749282 -1.958342
-v -1.083766 -2.749282 -1.958342
-v -1.378467 -0.901911 -1.400395
-v -1.378467 -0.901911 -1.400395
-v -1.218528 -1.173797 -1.645106
-v -1.246852 -1.261296 -1.701992
-v -1.257266 -1.369375 -1.784696
-v -1.166373 -1.385157 -1.860980
-v -1.073220 -1.380034 -1.905545
-v -1.422103 -1.019115 -1.469815
-v -1.190233 -1.086299 -1.588210
-v -0.888988 -0.921042 -1.721774
-v -0.777884 -0.935914 -1.730841
-v -0.668008 -0.960660 -1.719056
-v -0.539606 -1.130164 -1.883838
-v -0.550595 -1.247151 -1.965405
-v -0.572907 -1.397403 -2.048120
-v -0.617863 -1.614185 -2.133130
-v -0.678078 -1.853519 -2.198523
-v -0.746168 -2.071428 -2.222388
-v -0.817622 -2.264598 -2.213709
-v -0.887929 -2.429715 -2.181468
-v -0.955992 -2.564093 -2.126062
-v -1.020714 -2.665044 -2.047893
-v -0.517628 -0.896190 -1.720703
-v -0.517628 -0.896190 -1.720703
-v -0.795436 -1.170986 -1.802533
-v -0.810166 -1.258394 -1.864478
-v -0.855083 -1.366702 -1.934343
-v -0.973541 -1.383875 -1.932730
-v -0.528617 -1.013177 -1.802270
-v -0.780679 -1.083577 -1.740600
-v -0.879469 -1.087012 -1.685149
-v -0.879469 -1.087012 -1.685149
-v -0.918386 -1.066220 -1.649181
-v -0.970006 -1.059174 -1.622419
-v -1.026472 -1.066947 -1.608935
-v -1.079186 -1.088354 -1.610784
-v -1.079186 -1.088354 -1.610784
-v -1.059045 -1.127383 -1.557397
-v -0.859328 -1.126041 -1.631763
-v -0.849931 -1.158171 -1.607104
-v -1.049648 -1.159513 -1.532739
-v -0.845479 -1.197953 -1.595868
-v -1.045197 -1.199295 -1.521503
-v -0.846652 -1.239330 -1.599765
-v -1.046370 -1.240673 -1.525400
-v -0.853270 -1.276004 -1.618201
-v -1.052988 -1.277346 -1.543836
-v -0.864326 -1.302391 -1.648369
-v -1.064044 -1.303733 -1.574004
-v -0.878137 -1.314474 -1.685678
-v -1.077854 -1.315816 -1.611313
-v -0.892600 -1.310413 -1.724446
-v -1.092317 -1.311756 -1.650082
-v -0.905513 -1.290827 -1.758773
-v -1.105230 -1.292169 -1.684408
-v -0.925919 -1.229083 -1.812462
-v -0.925919 -1.229083 -1.812462
-v -0.979076 -1.251844 -1.815524
-v -1.035697 -1.260092 -1.802467
-v -1.087162 -1.252571 -1.775278
-v -1.125636 -1.230425 -1.738097
-v -1.125636 -1.230425 -1.738097
-v -0.914307 -1.193565 -1.780634
-v -1.114024 -1.194907 -1.706269
-v -1.090799 -1.123872 -1.642612
-v -1.102411 -1.159389 -1.674441
-v -0.891082 -1.122530 -1.716977
-v -0.902694 -1.158047 -1.748805
-v -1.528858 -2.440977 0.751459
-v -1.508944 -2.559236 0.656159
-v -1.539856 -2.288759 0.834912
-v -1.451679 -1.303750 0.948058
-v -1.478682 -1.449913 0.968558
-v -1.426015 -1.190961 0.919305
-v -1.480183 -2.639662 0.550581
-v -1.447001 -2.701173 0.439864
-v -1.447001 -2.701173 0.439864
-v -1.508360 -1.662824 0.972550
-v -1.532244 -1.896875 0.953519
-v -1.541863 -2.106456 0.904953
-v -1.453614 -2.422652 0.738754
-v -1.434694 -2.537521 0.644681
-v -1.464271 -2.276966 0.816934
-v -1.377808 -1.320704 0.926206
-v -1.404762 -1.464162 0.945204
-v -1.351894 -1.209214 0.899591
-v -1.407932 -2.620632 0.530093
-v -1.377248 -2.687863 0.405248
-v -1.377248 -2.687863 0.405248
-v -1.433798 -1.671554 0.948966
-v -1.456948 -1.898697 0.930757
-v -1.466244 -2.101408 0.883841
-v -1.432393 -2.726928 0.566657
-v -1.460993 -2.641840 0.704035
-v -1.399961 -2.793507 0.416630
-v -1.399961 -2.793507 0.416630
-v -1.399961 -2.793507 0.416630
-v -1.481929 -2.519734 0.816114
-v -1.494583 -2.362602 0.909303
-v -1.341930 -1.022926 0.981547
-v -1.311324 -0.887595 0.946792
-v -1.311324 -0.887595 0.946792
-v -1.372535 -1.158257 1.016302
-v -1.498339 -2.172434 0.990009
-v -1.489831 -1.950315 1.048524
-v -1.588851 -0.964844 0.615452
-v -1.640337 -0.963162 0.533873
-v -1.515047 -0.969678 0.692563
-v -1.515047 -0.969678 0.692563
-v -1.465695 -1.697334 1.075142
-v -1.434082 -1.462191 1.074455
-v -1.300067 -0.986233 0.846361
-v -1.300067 -0.986233 0.846361
-v -1.300067 -0.986233 0.846361
-v -1.374685 -0.965383 0.861799
-v -1.374685 -0.965383 0.861799
-v -1.374685 -0.965383 0.861799
-v -1.414294 -0.977266 0.769504
-v -1.400350 -1.078172 0.890552
-v -1.325980 -1.097723 0.872976
-v -1.403141 -1.293589 1.051056
-v -1.744845 -2.441453 0.316058
-v -1.818077 -2.289372 0.274055
-v -1.656816 -2.559561 0.358069
-v -1.855671 -1.304640 0.133666
-v -1.817348 -1.191824 0.130430
-v -1.888203 -1.450816 0.143019
-v -1.555284 -2.639828 0.399189
-v -1.909152 -1.663707 0.164606
-v -1.908247 -1.897704 0.195547
-v -1.875217 -2.107191 0.232957
-v -1.689221 -2.423171 0.263804
-v -1.758042 -2.277614 0.224732
-v -1.602772 -2.537892 0.305858
-v -1.793563 -1.321621 0.088100
-v -1.756790 -1.210106 0.083375
-v -1.824872 -1.465088 0.098318
-v -1.495273 -2.620824 0.354025
-v -1.845255 -1.672461 0.119524
-v -1.844566 -1.899551 0.149371
-v -1.812659 -2.102171 0.185514
-v -1.539092 -2.727163 0.351565
-v -1.665850 -2.642291 0.291069
-v -1.767861 -2.520365 0.239713
-v -1.849851 -2.363385 0.193130
-v -1.816177 -1.023971 0.025529
-v -1.862248 -1.159337 0.029106
-v -1.770105 -0.888606 0.021951
-v -1.770105 -0.888606 0.021951
-v -1.916547 -2.173355 0.146957
-v -1.958182 -1.951347 0.104390
-v -1.674138 -0.965031 0.443524
-v -1.690876 -0.970065 0.338116
-v -1.690876 -0.970065 0.338116
-v -1.964993 -1.698434 0.068625
-v -1.945523 -1.463318 0.043458
-v -1.683245 -0.987077 0.073925
-v -1.683245 -0.987077 0.073925
-v -1.683245 -0.987077 0.073925
-v -1.740701 -0.966190 0.123959
-v -1.740701 -0.966190 0.123959
-v -1.740701 -0.966190 0.123959
-v -1.691171 -0.977877 0.211358
-v -1.779024 -1.079007 0.127194
-v -1.720018 -1.098592 0.078650
-v -1.908319 -1.294702 0.032684
-v -1.705210 -0.935751 0.566024
-v -1.645437 -0.937729 0.660770
-v -1.567829 -0.943726 0.741939
-v -1.475050 -0.953589 0.806117
-v -1.446122 -1.148491 0.989277
-v -1.476735 -1.283818 1.024053
-v -1.507647 -1.452387 1.047384
-v -1.539156 -1.687438 1.047823
-v -1.563092 -1.940179 1.020769
-v -1.571283 -2.161818 0.961615
-v -1.567168 -2.351205 0.880305
-v -1.554186 -2.507190 0.786783
-v -1.532501 -2.627205 0.682448
-v -1.502275 -2.708683 0.568701
-v -1.467779 -2.770891 0.450248
-v -1.467779 -2.770891 0.450248
-v -1.467779 -2.770891 0.450248
-v -1.384897 -0.877837 0.919726
-v -1.384897 -0.877837 0.919726
-v -1.566356 -1.189996 0.749388
-v -1.594550 -1.292010 0.771582
-v -1.644140 -1.419104 0.775772
-v -1.723603 -1.446522 0.690545
-v -1.778443 -1.445025 0.602909
-v -1.415510 -1.013164 0.954502
-v -1.538149 -1.087983 0.727221
-v -1.744481 -0.937947 0.461112
-v -1.762146 -0.944155 0.350221
-v -1.757101 -0.954210 0.237538
-v -1.885263 -1.149459 0.104030
-v -1.931355 -1.284820 0.107601
-v -1.968487 -1.453402 0.118392
-v -1.987697 -1.688426 0.143626
-v -1.980418 -1.941099 0.179496
-v -1.938083 -2.162626 0.222196
-v -1.870690 -2.351874 0.268447
-v -1.788237 -2.507706 0.314968
-v -1.691940 -2.627557 0.361039
-v -1.583016 -2.708861 0.405937
-v -1.793078 -0.878736 0.096888
-v -1.793078 -0.878736 0.096888
-v -1.766972 -1.190438 0.344973
-v -1.801612 -1.292466 0.354173
-v -1.834842 -1.419524 0.391343
-v -1.815037 -1.446723 0.506225
-v -1.839170 -1.014097 0.100459
-v -1.732345 -1.088411 0.335747
-v -0.874137 -0.072697 0.644137
-v -0.838814 -0.065381 0.644137
-v -0.904286 -0.092501 0.644137
-v -0.924090 -0.122650 0.644137
-v -0.931406 -0.157973 0.644137
-v -0.924090 -0.193295 0.644137
-v -0.904286 -0.223445 0.644137
-v -0.888640 -0.178611 0.838418
-v -0.892914 -0.157973 0.838418
-v -0.877069 -0.196227 0.838418
-v -0.788989 -0.178611 0.838418
-v -0.800560 -0.196227 0.838418
-v -0.784714 -0.157973 0.838418
-v -0.818176 -0.108147 0.838418
-v -0.800560 -0.119719 0.838418
-v -0.838814 -0.103873 0.838418
-v -0.888640 -0.137335 0.838418
-v -0.877069 -0.119719 0.838418
-v -0.788989 -0.137335 0.838418
-v -1.025283 0.089448 0.477009
-v -1.025283 0.000000 0.485206
-v -0.955232 -0.089447 0.477009
-v -0.955232 0.000000 0.485206
-v -0.955232 -0.178758 0.450344
-v -0.851475 -0.416358 -0.462306
-v -0.873201 -0.485597 -0.307469
-v -0.851475 -0.290254 -0.596729
-v -0.851475 -0.098271 -0.685024
-v -0.851475 0.126651 -0.717641
-v -0.851475 0.351573 -0.685024
-v -0.851475 0.543556 -0.596729
-v -0.851475 0.669660 -0.462306
-v -0.873201 0.707236 -0.307469
-v -1.025283 0.430563 0.167312
-v -1.025283 0.352934 0.315440
-v -1.025283 -0.430563 0.167312
-v -1.025283 -0.352934 0.315441
-v -1.003557 -0.486603 -0.003170
-v -0.868328 -0.506980 -0.157927
-v -0.933506 -0.486603 -0.003170
-v -0.955232 -0.430563 0.167312
-v -0.955232 -0.352934 0.315441
-v -1.025283 -0.089447 0.477009
-v -1.025283 -0.178758 0.450344
-v -0.818176 -0.207798 0.838418
-v -0.838814 -0.212073 0.838418
-v -0.859453 -0.108147 0.838418
-v -0.859453 -0.207798 0.838418
-v -0.803492 -0.243249 0.838418
-v -0.838814 -0.250564 0.838418
-v -0.773342 -0.223445 0.838418
-v -0.924090 -0.122650 0.838418
-v -0.904286 -0.092501 0.838418
-v -0.931406 -0.157973 0.838418
-v -0.753538 -0.193295 0.838418
-v -0.746223 -0.157973 0.838418
-v -0.803492 -0.072697 0.838418
-v -0.838814 -0.065381 0.838418
-v -0.868327 0.633631 -0.157927
-v -0.933506 0.518266 -0.003170
-v -0.924090 -0.193295 0.838418
-v -1.025283 0.178758 0.450344
-v -1.003557 0.518266 -0.003170
-v -0.788989 0.137335 0.838418
-v -0.800560 0.119719 0.838418
-v -0.784714 0.157973 0.838418
-v -0.874137 0.243249 0.644137
-v -0.838814 0.250565 0.644137
-v -0.904286 0.223445 0.644137
-v -0.859453 0.207799 0.838418
-v -0.838814 0.212073 0.838418
-v -0.877069 0.196228 0.838418
-v -0.924090 0.193296 0.644137
-v -0.931406 0.157973 0.644137
-v -0.859453 0.108148 0.838418
-v -0.877069 0.119719 0.838418
-v -0.838814 0.103873 0.838418
-v -0.924090 0.122651 0.644137
-v -0.904286 0.092501 0.644137
-v -0.888640 0.178612 0.838418
-v -0.892914 0.157973 0.838418
-v -0.874137 0.072697 0.644137
-v -0.838814 0.065382 0.644137
-v -0.818176 0.207799 0.838418
-v -0.800560 0.196228 0.838418
-v -0.803492 0.072697 0.644137
-v -0.773342 0.092501 0.644137
-v -0.788989 0.178612 0.838418
-v -0.753538 0.122651 0.644137
-v -0.746223 0.157973 0.644137
-v -0.818176 0.108148 0.838418
-v -0.753538 0.193296 0.644137
-v -0.773342 0.223445 0.644137
-v -0.888640 0.137335 0.838418
-v -0.803492 0.243249 0.644137
-v -1.025283 -0.267792 0.403136
-v -0.888640 0.178611 0.644137
-v -0.877069 0.196227 0.644137
-v -0.892914 0.157973 0.644137
-v -0.888640 0.137335 0.644137
-v -0.877069 0.119719 0.644137
-v -0.859453 0.108148 0.644137
-v -0.838814 0.103873 0.644137
-v -0.818176 0.108148 0.644137
-v -0.800560 0.119719 0.644137
-v -0.788989 0.137335 0.644137
-v -0.784714 0.157973 0.644137
-v -0.788989 0.178611 0.644137
-v -0.800560 0.196227 0.644137
-v -0.818176 0.207798 0.644137
-v -0.838814 0.212073 0.644137
-v -0.859453 0.207798 0.644137
-v -0.955232 0.267793 0.403136
-v -0.955232 0.178758 0.450344
-v -0.955232 0.352934 0.315440
-v -0.955232 0.430563 0.167312
-v -0.803492 -0.072697 0.644137
-v -0.773342 -0.092501 0.644137
-v -0.753538 -0.122650 0.644137
-v -0.746223 -0.157973 0.644137
-v -0.753538 -0.193295 0.644137
-v -0.773342 -0.223445 0.644137
-v -0.803492 -0.243249 0.644137
-v -0.838814 -0.250564 0.644137
-v -0.874137 -0.243249 0.644137
-v -0.888640 -0.137334 0.423181
-v -0.892914 -0.157973 0.415896
-v -0.877069 -0.119718 0.428739
-v -0.888640 -0.178611 0.407436
-v -0.877069 -0.196227 0.399523
-v -0.859453 -0.207797 0.393878
-v -0.838814 -0.212071 0.391623
-v -0.818176 -0.207797 0.393878
-v -0.800560 -0.196227 0.399523
-v -0.788989 -0.178611 0.407436
-v -0.784714 -0.157973 0.415896
-v -0.788989 -0.137334 0.423181
-v -0.800560 -0.119718 0.428739
-v -0.818176 -0.108147 0.432018
-v -0.838814 -0.103872 0.433088
-v -0.859453 -0.108147 0.432018
-v -1.025283 0.267793 0.403136
-v -0.955232 0.089448 0.477009
-v -0.955232 -0.267792 0.403136
-v -0.938379 -0.506980 -0.157927
-v -0.938379 0.633631 -0.157927
-v -0.800560 -0.119718 0.693786
-v -0.818176 -0.108147 0.693786
-v -0.838814 -0.103873 0.693786
-v -0.859453 -0.108147 0.693786
-v -0.877069 -0.119718 0.693786
-v -0.888640 -0.137334 0.693786
-v -0.892914 -0.157973 0.693786
-v -0.888640 -0.178611 0.693786
-v -0.877069 -0.196227 0.693786
-v -0.859453 -0.207798 0.693786
-v -0.838814 -0.212073 0.693786
-v -1.025283 0.291908 -0.291908
-v -1.025283 0.380203 -0.157485
-v -1.025283 0.412820 0.000000
-v -1.025283 0.157485 -0.380203
-v -1.025283 -0.000000 -0.412820
-v -1.025283 -0.157485 -0.380203
-v -1.025283 -0.291908 -0.291907
-v -1.025283 -0.380203 -0.157485
-v -1.025283 -0.412820 0.000000
-v -1.025283 -0.380203 0.157485
-v -1.025283 -0.311654 0.288289
-v -1.025283 0.311654 0.288288
-v -1.025283 0.380203 0.157485
-v -0.659388 -0.291908 -0.291907
-v -0.659388 -0.380203 -0.157485
-v -0.659388 -0.412820 0.000000
-v -0.955232 -0.311654 0.288289
-v -0.955232 -0.380203 0.157485
-v -0.955232 -0.412820 0.000000
-v -0.955232 -0.380203 -0.157485
-v -0.955232 -0.291908 -0.291907
-v -0.955232 -0.157485 -0.380203
-v -0.955232 -0.000000 -0.412820
-v -0.955232 0.157485 -0.380203
-v -0.955232 0.291908 -0.291908
-v -0.955232 0.380203 -0.157485
-v -0.955232 0.412820 0.000000
-v -0.955232 0.380203 0.157485
-v -0.955232 0.311654 0.288288
-v -0.803150 -0.485597 -0.307469
-v -0.781424 -0.416358 -0.462306
-v -0.781424 -0.290254 -0.596729
-v -0.781423 -0.098271 -0.685024
-v -0.781423 0.126651 -0.717641
-v -0.781423 0.351573 -0.685024
-v -0.781423 0.543556 -0.596729
-v -0.781423 0.669660 -0.462306
-v -0.803149 0.707236 -0.307469
-v -0.904286 0.223445 0.838418
-v -0.874137 0.243249 0.838418
-v -0.838814 0.250565 0.838418
-v -0.931406 0.157973 0.838418
-v -0.924090 0.193296 0.838418
-v -0.904286 0.092501 0.838418
-v -0.924090 0.122651 0.838418
-v -0.838814 0.065382 0.838418
-v -0.874137 0.072697 0.838418
-v -0.773342 0.092501 0.838418
-v -0.803492 0.072697 0.838418
-v -0.874137 -0.243249 0.838418
-v -0.904286 -0.223445 0.838418
-v -0.753538 -0.122650 0.838418
-v -0.746223 0.157973 0.838418
-v -0.753538 0.122651 0.838418
-v -0.773342 -0.092501 0.838418
-v -0.773342 0.223445 0.838418
-v -0.753538 0.193296 0.838418
-v -0.803492 0.243249 0.838418
-v -0.877069 0.196227 0.693786
-v -0.859453 0.207798 0.693786
-v -0.838814 0.212073 0.693786
-v -0.892914 0.157973 0.693786
-v -0.888640 0.178611 0.693786
-v -0.877069 0.119719 0.693786
-v -0.888640 0.137335 0.693786
-v -0.838814 0.103873 0.693786
-v -0.859453 0.108148 0.693786
-v -0.800560 0.119719 0.693786
-v -0.818176 0.108148 0.693786
-v -0.784714 0.157973 0.693786
-v -0.788989 0.137335 0.693786
-v -0.800560 0.196227 0.693786
-v -0.788989 0.178611 0.693786
-v -0.818176 0.207798 0.693786
-v -0.659388 0.311654 0.288288
-v -0.659388 0.380203 0.157485
-v -0.659388 0.412820 0.000000
-v -1.025283 0.236471 0.365727
-v -1.025283 0.157850 0.407413
-v -0.784714 0.157973 0.415896
-v -0.788989 0.137335 0.423181
-v -0.800560 0.119719 0.428739
-v -0.955232 0.236471 0.365727
-v -0.955232 0.157850 0.407413
-v -1.025283 0.000000 0.438198
-v -1.025283 0.078986 0.430960
-v -0.800560 0.196227 0.399523
-v -0.788989 0.178611 0.407436
-v -0.955232 0.000000 0.438198
-v -0.955232 0.078986 0.430960
-v -0.838814 0.212072 0.391623
-v -0.818176 0.207798 0.393878
-v -0.859453 0.207798 0.393878
-v -0.877069 0.196227 0.399523
-v -0.892914 0.157973 0.415896
-v -0.888640 0.178611 0.407436
-v -0.877069 0.119719 0.428739
-v -0.888640 0.137335 0.423181
-v -0.838814 0.103872 0.433088
-v -0.859453 0.108147 0.432018
-v -0.818176 0.108147 0.432018
-v -0.784714 -0.157973 0.693786
-v -0.788989 -0.137334 0.693786
-v -0.800560 -0.196227 0.693786
-v -0.788989 -0.178611 0.693786
-v -0.818176 -0.207798 0.693786
-v -0.838814 -0.212073 0.644137
-v -0.818176 -0.207798 0.644137
-v -0.800560 -0.196227 0.644137
-v -0.788989 -0.178611 0.644137
-v -0.784714 -0.157973 0.644137
-v -0.788989 -0.137334 0.644137
-v -0.800560 -0.119718 0.644137
-v -0.818176 -0.108147 0.644137
-v -0.838814 -0.103873 0.644137
-v -0.859453 -0.108147 0.644137
-v -0.877069 -0.119718 0.644137
-v -0.888640 -0.137334 0.644137
-v -0.892914 -0.157973 0.644137
-v -0.888640 -0.178611 0.644137
-v -0.877069 -0.196227 0.644137
-v -0.859453 -0.207798 0.644137
-v -0.874137 -0.072697 0.838418
-v -1.025283 -0.236471 0.365727
-v -1.025283 -0.157850 0.407413
-v -0.955232 -0.236471 0.365727
-v -0.955232 -0.157850 0.407413
-v -1.025283 -0.078985 0.430960
-v -0.955232 -0.078985 0.430960
-v -0.659388 -0.380203 0.157485
-v -0.659388 -0.311654 0.288289
-v -0.659388 -0.000000 -0.412820
-v -0.659388 -0.157485 -0.380203
-v -0.659388 0.291908 -0.291908
-v -0.659388 0.157485 -0.380203
-v -0.659388 0.380203 -0.157485
-v -0.659388 0.157850 0.407413
-v -0.659388 0.078986 0.430960
-v -0.659388 0.000000 0.438198
-v -0.659388 0.236471 0.365727
-v -0.659388 -0.157850 0.407413
-v -0.659388 -0.078985 0.430960
-v -0.659388 -0.236471 0.365727
-v -0.707107 -0.478468 -0.198188
-v -0.707107 -0.519514 0.000000
-v -0.707107 -0.367352 -0.367352
-v -0.707107 0.198188 0.478468
-v -0.707107 0.367352 0.367352
-v -0.707107 0.000000 0.519514
-v -0.707107 0.478468 -0.198188
-v -0.707107 0.519514 0.000000
-v -0.707107 0.367352 -0.367352
-v -0.707107 -0.198188 -0.478468
-v -0.707107 -0.000000 -0.519514
-v -0.707107 -0.198188 0.478468
-v -0.707107 0.478468 0.198188
-v -0.707107 0.198188 -0.478468
-v -0.707107 -0.478468 0.198188
-v -0.659388 0.367352 -0.367352
-v -0.659388 0.478468 -0.198188
-v -0.659388 0.519514 0.000000
-v -0.659388 0.367352 0.367352
-v -0.659388 0.478468 0.198188
-v -0.659388 0.000000 0.519514
-v -0.659388 0.198188 0.478468
-v -0.659388 -0.367352 0.367352
-v -0.659388 -0.198188 0.478468
-v -0.659388 -0.519514 0.000000
-v -0.659388 -0.478468 0.198188
-v -0.659388 -0.367352 -0.367352
-v -0.659388 -0.478468 -0.198188
-v -0.659388 -0.000000 -0.519514
-v -0.659388 -0.198188 -0.478468
-v -0.659388 0.198188 -0.478468
-v -0.879130 -0.585156 -1.245817
-v -0.863307 -0.626480 -1.251705
-v -0.825091 -0.643768 -1.266979
-v -0.673610 -0.653314 -0.605838
-v -0.682393 -0.618577 -0.627969
-v -0.660460 -0.676295 -0.573090
-v -0.644944 -0.684023 -0.534710
-v -0.629424 -0.675320 -0.496540
-v -0.616264 -0.651511 -0.464392
-v -0.607467 -0.616222 -0.443160
-v -0.604371 -0.574824 -0.436077
-v -0.685470 -0.577374 -0.636112
-v -0.652009 -0.578013 -0.685377
-v -0.635739 -0.619326 -0.690395
-v -0.597888 -0.636714 -0.706570
-v -0.771027 -0.585742 -1.289637
-v -0.786867 -0.626894 -1.282691
-v -0.473558 -0.654397 -0.686931
-v -0.482341 -0.619661 -0.709061
-v -0.460408 -0.677379 -0.654182
-v -0.444892 -0.685106 -0.615802
-v -0.429373 -0.676403 -0.577632
-v -0.416213 -0.652595 -0.545484
-v -0.407415 -0.617305 -0.524252
-v -0.404320 -0.575908 -0.517169
-v -0.485419 -0.578457 -0.717204
-v -0.543742 -0.578600 -0.729263
-v -0.559298 -0.619740 -0.721381
-v -0.863290 -0.544004 -1.252763
-v -0.825066 -0.527130 -1.268475
-v -0.673577 -0.500687 -0.607797
-v -0.682375 -0.535976 -0.629029
-v -0.660417 -0.476879 -0.575649
-v -0.644898 -0.468176 -0.537479
-v -0.629382 -0.475903 -0.499099
-v -0.616232 -0.498884 -0.466351
-v -0.607449 -0.533621 -0.444220
-v -0.635721 -0.536850 -0.691453
-v -0.597863 -0.519899 -0.708069
-v -0.786849 -0.544418 -1.283749
-v -0.473526 -0.501770 -0.688889
-v -0.482323 -0.537060 -0.710121
-v -0.460366 -0.477962 -0.656741
-v -0.444846 -0.469259 -0.618571
-v -0.429330 -0.476986 -0.580191
-v -0.416180 -0.499968 -0.547443
-v -0.407397 -0.534704 -0.525312
-v -0.559281 -0.537264 -0.722439
-v -1.032903 -1.208399 -1.625950
-v -1.004603 -1.231164 -1.599998
-v -0.961061 -1.240857 -1.601689
-v -0.918379 -0.690299 -1.207724
-v -0.933715 -0.690640 -1.246944
-v -0.904142 -0.673870 -1.171656
-v -0.893172 -0.643853 -1.144231
-v -0.887138 -0.604817 -1.129624
-v -0.886960 -0.562707 -1.130059
-v -0.892665 -0.523932 -1.145470
-v -0.903383 -0.494396 -1.173510
-v -0.947815 -0.674839 -1.283345
-v -0.908507 -0.702879 -1.318211
-v -0.879923 -0.724831 -1.291796
-v -0.836556 -0.735387 -1.293913
-v -0.924265 -1.209297 -1.668423
-v -0.927784 -1.231800 -1.630031
-v -0.717338 -0.691962 -1.286322
-v -0.732674 -0.692302 -1.325542
-v -0.703101 -0.675532 -1.250254
-v -0.692131 -0.645515 -1.222829
-v -0.686098 -0.606480 -1.208222
-v -0.685920 -0.564369 -1.208657
-v -0.691624 -0.525594 -1.224068
-v -0.702342 -0.496058 -1.252108
-v -0.746774 -0.676502 -1.361943
-v -0.799704 -0.703779 -1.360748
-v -0.803105 -0.725466 -1.321828
-v -1.029384 -1.185896 -1.664342
-v -0.996107 -1.176839 -1.692684
-v -0.964238 -0.606528 -1.326797
-v -0.958533 -0.645303 -1.311386
-v -0.964060 -0.564418 -1.327231
-v -0.958026 -0.525383 -1.312625
-v -0.947056 -0.495365 -1.285199
-v -0.932819 -0.478936 -1.249131
-v -0.917483 -0.478595 -1.209911
-v -0.904705 -0.679563 -1.356140
-v -0.871655 -0.671271 -1.385047
-v -0.952566 -1.186532 -1.694375
-v -0.763197 -0.608191 -1.405394
-v -0.757493 -0.646966 -1.389983
-v -0.763019 -0.566080 -1.405829
-v -0.756986 -0.527045 -1.391222
-v -0.746015 -0.497028 -1.363797
-v -0.731779 -0.480598 -1.327729
-v -0.716443 -0.480258 -1.288509
-v -0.827886 -0.680198 -1.386172
-v -1.162960 -0.605827 0.365538
-v -1.180859 -0.645406 0.355250
-v -1.203219 -0.661802 0.320267
-v -0.582831 -0.867274 0.138486
-v -0.594171 -0.827093 0.144001
-v -0.558528 -0.899571 0.126664
-v -0.524961 -0.919068 0.110335
-v -0.487240 -0.922795 0.091984
-v -0.451108 -0.910186 0.074405
-v -0.422066 -0.883160 0.060275
-v -0.404535 -0.845832 0.051744
-v -0.590819 -0.785145 0.142369
-v -0.641037 -0.775845 0.111730
-v -0.658134 -0.815697 0.100954
-v -0.681357 -0.831904 0.066390
-v -1.213991 -0.605832 0.260644
-v -1.216943 -0.645409 0.281079
-v -0.677267 -0.867283 -0.055626
-v -0.688606 -0.827102 -0.050112
-v -0.652964 -0.899580 -0.067448
-v -0.619397 -0.919077 -0.083778
-v -0.581676 -0.922804 -0.102129
-v -0.545544 -0.910195 -0.119707
-v -0.516501 -0.883170 -0.133838
-v -0.498970 -0.845841 -0.142368
-v -0.685255 -0.785154 -0.051744
-v -0.692145 -0.775850 0.006677
-v -0.694218 -0.815701 0.026783
-v -1.160008 -0.566250 0.345103
-v -1.173732 -0.549858 0.305916
-v -0.544246 -0.720791 0.119708
-v -0.573288 -0.747816 0.133838
-v -0.508114 -0.708181 0.102129
-v -0.470393 -0.711909 0.083778
-v -0.436826 -0.731405 0.067448
-v -0.412523 -0.763703 0.055627
-v -0.401184 -0.803884 0.050112
-v -0.637283 -0.736541 0.090806
-v -0.651825 -0.719790 0.052017
-v -1.196092 -0.566253 0.270932
-v -0.638682 -0.720800 -0.074405
-v -0.667724 -0.747826 -0.060275
-v -0.602550 -0.708191 -0.091984
-v -0.564829 -0.711918 -0.110335
-v -0.531262 -0.731415 -0.126664
-v -0.506958 -0.763712 -0.138486
-v -0.495619 -0.803893 -0.144001
-v -0.673367 -0.736545 0.016635
-v -1.558712 -1.207594 0.558825
-v -1.536357 -1.231944 0.528825
-v -1.542129 -1.241999 0.485718
-v -1.126223 -0.712593 0.402674
-v -1.164006 -0.710783 0.421187
-v -1.090689 -0.698163 0.385279
-v -1.062811 -0.669692 0.371650
-v -1.046836 -0.631513 0.363861
-v -1.045194 -0.589439 0.363099
-v -1.058136 -0.549875 0.369480
-v -1.083691 -0.518844 0.382032
-v -1.198284 -0.693010 0.438000
-v -1.237636 -0.719662 0.402109
-v -1.214803 -0.743225 0.371777
-v -1.221028 -0.754118 0.328890
-v -1.610034 -1.207489 0.454074
-v -1.572647 -1.231869 0.454755
-v -1.221198 -0.712397 0.208825
-v -1.258980 -0.710587 0.227338
-v -1.185663 -0.697968 0.191430
-v -1.157786 -0.669496 0.177800
-v -1.141810 -0.631317 0.170012
-v -1.140168 -0.589243 0.169250
-v -1.153110 -0.549679 0.175631
-v -1.178666 -0.518649 0.188182
-v -1.293259 -0.692814 0.244150
-v -1.289036 -0.719556 0.297198
-v -1.251093 -0.743150 0.297706
-v -1.596099 -1.183214 0.558145
-v -1.626618 -1.173084 0.527182
-v -1.236781 -0.622415 0.456932
-v -1.223839 -0.661979 0.450551
-v -1.235139 -0.580341 0.456170
-v -1.219164 -0.542162 0.448382
-v -1.191287 -0.513691 0.434752
-v -1.155752 -0.499261 0.417357
-v -1.117969 -0.501071 0.398844
-v -1.274545 -0.694495 0.401096
-v -1.305645 -0.685099 0.370417
-v -1.632390 -1.183139 0.484074
-v -1.331756 -0.622220 0.263083
-v -1.318814 -0.661784 0.256702
-v -1.330114 -0.580146 0.262321
-v -1.314138 -0.541967 0.254532
-v -1.286261 -0.513495 0.240903
-v -1.250726 -0.499066 0.223507
-v -1.212944 -0.500876 0.204995
-v -1.310835 -0.694420 0.327026
-v -0.707107 -0.367352 0.367352
-v -1.666868 -1.085842 0.428225
-v -1.666868 -1.085842 0.428225
-v -1.633369 -1.059764 0.466150
-v -1.603599 -1.050567 0.515746
-v -1.582089 -1.059651 0.569461
-v -1.572115 -1.085633 0.619120
-v -1.572115 -1.085633 0.619120
-v -1.513055 -1.106442 0.589828
-v -1.607809 -1.106651 0.398933
-v -1.576834 -1.129750 0.383583
-v -1.482080 -1.129541 0.574478
-v -1.556128 -1.164320 0.373344
-v -1.461375 -1.164112 0.564238
-v -1.548845 -1.205099 0.369773
-v -1.454092 -1.204890 0.560668
-v -1.556093 -1.245877 0.373415
-v -1.461339 -1.245668 0.564310
-v -1.576768 -1.280447 0.383715
-v -1.482015 -1.280238 0.574610
-v -1.607724 -1.303546 0.399106
-v -1.512970 -1.303337 0.590000
-v -1.644246 -1.311657 0.417243
-v -1.549493 -1.311448 0.608138
-v -1.680776 -1.303545 0.435366
-v -1.586022 -1.303337 0.626261
-v -1.746067 -1.261105 0.467728
-v -1.746067 -1.261105 0.467728
-v -1.736847 -1.288757 0.517763
-v -1.715603 -1.298428 0.571611
-v -1.685567 -1.288645 0.621075
-v -1.651313 -1.260897 0.658623
-v -1.651313 -1.260897 0.658623
-v -1.726267 -1.217289 0.457852
-v -1.631514 -1.217081 0.648747
-v -1.591914 -1.129449 0.628996
-v -1.611714 -1.173265 0.638871
-v -1.686668 -1.129657 0.438101
-v -1.706468 -1.173473 0.447977
-vt 0.595148 0.545044
-vt 0.595205 0.563545
-vt 0.576220 0.563819
-vt 0.576030 0.545141
-vt 0.576189 0.522072
-vt 0.595273 0.522319
-vt 0.614032 0.522383
-vt 0.614031 0.544992
-vt 0.614031 0.563464
-vt 0.604273 0.369295
-vt 0.601481 0.394923
-vt 0.588858 0.392887
-vt 0.594514 0.367324
-vt 0.600405 0.345810
-vt 0.607079 0.348235
-vt 0.614057 0.348001
-vt 0.614052 0.369953
-vt 0.614047 0.395617
-vt 0.599044 0.423653
-vt 0.597116 0.455302
-vt 0.579953 0.453878
-vt 0.583890 0.421805
-vt 0.614042 0.424291
-vt 0.614038 0.455805
-vt 0.595800 0.490213
-vt 0.577277 0.489389
-vt 0.614035 0.490505
-vt 0.556426 0.545379
-vt 0.556450 0.521677
-vt 0.556911 0.564390
-vt 0.584888 0.364006
-vt 0.593464 0.343782
-vt 0.576137 0.389422
-vt 0.568433 0.418657
-vt 0.562305 0.451472
-vt 0.558190 0.488003
-vt 0.618691 0.332898
-vt 0.622186 0.328451
-vt 0.627711 0.345815
-vt 0.621035 0.348238
-vt 0.614062 0.329898
-vt 0.830703 0.583935
-vt 0.830139 0.611512
-vt 0.818899 0.605777
-vt 0.819666 0.578920
-vt 0.819805 0.555699
-vt 0.831042 0.559359
-vt 0.824150 0.769641
-vt 0.823708 0.788261
-vt 0.810714 0.790624
-vt 0.811745 0.769048
-vt 0.813091 0.743692
-vt 0.825582 0.746367
-vt 0.831557 0.536865
-vt 0.819648 0.534238
-vt 0.819202 0.511553
-vt 0.831554 0.514497
-vt 0.827209 0.712833
-vt 0.814873 0.708486
-vt 0.816349 0.670396
-vt 0.828201 0.675917
-vt 0.829273 0.642264
-vt 0.817704 0.636422
-vt 0.460640 0.477452
-vt 0.463036 0.501044
-vt 0.452412 0.501582
-vt 0.452520 0.477956
-vt 0.452619 0.456777
-vt 0.458322 0.457280
-vt 0.464864 0.454366
-vt 0.469942 0.475214
-vt 0.474958 0.498849
-vt 0.465154 0.527907
-vt 0.466792 0.557739
-vt 0.452155 0.558092
-vt 0.452290 0.528393
-vt 0.479446 0.525993
-vt 0.482987 0.556354
-vt 0.467755 0.590688
-vt 0.467196 0.619138
-vt 0.451877 0.618991
-vt 0.452006 0.590843
-vt 0.485221 0.590073
-vt 0.484475 0.624231
-vt 0.507020 0.644201
-vt 0.506366 0.662846
-vt 0.487460 0.661986
-vt 0.488028 0.644939
-vt 0.507215 0.621109
-vt 0.481575 0.470529
-vt 0.489499 0.494372
-vt 0.473733 0.451002
-vt 0.496645 0.522155
-vt 0.502366 0.553588
-vt 0.505970 0.588680
-vt 0.448970 0.440530
-vt 0.452714 0.436948
-vt 0.446912 0.457226
-vt 0.440397 0.454250
-vt 0.445414 0.435214
-vt 0.808958 0.530284
-vt 0.808980 0.502410
-vt 0.808720 0.554682
-vt 0.808019 0.578457
-vt 0.806986 0.605210
-vt 0.796942 0.812200
-vt 0.798445 0.789857
-vt 0.809360 0.812999
-vt 0.807940 0.835534
-vt 0.795481 0.834736
-vt 0.805807 0.635838
-vt 0.804475 0.669810
-vt 0.634897 0.840524
-vt 0.650681 0.835642
-vt 0.653893 0.847074
-vt 0.637292 0.852250
-vt 0.620057 0.854019
-vt 0.620057 0.842048
-vt 0.802876 0.707895
-vt 0.801392 0.742994
-vt 0.686979 0.816680
-vt 0.704197 0.830110
-vt 0.696153 0.839303
-vt 0.683928 0.828508
-vt 0.668355 0.827084
-vt 0.669226 0.838615
-vt 0.595373 0.582516
-vt 0.595568 0.601907
-vt 0.577122 0.602258
-vt 0.576629 0.582884
-vt 0.614030 0.582411
-vt 0.614030 0.601845
-vt 0.844001 0.641310
-vt 0.843755 0.674937
-vt 0.863671 0.669937
-vt 0.863812 0.635939
-vt 0.777455 0.804354
-vt 0.778595 0.785758
-vt 0.557692 0.583627
-vt 0.558617 0.603025
-vt 0.822675 0.807048
-vt 0.821502 0.825843
-vt 0.505579 0.681638
-vt 0.486852 0.679363
-vt 0.841367 0.805347
-vt 0.841045 0.823964
-vt 0.860443 0.835085
-vt 0.861117 0.812509
-vt 0.782448 0.710791
-vt 0.781214 0.744088
-vt 0.799989 0.768274
-vt 0.632914 0.545046
-vt 0.652031 0.545144
-vt 0.651841 0.563821
-vt 0.632856 0.563546
-vt 0.632791 0.522321
-vt 0.651875 0.522076
-vt 0.623832 0.369299
-vt 0.633591 0.367332
-vt 0.639237 0.392897
-vt 0.626613 0.394928
-vt 0.629040 0.423658
-vt 0.644194 0.421814
-vt 0.648123 0.453886
-vt 0.630960 0.455306
-vt 0.632269 0.490216
-vt 0.650791 0.489395
-vt 0.671634 0.545383
-vt 0.671148 0.564393
-vt 0.671611 0.521683
-vt 0.397638 0.681084
-vt 0.398268 0.699925
-vt 0.376001 0.701147
-vt 0.374860 0.682186
-vt 0.643219 0.364018
-vt 0.651958 0.389437
-vt 0.634653 0.343791
-vt 0.785820 0.640511
-vt 0.784396 0.674110
-vt 0.659652 0.418672
-vt 0.665770 0.451485
-vt 0.790005 0.532910
-vt 0.789776 0.557504
-vt 0.669877 0.488013
-vt 0.886869 0.583196
-vt 0.875662 0.578572
-vt 0.875840 0.605438
-vt 0.887274 0.610775
-vt 0.844403 0.533638
-vt 0.845040 0.558223
-vt 0.863871 0.554737
-vt 0.863250 0.530347
-vt 0.886343 0.558624
-vt 0.874984 0.555362
-vt 0.886827 0.769023
-vt 0.874408 0.768863
-vt 0.874130 0.790464
-vt 0.887035 0.787648
-vt 0.887444 0.745711
-vt 0.874867 0.743474
-vt 0.886065 0.536128
-vt 0.874072 0.533922
-vt 0.885273 0.513776
-vt 0.872826 0.511269
-vt 0.887898 0.712139
-vt 0.875417 0.708226
-vt 0.504766 0.700508
-vt 0.484248 0.699407
-vt 0.887597 0.675209
-vt 0.875558 0.670106
-vt 0.887488 0.641537
-vt 0.875722 0.636106
-vt 0.843091 0.711664
-vt 0.843022 0.744983
-vt 0.863150 0.743186
-vt 0.863406 0.708056
-vt 0.788703 0.582546
-vt 0.444406 0.477377
-vt 0.441793 0.500947
-vt 0.429891 0.498643
-vt 0.435124 0.475052
-vt 0.439431 0.527791
-vt 0.437522 0.557606
-vt 0.421342 0.556074
-vt 0.425157 0.525747
-vt 0.436258 0.590542
-vt 0.436547 0.618986
-vt 0.419235 0.623916
-vt 0.418803 0.589767
-vt 0.396534 0.643675
-vt 0.415503 0.644579
-vt 0.415926 0.661624
-vt 0.397025 0.662310
-vt 0.396540 0.620596
-vt 0.423533 0.470259
-vt 0.415390 0.494033
-vt 0.787203 0.609885
-vt 0.431558 0.450802
-vt 0.407992 0.521753
-vt 0.401989 0.553135
-vt 0.398071 0.588189
-vt 0.609431 0.332896
-vt 0.605938 0.328447
-vt 0.416370 0.678992
-vt 0.418748 0.699032
-vt 0.780276 0.767253
-vt 0.862290 0.502492
-vt 0.844081 0.508283
-vt 0.528379 0.682951
-vt 0.527063 0.701936
-vt 0.842893 0.768168
-vt 0.862631 0.768501
-vt 0.864007 0.578519
-vt 0.863914 0.605290
-vt 0.873556 0.812875
-vt 0.861841 0.790126
-vt 0.872923 0.835449
-vt 0.605217 0.840523
-vt 0.602822 0.852250
-vt 0.586220 0.847073
-vt 0.589433 0.835641
-vt 0.553133 0.816680
-vt 0.556185 0.828508
-vt 0.543961 0.839303
-vt 0.535917 0.830110
-vt 0.844848 0.583285
-vt 0.844310 0.610656
-vt 0.571758 0.827084
-vt 0.570888 0.838614
-vt 0.632687 0.582517
-vt 0.651431 0.582885
-vt 0.650938 0.602257
-vt 0.632493 0.601906
-vt 0.670367 0.583628
-vt 0.669441 0.603025
-vt 0.886658 0.806463
-vt 0.886140 0.825289
-vt 0.841858 0.786721
-vt 0.776485 0.822947
-vt 0.456423 0.440566
-vt 0.460029 0.435285
-vt 0.627527 0.329700
-vt 0.790576 0.507555
-vt 0.600596 0.329694
-vt 0.438728 0.435816
-vt 0.466709 0.435952
-vt 0.627678 0.321797
-vt 0.640506 0.338950
-vt 0.388549 0.516550
-vt 0.399117 0.488036
-vt 0.452852 0.409213
-vt 0.665157 0.385129
-vt 0.675833 0.414757
-vt 0.614067 0.305766
-vt 0.538149 0.486285
-vt 0.543738 0.448489
-vt 0.552251 0.414737
-vt 0.562939 0.385108
-vt 0.516132 0.517127
-vt 0.524126 0.550031
-vt 0.653203 0.359831
-vt 0.372832 0.620152
-vt 0.374916 0.586169
-vt 0.529147 0.586863
-vt 0.530938 0.620870
-vt 0.587612 0.338937
-vt 0.600449 0.321791
-vt 0.684335 0.448506
-vt 0.689916 0.486298
-vt 0.539744 0.604028
-vt 0.538233 0.584566
-vt 0.530634 0.644819
-vt 0.529648 0.663920
-vt 0.535920 0.545612
-vt 0.535917 0.521122
-vt 0.372936 0.644088
-vt 0.505823 0.488524
-vt 0.536894 0.565094
-vt 0.482422 0.444047
-vt 0.494692 0.464430
-vt 0.689824 0.584567
-vt 0.688313 0.604028
-vt 0.373762 0.663176
-vt 0.692143 0.521131
-vt 0.380261 0.549384
-vt 0.692138 0.545617
-vt 0.574904 0.359814
-vt 0.468325 0.426220
-vt 0.410470 0.464038
-vt 0.422933 0.443764
-vt 0.691163 0.565098
-vt 0.437207 0.426066
-vt 0.487703 0.957684
-vt 0.486311 0.967387
-vt 0.475241 0.966081
-vt 0.475703 0.956127
-vt 0.486616 0.985191
-vt 0.488422 0.994938
-vt 0.476420 0.996920
-vt 0.475610 0.986936
-vt 0.486009 0.976363
-vt 0.474911 0.976540
-vt 0.494370 0.976144
-vt 0.494678 0.984423
-vt 0.494525 0.967926
-vt 0.495146 0.958185
-vt 0.495658 0.993793
-vt 0.502224 0.976074
-vt 0.502342 0.984086
-vt 0.502244 0.968090
-vt 0.502522 0.958761
-vt 0.502774 0.993068
-vt 0.509773 0.976174
-vt 0.509841 0.983955
-vt 0.509844 0.968263
-vt 0.509966 0.958582
-vt 0.509900 0.993086
-vt 0.517305 0.976181
-vt 0.517281 0.983996
-vt 0.517422 0.968266
-vt 0.517426 0.958905
-vt 0.517133 0.993283
-vt 0.524941 0.976270
-vt 0.524768 0.984170
-vt 0.525000 0.968362
-vt 0.524956 0.958524
-vt 0.524463 0.993609
-vt 0.532635 0.976380
-vt 0.532421 0.984458
-vt 0.532698 0.968305
-vt 0.532553 0.958696
-vt 0.531900 0.994063
-vt 0.540551 0.976491
-vt 0.540295 0.984867
-vt 0.540530 0.968158
-vt 0.539998 0.958637
-vt 0.539419 0.994701
-vt 0.549003 0.976568
-vt 0.548552 0.985521
-vt 0.548654 0.967664
-vt 0.547312 0.958110
-vt 0.547002 0.995681
-vt 0.563519 0.976587
-vt 0.562999 0.987126
-vt 0.562858 0.966125
-vt 0.561816 0.956127
-vt 0.562074 0.997511
-vt 0.468321 0.649889
-vt 0.460665 0.645197
-vt 0.451738 0.643445
-vt 0.442817 0.645013
-vt 0.435156 0.649667
-vt 0.442616 0.685443
-vt 0.435770 0.700660
-vt 0.434718 0.680950
-vt 0.451462 0.686803
-vt 0.451420 0.701935
-vt 0.460489 0.685447
-vt 0.467158 0.700838
-vt 0.468483 0.681098
-vt 0.468477 0.657598
-vt 0.468557 0.665350
-vt 0.468631 0.673175
-vt 0.961285 0.339786
-vt 0.965862 0.332936
-vt 0.975633 0.341571
-vt 0.970955 0.347548
-vt 0.966278 0.353526
-vt 0.956708 0.346636
-vt 0.961601 0.359503
-vt 0.952130 0.353487
-vt 0.956924 0.365481
-vt 0.947554 0.360336
-vt 0.953493 0.330476
-vt 0.959922 0.330476
-vt 0.943008 0.355790
-vt 0.940547 0.349851
-vt 0.947553 0.332936
-vt 0.940547 0.343422
-vt 0.943007 0.337482
-vt 0.947156 0.419266
-vt 0.940547 0.415534
-vt 0.946270 0.403817
-vt 0.953120 0.408394
-vt 0.959971 0.412971
-vt 0.953765 0.422999
-vt 0.966820 0.417548
-vt 0.960374 0.426731
-vt 0.966982 0.430464
-vt 0.973670 0.422125
-vt 0.976130 0.409756
-vt 0.976130 0.416185
-vt 0.950816 0.399271
-vt 0.956756 0.396811
-vt 0.963184 0.396811
-vt 0.973670 0.403817
-vt 0.969124 0.399271
-vt 0.434968 0.657391
-vt 0.434808 0.665140
-vt 0.434709 0.672999
-vt 0.355962 0.870669
-vt 0.360328 0.868914
-vt 0.361687 0.870942
-vt 0.356453 0.873123
-vt 0.603136 0.956752
-vt 0.609209 0.956752
-vt 0.610450 0.962744
-vt 0.601992 0.962744
-vt 0.594129 0.959631
-vt 0.597489 0.954516
-vt 0.097688 0.451912
-vt 0.091905 0.451913
-vt 0.091905 0.445841
-vt 0.097687 0.445840
-vt 0.330969 0.828720
-vt 0.330937 0.837298
-vt 0.265750 0.837297
-vt 0.265782 0.828720
-vt 0.265751 0.820142
-vt 0.330938 0.820142
-vt 0.365399 0.856511
-vt 0.367854 0.856020
-vt 0.367854 0.861689
-vt 0.365459 0.861216
-vt 0.593194 0.950222
-vt 0.588149 0.953651
-vt 0.584790 0.945889
-vt 0.590782 0.944648
-vt 0.097691 0.500495
-vt 0.097691 0.506570
-vt 0.091907 0.506569
-vt 0.091907 0.500495
-vt 0.330969 0.811564
-vt 0.265782 0.811564
-vt 0.265751 0.802986
-vt 0.330938 0.802986
-vt 0.363613 0.865544
-vt 0.365696 0.866932
-vt 0.597312 0.928634
-vt 0.593018 0.932929
-vt 0.587903 0.929569
-vt 0.593883 0.923589
-vt 0.601645 0.920229
-vt 0.602886 0.926222
-vt 0.330970 0.794409
-vt 0.265783 0.794409
-vt 0.265751 0.785831
-vt 0.330939 0.785831
-vt 0.618900 0.932752
-vt 0.614605 0.928458
-vt 0.617965 0.923343
-vt 0.623945 0.929323
-vt 0.627304 0.937085
-vt 0.621312 0.938326
-vt 0.097686 0.439768
-vt 0.091904 0.439769
-vt 0.091903 0.433697
-vt 0.097685 0.433696
-vt 0.330970 0.777253
-vt 0.265783 0.777253
-vt 0.265752 0.768675
-vt 0.330939 0.768675
-vt 0.346929 0.868882
-vt 0.351257 0.870728
-vt 0.350784 0.873123
-vt 0.345541 0.870965
-vt 0.590782 0.938575
-vt 0.584790 0.937432
-vt 0.330966 0.897343
-vt 0.330934 0.905920
-vt 0.265748 0.905920
-vt 0.265780 0.897342
-vt 0.265749 0.888764
-vt 0.330935 0.888765
-vt 0.360275 0.848860
-vt 0.361663 0.846777
-vt 0.365672 0.850786
-vt 0.363644 0.852145
-vt 0.608959 0.926222
-vt 0.610102 0.920230
-vt 0.097689 0.457984
-vt 0.091906 0.457985
-vt 0.097691 0.512644
-vt 0.097690 0.518718
-vt 0.091906 0.518718
-vt 0.091906 0.512643
-vt 0.330967 0.880187
-vt 0.265780 0.880186
-vt 0.265749 0.871609
-vt 0.330936 0.871609
-vt 0.614782 0.954340
-vt 0.619076 0.950045
-vt 0.624191 0.953405
-vt 0.618211 0.959385
-vt 0.343591 0.852198
-vt 0.341745 0.856527
-vt 0.339350 0.856053
-vt 0.341508 0.850810
-vt 0.330967 0.863031
-vt 0.265781 0.863031
-vt 0.265750 0.854453
-vt 0.330936 0.854453
-vt 0.351241 0.847074
-vt 0.350750 0.844619
-vt 0.356420 0.844619
-vt 0.355946 0.847014
-vt 0.621312 0.944399
-vt 0.627304 0.945542
-vt 0.097691 0.476202
-vt 0.091907 0.476202
-vt 0.091907 0.470129
-vt 0.097690 0.470129
-vt 0.330968 0.845876
-vt 0.265781 0.845875
-vt 0.097689 0.464056
-vt 0.091907 0.464057
-vt 0.097691 0.482275
-vt 0.091908 0.482275
-vt 0.345517 0.846801
-vt 0.346875 0.848829
-vt 0.097690 0.524792
-vt 0.091905 0.524792
-vt 0.097691 0.488348
-vt 0.091907 0.488348
-vt 0.341805 0.861232
-vt 0.339350 0.861723
-vt 0.097689 0.530867
-vt 0.091905 0.530866
-vt 0.091907 0.494421
-vt 0.097691 0.494422
-vt 0.341532 0.866956
-vt 0.343560 0.865598
-vt 0.355042 0.811516
-vt 0.349926 0.811516
-vt 0.349427 0.809111
-vt 0.355501 0.809111
-vt 0.361147 0.811347
-vt 0.359799 0.813399
-vt 0.339729 0.821923
-vt 0.339729 0.827039
-vt 0.337324 0.827537
-vt 0.337324 0.821464
-vt 0.339560 0.815818
-vt 0.341612 0.817166
-vt 0.359948 0.835204
-vt 0.363565 0.831586
-vt 0.365618 0.832934
-vt 0.361324 0.837229
-vt 0.355750 0.839641
-vt 0.355252 0.837236
-vt 0.350136 0.837236
-vt 0.349677 0.839641
-vt 0.344031 0.837405
-vt 0.345379 0.835353
-vt 0.363417 0.817017
-vt 0.365442 0.815641
-vt 0.367854 0.821215
-vt 0.365449 0.821713
-vt 0.341761 0.831735
-vt 0.339736 0.833111
-vt 0.345230 0.813548
-vt 0.343854 0.811523
-vt 0.365449 0.826829
-vt 0.367854 0.827288
-vt 0.810299 0.955389
-vt 0.831557 0.959792
-vt 0.828198 0.967553
-vt 0.806245 0.934132
-vt 0.814702 0.934132
-vt 0.789042 0.959444
-vt 0.789042 0.950986
-vt 0.361396 0.853651
-vt 0.358922 0.850889
-vt 0.355422 0.849669
-vt 0.831557 0.951334
-vt 0.798382 0.937245
-vt 0.348381 0.851077
-vt 0.345620 0.853551
-vt 0.344399 0.857052
-vt 0.792155 0.967307
-vt 0.814354 0.976646
-vt 0.805897 0.976646
-vt 0.345808 0.864092
-vt 0.348281 0.866853
-vt 0.351782 0.868074
-vt 0.828444 0.943471
-vt 0.792401 0.943225
-vt 0.362805 0.860691
-vt 0.363008 0.856989
-vt 0.822218 0.973533
-vt 0.798136 0.973287
-vt 0.358822 0.866665
-vt 0.361584 0.864192
-vt 0.822464 0.937491
-vt 0.351720 0.849465
-vt 0.355484 0.868277
-vt 0.344196 0.860753
-vt 0.359100 0.862536
-vt 0.356785 0.863624
-vt 0.353602 0.858871
-vt 0.359213 0.859981
-vt 0.360081 0.857575
-vt 0.358354 0.855688
-vt 0.357267 0.853373
-vt 0.354711 0.853260
-vt 0.352305 0.852392
-vt 0.350419 0.854119
-vt 0.348103 0.855206
-vt 0.347990 0.857762
-vt 0.347122 0.860168
-vt 0.348849 0.862054
-vt 0.349937 0.864370
-vt 0.352492 0.864483
-vt 0.354898 0.865351
-vt 0.595143 0.241809
-vt 0.595200 0.260309
-vt 0.576217 0.260583
-vt 0.576027 0.241907
-vt 0.576184 0.218840
-vt 0.595267 0.219087
-vt 0.614024 0.219149
-vt 0.614024 0.241757
-vt 0.614024 0.260227
-vt 0.604250 0.066059
-vt 0.601463 0.091693
-vt 0.588838 0.089658
-vt 0.594489 0.064090
-vt 0.600375 0.042567
-vt 0.607053 0.044992
-vt 0.614034 0.044757
-vt 0.614032 0.066716
-vt 0.614030 0.092385
-vt 0.599029 0.120425
-vt 0.597105 0.152074
-vt 0.579942 0.150651
-vt 0.583875 0.118578
-vt 0.614029 0.121061
-vt 0.614027 0.152576
-vt 0.595791 0.186983
-vt 0.577270 0.186160
-vt 0.614025 0.187274
-vt 0.556425 0.242146
-vt 0.556448 0.218447
-vt 0.556911 0.261155
-vt 0.584859 0.060774
-vt 0.593430 0.040541
-vt 0.576115 0.086196
-vt 0.568417 0.115434
-vt 0.562295 0.148248
-vt 0.558185 0.184777
-vt 0.618668 0.029646
-vt 0.622166 0.025195
-vt 0.627694 0.042569
-vt 0.621015 0.044994
-vt 0.614036 0.026643
-vt 0.951042 0.583989
-vt 0.950466 0.611576
-vt 0.939226 0.605834
-vt 0.940001 0.578968
-vt 0.940146 0.555736
-vt 0.951389 0.559401
-vt 0.944379 0.769685
-vt 0.943922 0.788299
-vt 0.930930 0.790651
-vt 0.931979 0.769083
-vt 0.933342 0.743736
-vt 0.945828 0.746419
-vt 0.951908 0.536892
-vt 0.939992 0.534261
-vt 0.939547 0.511560
-vt 0.951908 0.514508
-vt 0.947478 0.712894
-vt 0.935147 0.708541
-vt 0.936645 0.670457
-vt 0.948493 0.675985
-vt 0.949584 0.642332
-vt 0.938018 0.636484
-vt 0.190693 0.501950
-vt 0.193056 0.525548
-vt 0.182430 0.526070
-vt 0.182572 0.502443
-vt 0.182699 0.481262
-vt 0.188401 0.481772
-vt 0.194949 0.478866
-vt 0.199999 0.499724
-vt 0.204982 0.523370
-vt 0.195135 0.552416
-vt 0.196731 0.582251
-vt 0.182094 0.582583
-vt 0.182270 0.552884
-vt 0.209430 0.550523
-vt 0.212927 0.580888
-vt 0.197650 0.615200
-vt 0.197056 0.643645
-vt 0.181739 0.643481
-vt 0.181901 0.615334
-vt 0.215114 0.614607
-vt 0.214325 0.648756
-vt 0.236834 0.668744
-vt 0.236160 0.687373
-vt 0.217272 0.686502
-vt 0.217855 0.669460
-vt 0.237059 0.645664
-vt 0.211641 0.495055
-vt 0.219530 0.518914
-vt 0.203823 0.475514
-vt 0.226636 0.546710
-vt 0.232309 0.578151
-vt 0.235861 0.613244
-vt 0.179070 0.465010
-vt 0.182818 0.461433
-vt 0.176991 0.481704
-vt 0.170479 0.478720
-vt 0.175520 0.459689
-vt 0.929296 0.530303
-vt 0.929319 0.502410
-vt 0.929054 0.554717
-vt 0.928350 0.578502
-vt 0.927309 0.605263
-vt 0.917145 0.812207
-vt 0.918667 0.789874
-vt 0.929557 0.813016
-vt 0.928119 0.835541
-vt 0.915666 0.834733
-vt 0.926120 0.635895
-vt 0.924773 0.669865
-vt 0.766403 0.073521
-vt 0.750620 0.078401
-vt 0.747408 0.066970
-vt 0.764009 0.061795
-vt 0.781243 0.060025
-vt 0.781243 0.071996
-vt 0.923153 0.707943
-vt 0.921647 0.743031
-vt 0.714321 0.097357
-vt 0.697108 0.083926
-vt 0.705152 0.074735
-vt 0.717374 0.085531
-vt 0.732946 0.086957
-vt 0.732076 0.075427
-vt 0.595369 0.279277
-vt 0.595563 0.298665
-vt 0.577120 0.299016
-vt 0.576627 0.279645
-vt 0.614024 0.279172
-vt 0.614024 0.298603
-vt 0.007324 0.572595
-vt 0.007034 0.606218
-vt 0.026955 0.601245
-vt 0.027140 0.567249
-vt 0.897673 0.804349
-vt 0.898827 0.785761
-vt 0.557692 0.280388
-vt 0.558618 0.299784
-vt 0.942873 0.807079
-vt 0.941684 0.825866
-vt 0.235359 0.706138
-vt 0.216653 0.703858
-vt 0.004451 0.736600
-vt 0.004099 0.755212
-vt 0.023473 0.766362
-vt 0.024184 0.743793
-vt 0.902728 0.710826
-vt 0.901475 0.744110
-vt 0.920227 0.768301
-vt 0.632905 0.241810
-vt 0.652020 0.241908
-vt 0.651830 0.260584
-vt 0.632847 0.260309
-vt 0.632782 0.219088
-vt 0.651864 0.218842
-vt 0.623815 0.066061
-vt 0.633576 0.064093
-vt 0.639223 0.089662
-vt 0.626598 0.091695
-vt 0.629028 0.120427
-vt 0.644182 0.118582
-vt 0.648111 0.150655
-vt 0.630949 0.152076
-vt 0.632259 0.186984
-vt 0.650780 0.186163
-vt 0.671622 0.242148
-vt 0.671135 0.261156
-vt 0.671599 0.218450
-vt 0.127429 0.705558
-vt 0.128052 0.724431
-vt 0.105747 0.725638
-vt 0.104620 0.706645
-vt 0.643206 0.060778
-vt 0.651947 0.086202
-vt 0.634638 0.040545
-vt 0.906131 0.640561
-vt 0.904695 0.674155
-vt 0.659640 0.115440
-vt 0.665759 0.148253
-vt 0.910330 0.532930
-vt 0.910101 0.557538
-vt 0.669865 0.184781
-vt 0.050261 0.514526
-vt 0.039057 0.509890
-vt 0.039206 0.536761
-vt 0.050635 0.542112
-vt 0.007829 0.464917
-vt 0.008447 0.489508
-vt 0.027285 0.486037
-vt 0.026684 0.461639
-vt 0.049760 0.489947
-vt 0.038401 0.486673
-vt 0.049961 0.700356
-vt 0.037544 0.700176
-vt 0.037230 0.721773
-vt 0.050138 0.718980
-vt 0.050615 0.677048
-vt 0.038042 0.674792
-vt 0.049502 0.467441
-vt 0.037507 0.465224
-vt 0.048729 0.445079
-vt 0.036279 0.442561
-vt 0.051120 0.643479
-vt 0.038645 0.639548
-vt 0.234538 0.724972
-vt 0.214066 0.723869
-vt 0.050873 0.606551
-vt 0.038841 0.601431
-vt 0.050810 0.572878
-vt 0.039050 0.567431
-vt 0.006319 0.642938
-vt 0.006199 0.676252
-vt 0.026327 0.674485
-vt 0.026636 0.639360
-vt 0.909026 0.582590
-vt 0.174457 0.501853
-vt 0.171812 0.525421
-vt 0.159912 0.523100
-vt 0.165178 0.499516
-vt 0.169411 0.552263
-vt 0.167461 0.582077
-vt 0.151281 0.580522
-vt 0.155139 0.550199
-vt 0.166153 0.615014
-vt 0.166409 0.643460
-vt 0.149088 0.648372
-vt 0.148696 0.614216
-vt 0.126355 0.668113
-vt 0.145333 0.669037
-vt 0.145744 0.686085
-vt 0.126828 0.686761
-vt 0.126389 0.645023
-vt 0.153593 0.494706
-vt 0.145417 0.518469
-vt 0.907523 0.609934
-vt 0.161645 0.475261
-vt 0.137979 0.546180
-vt 0.131930 0.577555
-vt 0.127963 0.612610
-vt 0.609402 0.029645
-vt 0.605905 0.025194
-vt 0.146178 0.703470
-vt 0.148575 0.723540
-vt 0.900522 0.767266
-vt 0.025745 0.433773
-vt 0.007525 0.439552
-vt 0.258124 0.707470
-vt 0.256792 0.726419
-vt 0.006035 0.699432
-vt 0.025769 0.699795
-vt 0.027399 0.509825
-vt 0.027279 0.536599
-vt 0.036620 0.744179
-vt 0.024944 0.721415
-vt 0.035950 0.766747
-vt 0.796084 0.073520
-vt 0.798477 0.061793
-vt 0.815080 0.066968
-vt 0.811869 0.078401
-vt 0.848176 0.097357
-vt 0.845121 0.085528
-vt 0.857344 0.074728
-vt 0.865392 0.083920
-vt 0.008234 0.514573
-vt 0.007668 0.541944
-vt 0.829546 0.086956
-vt 0.830414 0.075425
-vt 0.632678 0.279278
-vt 0.651420 0.279645
-vt 0.650927 0.299016
-vt 0.632484 0.298665
-vt 0.670354 0.280389
-vt 0.669428 0.299784
-vt 0.049730 0.737790
-vt 0.049181 0.756611
-vt 0.004971 0.717979
-vt 0.896688 0.822932
-vt 0.186523 0.465055
-vt 0.190136 0.459777
-vt 0.627511 0.026445
-vt 0.910902 0.507559
-vt 0.600561 0.026443
-vt 0.168833 0.460284
-vt 0.196816 0.460452
-vt 0.356508 0.878102
-vt 0.361694 0.880155
-vt 0.358427 0.885130
-vt 0.355396 0.883930
-vt 0.352137 0.883930
-vt 0.350930 0.878102
-vt 0.735463 0.815259
-vt 0.735367 0.811743
-vt 0.762172 0.811751
-vt 0.762350 0.815260
-vt 0.365638 0.884099
-vt 0.367854 0.889218
-vt 0.362025 0.890425
-vt 0.360731 0.887434
-vt 0.762899 0.818791
-vt 0.735562 0.818786
-vt 0.367853 0.894796
-vt 0.365800 0.899982
-vt 0.360825 0.896714
-vt 0.362025 0.893684
-vt 0.735897 0.829913
-vt 0.766674 0.830018
-vt 0.768185 0.834103
-vt 0.736026 0.833947
-vt 0.691883 0.748465
-vt 0.711024 0.769126
-vt 0.689120 0.796235
-vt 0.670643 0.771852
-vt 0.705133 0.718480
-vt 0.725770 0.734546
-vt 0.685391 0.631928
-vt 0.664511 0.610555
-vt 0.690032 0.618037
-vt 0.710935 0.636289
-vt 0.643975 0.784714
-vt 0.662938 0.811701
-vt 0.636369 0.811701
-vt 0.614157 0.792186
-vt 0.367847 0.587001
-vt 0.367847 0.601413
-vt 0.357015 0.601413
-vt 0.357015 0.587001
-vt 0.707993 0.686076
-vt 0.701052 0.655923
-vt 0.725069 0.662943
-vt 0.730389 0.697300
-vt 0.746007 0.578845
-vt 0.749266 0.578845
-vt 0.749265 0.601209
-vt 0.746006 0.601209
-vt 0.742747 0.601209
-vt 0.742748 0.578845
-vt 0.721980 0.420557
-vt 0.741189 0.412375
-vt 0.751644 0.438007
-vt 0.731987 0.449323
-vt 0.726453 0.578845
-vt 0.729712 0.578845
-vt 0.729712 0.601209
-vt 0.726453 0.601209
-vt 0.723194 0.601209
-vt 0.723194 0.578845
-vt 0.713417 0.578844
-vt 0.716676 0.578844
-vt 0.716676 0.601209
-vt 0.713417 0.601209
-vt 0.710158 0.601209
-vt 0.710158 0.578844
-vt 0.700381 0.578844
-vt 0.703640 0.578844
-vt 0.703640 0.601209
-vt 0.700381 0.601209
-vt 0.697122 0.601209
-vt 0.697122 0.578845
-vt 0.750815 0.470683
-vt 0.771206 0.457249
-vt 0.802585 0.472754
-vt 0.774443 0.488347
-vt 0.719935 0.578844
-vt 0.719935 0.601209
-vt 0.619982 0.731423
-vt 0.615725 0.716103
-vt 0.629090 0.711152
-vt 0.637544 0.725347
-vt 0.646823 0.740612
-vt 0.622780 0.749423
-vt 0.596841 0.748597
-vt 0.601213 0.730806
-vt 0.604120 0.719269
-vt 0.651016 0.712811
-vt 0.639812 0.701930
-vt 0.648030 0.693529
-vt 0.659153 0.696482
-vt 0.676092 0.700888
-vt 0.665292 0.723411
-vt 0.660138 0.678370
-vt 0.645127 0.682169
-vt 0.640548 0.668915
-vt 0.654798 0.661081
-vt 0.670085 0.652800
-vt 0.677508 0.676212
-vt 0.643050 0.647151
-vt 0.631684 0.657946
-vt 0.623439 0.649331
-vt 0.626897 0.638050
-vt 0.632430 0.620716
-vt 0.654461 0.633558
-vt 0.608178 0.636398
-vt 0.611742 0.652012
-vt 0.598761 0.654885
-vt 0.591159 0.639841
-vt 0.582839 0.622975
-vt 0.606438 0.618022
-vt 0.562508 0.679641
-vt 0.564139 0.670436
-vt 0.580513 0.674997
-vt 0.578272 0.682279
-vt 0.574023 0.688327
-vt 0.562720 0.689357
-vt 0.543715 0.691246
-vt 0.543521 0.677921
-vt 0.545839 0.665331
-vt 0.632958 0.689463
-vt 0.621170 0.697594
-vt 0.611209 0.683508
-vt 0.626936 0.676508
-vt 0.618938 0.664563
-vt 0.605926 0.668260
-vt 0.608125 0.703790
-vt 0.598830 0.693892
-vt 0.595429 0.710876
-vt 0.585761 0.701675
-vt 0.584245 0.722442
-vt 0.573173 0.737276
-vt 0.555553 0.720757
-vt 0.571437 0.710635
-vt 0.357016 0.573112
-vt 0.367848 0.573112
-vt 0.705347 0.883202
-vt 0.705331 0.895891
-vt 0.680398 0.895857
-vt 0.680414 0.883171
-vt 0.680426 0.869264
-vt 0.705364 0.869291
-vt 0.730300 0.869322
-vt 0.730283 0.883232
-vt 0.730268 0.895922
-vt 0.535917 0.677517
-vt 0.538560 0.663300
-vt 0.891709 0.394961
-vt 0.890018 0.409936
-vt 0.882774 0.408743
-vt 0.883726 0.395400
-vt 0.881770 0.381182
-vt 0.889633 0.378736
-vt 0.066158 0.459928
-vt 0.062788 0.433701
-vt 0.073621 0.433696
-vt 0.076991 0.459924
-vt 0.077001 0.488426
-vt 0.066169 0.488430
-vt 0.066181 0.521106
-vt 0.077013 0.521102
-vt 0.077024 0.556246
-vt 0.066192 0.556249
-vt 0.066199 0.591391
-vt 0.077031 0.591389
-vt 0.077034 0.624063
-vt 0.066203 0.624064
-vt 0.066203 0.652561
-vt 0.077034 0.652561
-vt 0.073674 0.677196
-vt 0.062843 0.677196
-vt 0.607256 0.609703
-vt 0.636906 0.609007
-vt 0.773382 0.319912
-vt 0.791301 0.325960
-vt 0.767803 0.338415
-vt 0.749890 0.334901
-vt 0.580362 0.615296
-vt 0.682759 0.651664
-vt 0.666025 0.629966
-vt 0.690678 0.678294
-vt 0.688997 0.706673
-vt 0.367847 0.616996
-vt 0.357015 0.616996
-vt 0.536102 0.692593
-vt 0.629841 0.763575
-vt 0.593258 0.765836
-vt 0.656421 0.753010
-vt 0.850461 0.331832
-vt 0.871646 0.347060
-vt 0.866456 0.352884
-vt 0.847877 0.339388
-vt 0.824469 0.331241
-vt 0.825224 0.319243
-vt 0.543660 0.649769
-vt 0.550374 0.653361
-vt 0.562839 0.625005
-vt 0.567387 0.631524
-vt 0.551625 0.636971
-vt 0.557438 0.642065
-vt 0.732971 0.578845
-vt 0.736230 0.578845
-vt 0.736229 0.601209
-vt 0.732971 0.601209
-vt 0.367848 0.635895
-vt 0.357016 0.635895
-vt 0.354420 0.432574
-vt 0.364496 0.456713
-vt 0.353664 0.456712
-vt 0.343587 0.432574
-vt 0.706899 0.578844
-vt 0.706899 0.601209
-vt 0.071260 0.814372
-vt 0.069698 0.822564
-vt 0.066668 0.821364
-vt 0.072957 0.822564
-vt 0.739489 0.578845
-vt 0.739489 0.601209
-vt 0.064363 0.819060
-vt 0.063069 0.816069
-vt 0.735661 0.855189
-vt 0.735860 0.851078
-vt 0.768314 0.851275
-vt 0.767094 0.855383
-vt 0.736162 0.838161
-vt 0.769297 0.838353
-vt 0.769737 0.842696
-vt 0.736304 0.842502
-vt 0.735777 0.826066
-vt 0.765126 0.826122
-vt 0.063069 0.812810
-vt 0.064269 0.809780
-vt 0.735478 0.808230
-vt 0.735591 0.804702
-vt 0.762921 0.804706
-vt 0.762406 0.808236
-vt 0.735711 0.801121
-vt 0.763731 0.801124
-vt 0.066573 0.807475
-vt 0.069564 0.806181
-vt 0.072823 0.806181
-vt 0.075853 0.807381
-vt 0.078158 0.809685
-vt 0.079452 0.812676
-vt 0.973202 0.899362
-vt 0.969867 0.894455
-vt 0.972172 0.892151
-vt 0.977147 0.895418
-vt 0.765814 0.859349
-vt 0.735483 0.859158
-vt 0.951161 0.884883
-vt 0.956989 0.885995
-vt 0.956989 0.889254
-vt 0.951160 0.890461
-vt 0.079452 0.815935
-vt 0.078252 0.818965
-vt 0.962506 0.901577
-vt 0.963617 0.895749
-vt 0.966876 0.895749
-vt 0.968083 0.901578
-vt 0.075948 0.821270
-vt 0.979200 0.890232
-vt 0.973372 0.889120
-vt 0.973372 0.885861
-vt 0.979200 0.884654
-vt 0.960493 0.913679
-vt 0.958188 0.915983
-vt 0.953214 0.912715
-vt 0.957158 0.908772
-vt 0.962277 0.906556
-vt 0.963484 0.912384
-vt 0.345490 0.787838
-vt 0.367854 0.787838
-vt 0.367854 0.791097
-vt 0.345490 0.791097
-vt 0.967854 0.873538
-vt 0.966743 0.879366
-vt 0.963484 0.879366
-vt 0.962277 0.873538
-vt 0.765409 0.764585
-vt 0.765409 0.770163
-vt 0.735368 0.770162
-vt 0.735368 0.764585
-vt 0.735368 0.759007
-vt 0.765409 0.759007
-vt 0.963617 0.928767
-vt 0.966876 0.928767
-vt 0.968083 0.934596
-vt 0.962506 0.934595
-vt 0.957320 0.932542
-vt 0.960587 0.927568
-vt 0.345490 0.781320
-vt 0.345490 0.778061
-vt 0.367853 0.778061
-vt 0.367854 0.781320
-vt 0.765409 0.753429
-vt 0.735368 0.753429
-vt 0.735368 0.747852
-vt 0.765409 0.747852
-vt 0.972077 0.915888
-vt 0.969773 0.913584
-vt 0.973040 0.908609
-vt 0.976984 0.912553
-vt 0.979200 0.917672
-vt 0.973372 0.918879
-vt 0.345490 0.768284
-vt 0.345489 0.765025
-vt 0.367854 0.765025
-vt 0.367854 0.768284
-vt 0.345489 0.755248
-vt 0.345489 0.751989
-vt 0.367854 0.751989
-vt 0.367854 0.755248
-vt 0.765409 0.742274
-vt 0.735368 0.742274
-vt 0.735368 0.736696
-vt 0.765409 0.736696
-vt 0.969867 0.927473
-vt 0.972172 0.925168
-vt 0.977147 0.928436
-vt 0.973202 0.932380
-vt 0.345490 0.800874
-vt 0.345490 0.797615
-vt 0.367854 0.797615
-vt 0.367854 0.800874
-vt 0.765409 0.731119
-vt 0.735368 0.731119
-vt 0.735367 0.725541
-vt 0.765409 0.725541
-vt 0.958283 0.925263
-vt 0.953376 0.928598
-vt 0.951160 0.923479
-vt 0.956989 0.922272
-vt 0.367854 0.804133
-vt 0.345490 0.804133
-vt 0.345489 0.761766
-vt 0.367854 0.761766
-vt 0.765409 0.719963
-vt 0.735367 0.719963
-vt 0.735367 0.714385
-vt 0.765409 0.714385
-vt 0.956989 0.919013
-vt 0.951161 0.917901
-vt 0.345489 0.784579
-vt 0.367854 0.784579
-vt 0.765409 0.708808
-vt 0.735367 0.708808
-vt 0.735367 0.703230
-vt 0.765409 0.703230
-vt 0.966743 0.912384
-vt 0.967854 0.906556
-vt 0.345490 0.794356
-vt 0.367854 0.794356
-vt 0.765409 0.786896
-vt 0.765409 0.792474
-vt 0.735367 0.792473
-vt 0.735367 0.786896
-vt 0.735367 0.781318
-vt 0.765409 0.781318
-vt 0.973372 0.922138
-vt 0.979200 0.923250
-vt 0.345489 0.758507
-vt 0.367854 0.758507
-vt 0.765409 0.775740
-vt 0.735367 0.775740
-vt 0.367853 0.771543
-vt 0.345490 0.771543
-vt 0.953376 0.895580
-vt 0.958283 0.892245
-vt 0.345490 0.774802
-vt 0.367853 0.774802
-vt 0.957319 0.899524
-vt 0.960587 0.894549
-vt 0.957158 0.875753
-vt 0.960493 0.880661
-vt 0.973040 0.875591
-vt 0.969773 0.880566
-vt 0.976984 0.879535
-vt 0.972077 0.882870
-vt 0.953214 0.879697
-vt 0.958188 0.882965
-vt 0.071260 0.793011
-vt 0.072823 0.784819
-vt 0.075853 0.786019
-vt 0.069564 0.784819
-vt 0.078158 0.788323
-vt 0.079452 0.791314
-vt 0.079452 0.794573
-vt 0.078252 0.797603
-vt 0.075948 0.799908
-vt 0.072957 0.801202
-vt 0.069698 0.801202
-vt 0.066668 0.800003
-vt 0.064363 0.797698
-vt 0.063069 0.794707
-vt 0.063069 0.791448
-vt 0.064269 0.788418
-vt 0.066573 0.786114
-vt 0.585279 0.902962
-vt 0.584938 0.896332
-vt 0.592905 0.896926
-vt 0.593579 0.900067
-vt 0.610342 0.909625
-vt 0.601797 0.909938
-vt 0.601560 0.905137
-vt 0.604949 0.904484
-vt 0.595414 0.902747
-vt 0.587738 0.907666
-vt 0.585275 0.888497
-vt 0.593573 0.893785
-vt 0.619928 0.888540
-vt 0.620277 0.896329
-vt 0.610569 0.896919
-vt 0.609840 0.893792
-vt 0.593779 0.879391
-vt 0.601795 0.879090
-vt 0.601554 0.888688
-vt 0.598217 0.889333
-vt 0.607879 0.902722
-vt 0.617197 0.907628
-vt 0.607887 0.891108
-vt 0.617215 0.882017
-vt 0.593790 0.909646
-vt 0.598229 0.904501
-vt 0.655460 0.906047
-vt 0.655422 0.915070
-vt 0.632530 0.914928
-vt 0.633499 0.905216
-vt 0.633626 0.895919
-vt 0.655492 0.895816
-vt 0.680381 0.906102
-vt 0.680364 0.915127
-vt 0.705318 0.906138
-vt 0.705306 0.915164
-vt 0.730256 0.906169
-vt 0.730245 0.915195
-vt 0.755194 0.906197
-vt 0.755184 0.915223
-vt 0.755206 0.895951
-vt 0.780142 0.895979
-vt 0.780130 0.906226
-vt 0.780120 0.915251
-vt 0.398621 0.906188
-vt 0.398631 0.915224
-vt 0.373665 0.915251
-vt 0.373655 0.906215
-vt 0.373644 0.895957
-vt 0.398609 0.895930
-vt 0.423574 0.895902
-vt 0.423586 0.906160
-vt 0.423596 0.915196
-vt 0.448551 0.906132
-vt 0.448562 0.915167
-vt 0.448538 0.895874
-vt 0.473497 0.895844
-vt 0.473512 0.906099
-vt 0.473529 0.915133
-vt 0.498458 0.906047
-vt 0.498495 0.915078
-vt 0.498427 0.895807
-vt 0.520312 0.895913
-vt 0.520439 0.905218
-vt 0.521408 0.914937
-vt 0.568684 0.902962
-vt 0.560382 0.900066
-vt 0.561056 0.896925
-vt 0.569025 0.896331
-vt 0.576982 0.896034
-vt 0.576981 0.904419
-vt 0.576982 0.914870
-vt 0.566225 0.907667
-vt 0.558546 0.902748
-vt 0.560172 0.909649
-vt 0.564675 0.914838
-vt 0.551921 0.914799
-vt 0.552162 0.909942
-vt 0.552399 0.905138
-vt 0.555731 0.904503
-vt 0.543612 0.909630
-vt 0.538127 0.914811
-vt 0.536753 0.907632
-vt 0.546076 0.902723
-vt 0.549008 0.904486
-vt 0.869899 0.445442
-vt 0.854935 0.455073
-vt 0.852084 0.448279
-vt 0.865421 0.439833
-vt 0.874218 0.429621
-vt 0.879560 0.434003
-vt 0.830939 0.463150
-vt 0.805889 0.456306
-vt 0.830706 0.455304
-vt 0.534036 0.902909
-vt 0.533672 0.896325
-vt 0.543385 0.896917
-vt 0.544121 0.900047
-vt 0.619912 0.902908
-vt 0.609833 0.900047
-vt 0.595401 0.891098
-vt 0.587732 0.881987
-vt 0.610354 0.879405
-vt 0.604950 0.889341
-vt 0.565026 0.699616
-vt 0.579711 0.693619
-vt 0.546766 0.705423
-vt 0.345811 0.880317
-vt 0.349146 0.885224
-vt 0.346842 0.887529
-vt 0.341867 0.884261
-vt 0.339814 0.889447
-vt 0.345642 0.890559
-vt 0.345642 0.893818
-vt 0.339814 0.895025
-vt 0.736076 0.846836
-vt 0.769246 0.847033
-vt 0.342029 0.900144
-vt 0.346937 0.896809
-vt 0.349241 0.899113
-vt 0.345973 0.904088
-vt 0.735842 0.797452
-vt 0.764767 0.797452
-vt 0.351159 0.906141
-vt 0.352271 0.900313
-vt 0.355530 0.900313
-vt 0.356737 0.906141
-vt 0.735666 0.822371
-vt 0.763846 0.822394
-vt 0.361856 0.903926
-vt 0.358521 0.899019
-vt 0.969725 0.471750
-vt 0.968878 0.475425
-vt 0.940809 0.475298
-vt 0.940948 0.471622
-vt 0.941100 0.467854
-vt 0.970807 0.467984
-vt 0.958283 0.859227
-vt 0.953375 0.862562
-vt 0.951160 0.857443
-vt 0.956989 0.856236
-vt 0.972052 0.464098
-vt 0.941267 0.463966
-vt 0.941453 0.459940
-vt 0.973240 0.460072
-vt 0.969867 0.861437
-vt 0.972172 0.859132
-vt 0.977147 0.862400
-vt 0.973202 0.866344
-vt 0.974144 0.455915
-vt 0.941657 0.455785
-vt 0.941873 0.451539
-vt 0.974617 0.451666
-vt 0.973372 0.856102
-vt 0.979200 0.857214
-vt 0.974179 0.447413
-vt 0.941725 0.447288
-vt 0.941584 0.443161
-vt 0.973082 0.443253
-vt 0.972077 0.849852
-vt 0.976984 0.846517
-vt 0.979200 0.851636
-vt 0.973372 0.852843
-vt 0.971594 0.439255
-vt 0.941450 0.439210
-vt 0.941325 0.435442
-vt 0.970070 0.435443
-vt 0.969773 0.847548
-vt 0.973040 0.842573
-vt 0.969748 0.493597
-vt 0.971047 0.497431
-vt 0.940904 0.497241
-vt 0.940806 0.493446
-vt 0.940716 0.489763
-vt 0.968792 0.489891
-vt 0.960493 0.847643
-vt 0.957158 0.842735
-vt 0.962277 0.840520
-vt 0.963484 0.846348
-vt 0.968244 0.486262
-vt 0.940630 0.486141
-vt 0.940547 0.482529
-vt 0.968077 0.482657
-vt 0.966743 0.846348
-vt 0.967854 0.840520
-vt 0.968333 0.479049
-vt 0.940677 0.478922
-vt 0.958188 0.849947
-vt 0.953214 0.846679
-vt 0.589515 0.686867
-vt 0.594604 0.678913
-vt 0.567505 0.661715
-vt 0.582355 0.667605
-vt 0.572710 0.653515
-vt 0.581844 0.660237
-vt 0.956989 0.852977
-vt 0.951161 0.851865
-vt 0.589289 0.914836
-vt 0.960587 0.861531
-vt 0.957319 0.866506
-vt 0.602039 0.914793
-vt 0.615825 0.914802
-vt 0.676943 0.732802
-vt 0.367848 0.559222
-vt 0.357016 0.559222
-vt 0.367854 0.484464
-vt 0.357021 0.484463
-vt 0.963617 0.862731
-vt 0.962505 0.868559
-vt 0.579987 0.645937
-vt 0.589439 0.658650
-vt 0.655500 0.883148
-vt 0.633539 0.884507
-vt 0.632591 0.869304
-vt 0.655488 0.869251
-vt 0.755220 0.883262
-vt 0.755237 0.869352
-vt 0.780173 0.869381
-vt 0.780157 0.883291
-vt 0.398595 0.883226
-vt 0.373630 0.883253
-vt 0.373615 0.869327
-vt 0.398580 0.869300
-vt 0.423545 0.869273
-vt 0.423560 0.883199
-vt 0.448524 0.883171
-vt 0.448510 0.869246
-vt 0.473475 0.869223
-vt 0.473483 0.883145
-vt 0.498422 0.883127
-vt 0.498437 0.869217
-vt 0.521355 0.869277
-vt 0.520402 0.884492
-vt 0.568689 0.888496
-vt 0.576983 0.885842
-vt 0.560389 0.893783
-vt 0.558560 0.891094
-vt 0.566234 0.881983
-vt 0.576986 0.869343
-vt 0.560186 0.879385
-vt 0.552168 0.879081
-vt 0.551928 0.869376
-vt 0.564692 0.869362
-vt 0.555744 0.889329
-vt 0.552406 0.888683
-vt 0.543604 0.879393
-vt 0.536738 0.882005
-vt 0.538114 0.869365
-vt 0.549008 0.889335
-vt 0.546069 0.891103
-vt 0.534022 0.888531
-vt 0.544115 0.893788
-vt 0.966876 0.862731
-vt 0.968083 0.868559
-vt 0.589279 0.869368
-vt 0.602039 0.869390
-vt 0.615845 0.869385
-vt 0.721681 0.388858
-vt 0.740538 0.384649
-vt 0.569530 0.744814
-vt 0.549444 0.726039
-vt 0.367850 0.529226
-vt 0.357018 0.529225
-vt 0.357019 0.510324
-vt 0.367852 0.510325
-vt 0.800104 0.333791
-vt 0.778590 0.344478
-vt 0.357017 0.544809
-vt 0.367849 0.544810
-vt 0.750202 0.358870
-vt 0.762726 0.362247
-vt 0.754190 0.384536
-vt 0.731772 0.358945
-vt 0.886039 0.422574
-vt 0.879863 0.419736
-vt 0.755075 0.408537
-vt 0.764810 0.430719
-vt 0.539494 0.708642
-vt 0.354416 0.721240
-vt 0.343586 0.721241
-vt 0.353661 0.691397
-vt 0.364492 0.691396
-vt 0.782761 0.447360
-vt 0.883602 0.362476
-vt 0.876649 0.366634
-vt 0.748977 0.313514
-vt 0.774873 0.305766
-vt 0.800420 0.309491
-vt 0.725725 0.331591
-vt 0.707420 0.360164
-vt 0.697122 0.395216
-vt 0.697122 0.431673
-vt 0.706437 0.464042
-vt 0.723930 0.487555
-vt 0.747523 0.497431
-vt 0.367849 0.661753
-vt 0.357018 0.661754
-vt 0.333510 0.409213
-vt 0.344343 0.409214
-vt 0.344341 0.747010
-vt 0.333510 0.747010
-vt 0.594343 0.669479
-vt 0.488054 0.064568
-vt 0.519531 0.070623
-vt 0.514182 0.114600
-vt 0.482266 0.111528
-vt 0.453203 0.109265
-vt 0.458011 0.059500
-vt 0.465187 0.002489
-vt 0.499742 0.016083
-vt 0.530938 0.027700
-vt 0.479651 0.157721
-vt 0.510751 0.158900
-vt 0.510836 0.203362
-vt 0.478966 0.203362
-vt 0.450650 0.203362
-vt 0.451510 0.156808
-vt 0.424670 0.250499
-vt 0.451510 0.249915
-vt 0.453203 0.297459
-vt 0.425445 0.298793
-vt 0.398344 0.299146
-vt 0.398344 0.250729
-vt 0.398344 0.203362
-vt 0.424076 0.203362
-vt 0.479651 0.249002
-vt 0.510751 0.247823
-vt 0.514182 0.292123
-vt 0.482266 0.295196
-vt 0.428123 0.350235
-vt 0.458011 0.347223
-vt 0.465187 0.404234
-vt 0.429598 0.399126
-vt 0.398343 0.400611
-vt 0.398343 0.351542
-vt 0.488054 0.342156
-vt 0.519531 0.336100
-vt 0.530938 0.379023
-vt 0.499742 0.390640
-vt 0.033699 0.803371
-vt 0.018929 0.777837
-vt 0.030877 0.771803
-vt 0.046296 0.799200
-vt 0.057809 0.839861
-vt 0.044926 0.840969
-vt 0.219016 0.079282
-vt 0.249873 0.085020
-vt 0.244872 0.128130
-vt 0.213443 0.125365
-vt 0.188373 0.123840
-vt 0.192895 0.076990
-vt 0.194808 0.022649
-vt 0.230136 0.031711
-vt 0.260769 0.042882
-vt 0.915309 0.269219
-vt 0.926535 0.231621
-vt 0.939419 0.232729
-vt 0.927906 0.273391
-vt 0.912488 0.300788
-vt 0.900539 0.294754
-vt 0.211441 0.170762
-vt 0.242073 0.171714
-vt 0.242380 0.215952
-vt 0.210799 0.215926
-vt 0.185977 0.215919
-vt 0.186691 0.169965
-vt 0.912794 0.018771
-vt 0.899853 0.017526
-vt 0.899853 0.004061
-vt 0.914015 0.005362
-vt 0.929335 0.007740
-vt 0.927011 0.020923
-vt 0.211376 0.261049
-vt 0.241979 0.260176
-vt 0.244639 0.303737
-vt 0.213241 0.306393
-vt 0.188211 0.307839
-vt 0.186672 0.261791
-vt 0.921467 0.185661
-vt 0.900539 0.141347
-vt 0.910615 0.133832
-vt 0.933587 0.182476
-vt 0.218644 0.352409
-vt 0.249455 0.346809
-vt 0.260131 0.388880
-vt 0.229526 0.399880
-vt 0.194257 0.408731
-vt 0.192591 0.354601
-vt 0.344521 0.943738
-vt 0.375806 0.943737
-vt 0.375807 0.951113
-vt 0.344522 0.951115
-vt 0.313234 0.951116
-vt 0.313234 0.943739
-vt 0.730102 0.246574
-vt 0.752232 0.268704
-vt 0.740702 0.286256
-vt 0.712788 0.258342
-vt 0.717672 0.186558
-vt 0.717673 0.217853
-vt 0.697108 0.222112
-vt 0.697108 0.182635
-vt 0.156732 0.943748
-vt 0.188044 0.943744
-vt 0.188045 0.951126
-vt 0.156733 0.951131
-vt 0.125419 0.951137
-vt 0.125418 0.943754
-vt 0.281944 0.943740
-vt 0.281944 0.951118
-vt 0.250649 0.951119
-vt 0.250649 0.943740
-vt 0.841347 0.267794
-vt 0.853114 0.285108
-vt 0.816885 0.300788
-vt 0.812626 0.280223
-vt 0.751322 0.135330
-vt 0.729192 0.157459
-vt 0.711640 0.145930
-vt 0.739554 0.118015
-vt 0.781330 0.280223
-vt 0.777408 0.300788
-vt 0.532232 0.943762
-vt 0.563519 0.943772
-vt 0.563517 0.951149
-vt 0.532230 0.951139
-vt 0.500943 0.951129
-vt 0.500946 0.943752
-vt 0.407090 0.943736
-vt 0.438373 0.943737
-vt 0.438372 0.951113
-vt 0.407090 0.951111
-vt 0.304891 0.635723
-vt 0.317875 0.635674
-vt 0.318052 0.682137
-vt 0.304937 0.682303
-vt 0.279417 0.635723
-vt 0.266432 0.635675
-vt 0.266309 0.586460
-vt 0.279405 0.586460
-vt 0.219349 0.943741
-vt 0.219350 0.951121
-vt 0.094103 0.943760
-vt 0.094104 0.951143
-vt 0.062789 0.951149
-vt 0.062788 0.943765
-vt 0.874996 0.216566
-vt 0.895560 0.220488
-vt 0.881029 0.257194
-vt 0.863476 0.245664
-vt 0.304902 0.586460
-vt 0.317998 0.586460
-vt 0.469659 0.943743
-vt 0.469657 0.951120
-vt 0.862566 0.156549
-vt 0.840437 0.134420
-vt 0.851966 0.116867
-vt 0.879881 0.144781
-vt 0.305218 0.450420
-vt 0.292155 0.450208
-vt 0.292156 0.409213
-vt 0.305565 0.409791
-vt 0.279092 0.450419
-vt 0.265748 0.450832
-vt 0.268691 0.420643
-vt 0.278747 0.409790
-vt 0.304891 0.537195
-vt 0.304937 0.490613
-vt 0.318054 0.490778
-vt 0.317876 0.537244
-vt 0.279416 0.537195
-vt 0.266431 0.537243
-vt 0.266254 0.490777
-vt 0.279371 0.490613
-vt 0.895560 0.181011
-vt 0.874996 0.185270
-vt 0.811338 0.122900
-vt 0.780043 0.122900
-vt 0.775784 0.102336
-vt 0.815261 0.102336
-vt 0.279372 0.682303
-vt 0.266256 0.682138
-vt 0.279093 0.722494
-vt 0.278748 0.763118
-vt 0.268694 0.752266
-vt 0.265751 0.722081
-vt 0.305217 0.722493
-vt 0.318560 0.722080
-vt 0.315618 0.752265
-vt 0.305564 0.763118
-vt 0.318561 0.450833
-vt 0.153911 0.401369
-vt 0.131754 0.402360
-vt 0.131601 0.386988
-vt 0.145721 0.386193
-vt 0.156184 0.374777
-vt 0.170751 0.387374
-vt 0.163361 0.426198
-vt 0.131982 0.428717
-vt 0.154231 0.029932
-vt 0.171144 0.044037
-vt 0.156507 0.056657
-vt 0.146015 0.045139
-vt 0.131919 0.044315
-vt 0.131974 0.028970
-vt 0.132115 0.002489
-vt 0.163739 0.004974
-vt 0.173847 0.080623
-vt 0.170806 0.124044
-vt 0.156521 0.125022
-vt 0.158389 0.086767
-vt 0.169655 0.169579
-vt 0.169073 0.215927
-vt 0.155362 0.215945
-vt 0.155783 0.169362
-vt 0.169687 0.262141
-vt 0.170670 0.307585
-vt 0.156404 0.306573
-vt 0.155875 0.262327
-vt 0.173622 0.350922
-vt 0.158249 0.344742
-vt 0.292154 0.490512
-vt 0.292154 0.586460
-vt 0.292154 0.537171
-vt 0.292154 0.682404
-vt 0.292154 0.635747
-vt 0.292155 0.722705
-vt 0.039857 0.886928
-vt 0.051977 0.890114
-vt 0.029004 0.938757
-vt 0.018929 0.931242
-vt 0.314429 0.913051
-vt 0.328647 0.910899
-vt 0.330970 0.924081
-vt 0.315650 0.926460
-vt 0.301488 0.927760
-vt 0.301488 0.914296
-vt 0.292156 0.763696
-vt 0.428123 0.056489
-vt 0.429598 0.007597
-vt 0.425445 0.107930
-vt 0.398344 0.107578
-vt 0.398343 0.055181
-vt 0.398343 0.006112
-vt 0.424670 0.156225
-vt 0.398344 0.155994
-vt 0.315620 0.420645
-vt 0.308632 0.064569
-vt 0.314422 0.111529
-vt 0.282506 0.114602
-vt 0.277156 0.070626
-vt 0.265748 0.027703
-vt 0.296944 0.016085
-vt 0.331498 0.002491
-vt 0.338675 0.059501
-vt 0.343485 0.109265
-vt 0.317037 0.157722
-vt 0.317723 0.203362
-vt 0.285854 0.203363
-vt 0.285938 0.158902
-vt 0.345178 0.156809
-vt 0.346039 0.203362
-vt 0.372019 0.250499
-vt 0.371243 0.298793
-vt 0.343485 0.297458
-vt 0.345179 0.249915
-vt 0.372613 0.203362
-vt 0.317038 0.249002
-vt 0.314423 0.295194
-vt 0.282508 0.292122
-vt 0.285939 0.247823
-vt 0.368564 0.350234
-vt 0.367088 0.399125
-vt 0.331499 0.404232
-vt 0.338676 0.347222
-vt 0.308633 0.342154
-vt 0.296945 0.390638
-vt 0.265749 0.379020
-vt 0.277158 0.336098
-vt 0.920798 0.362045
-vt 0.908201 0.357873
-vt 0.923620 0.330476
-vt 0.935568 0.336510
-vt 0.909572 0.399643
-vt 0.896688 0.398535
-vt 0.044192 0.078642
-vt 0.049472 0.125022
-vt 0.017869 0.127614
-vt 0.013117 0.084187
-vt 0.002491 0.041692
-vt 0.033417 0.030703
-vt 0.069067 0.021924
-vt 0.070453 0.076540
-vt 0.074631 0.123670
-vt 0.110581 0.866783
-vt 0.097984 0.870955
-vt 0.086470 0.830294
-vt 0.099354 0.829186
-vt 0.125352 0.892317
-vt 0.113404 0.898352
-vt 0.051251 0.170552
-vt 0.051817 0.215802
-vt 0.020118 0.215799
-vt 0.020518 0.171411
-vt 0.076036 0.169842
-vt 0.076704 0.215794
-vt 0.886911 0.018771
-vt 0.872694 0.020922
-vt 0.870370 0.007740
-vt 0.885690 0.005362
-vt 0.051247 0.261080
-vt 0.049423 0.306624
-vt 0.017815 0.304021
-vt 0.020497 0.260203
-vt 0.076060 0.261808
-vt 0.074570 0.307992
-vt 0.104423 0.783226
-vt 0.092303 0.780041
-vt 0.115276 0.731397
-vt 0.125352 0.738912
-vt 0.044143 0.352996
-vt 0.033426 0.400921
-vt 0.002489 0.389968
-vt 0.013073 0.347468
-vt 0.070379 0.355087
-vt 0.069082 0.409638
-vt 0.109564 0.401778
-vt 0.117499 0.386544
-vt 0.100450 0.426802
-vt 0.092512 0.387968
-vt 0.106991 0.375290
-vt 0.109675 0.029703
-vt 0.117722 0.045054
-vt 0.107123 0.056318
-vt 0.092598 0.043598
-vt 0.100435 0.004594
-vt 0.089561 0.080341
-vt 0.105077 0.086662
-vt 0.106539 0.125157
-vt 0.092240 0.124027
-vt 0.093057 0.169522
-vt 0.106883 0.169363
-vt 0.107356 0.215759
-vt 0.093634 0.215780
-vt 0.093116 0.262147
-vt 0.106989 0.262331
-vt 0.106438 0.306551
-vt 0.092162 0.307656
-vt 0.089462 0.351288
-vt 0.104965 0.344973
-vt 0.914640 0.445602
-vt 0.902520 0.448788
-vt 0.935568 0.489916
-vt 0.925493 0.497431
-vt 0.288546 0.913051
-vt 0.287325 0.926460
-vt 0.272005 0.924081
-vt 0.274329 0.910899
-vt 0.368564 0.056489
-vt 0.367087 0.007598
-vt 0.371243 0.107931
-vt 0.372018 0.156225
-vt 0.779651 0.929377
-vt 0.780061 0.938567
-vt 0.709852 0.938555
-vt 0.709329 0.929366
-vt 0.762576 0.592877
-vt 0.754244 0.596328
-vt 0.754244 0.589426
-vt 0.759125 0.584545
-vt 0.883134 0.853409
-vt 0.872374 0.850278
-vt 0.875634 0.840513
-vt 0.886108 0.845723
-vt 0.974474 0.028393
-vt 0.979078 0.032998
-vt 0.965202 0.042270
-vt 0.881298 0.861279
-vt 0.870845 0.859516
-vt 0.861452 0.858933
-vt 0.861455 0.848325
-vt 0.870080 0.868098
-vt 0.861446 0.867660
-vt 0.880130 0.869104
-vt 0.869604 0.876107
-vt 0.861434 0.875789
-vt 0.879298 0.876752
-vt 0.869281 0.883750
-vt 0.861407 0.883518
-vt 0.878655 0.884191
-vt 0.869081 0.891137
-vt 0.861493 0.890965
-vt 0.878140 0.891418
-vt 0.868977 0.898320
-vt 0.861458 0.898201
-vt 0.877736 0.898423
-vt 0.968458 0.025901
-vt 0.961946 0.025901
-vt 0.955930 0.028393
-vt 0.951325 0.032998
-vt 0.948833 0.039014
-vt 0.951325 0.051542
-vt 0.948833 0.045526
-vt 0.868870 0.905441
-vt 0.861440 0.905431
-vt 0.877989 0.905445
-vt 0.869805 0.846820
-vt 0.710050 0.920229
-vt 0.780173 0.920229
-vt 0.779299 0.984490
-vt 0.708717 0.984444
-vt 0.709445 0.975274
-vt 0.779827 0.975309
-vt 0.766028 0.584545
-vt 0.770908 0.589426
-vt 0.839784 0.853400
-vt 0.836814 0.845717
-vt 0.847283 0.840513
-vt 0.850539 0.850274
-vt 0.832240 0.039171
-vt 0.848609 0.035915
-vt 0.834732 0.045187
-vt 0.841617 0.861266
-vt 0.852064 0.859510
-vt 0.852822 0.868086
-vt 0.842782 0.869087
-vt 0.853291 0.876087
-vt 0.843612 0.876727
-vt 0.853608 0.883713
-vt 0.844256 0.884152
-vt 0.853830 0.891070
-vt 0.844771 0.891357
-vt 0.853920 0.898286
-vt 0.845156 0.898364
-vt 0.832240 0.032659
-vt 0.834732 0.026643
-vt 0.839336 0.022039
-vt 0.845353 0.019547
-vt 0.851864 0.019547
-vt 0.862485 0.026643
-vt 0.857881 0.022039
-vt 0.854005 0.905414
-vt 0.844883 0.905390
-vt 0.853108 0.846819
-vt 0.779706 0.993714
-vt 0.709237 0.993668
-vt 0.779537 0.947726
-vt 0.709128 0.947703
-vt 0.759125 0.601209
-vt 0.766028 0.601209
-vt 0.883164 0.957683
-vt 0.886147 0.965420
-vt 0.875601 0.970648
-vt 0.872335 0.960819
-vt 0.981570 0.039014
-vt 0.881327 0.949763
-vt 0.870810 0.951523
-vt 0.861345 0.962767
-vt 0.861362 0.952093
-vt 0.870054 0.942893
-vt 0.861377 0.943317
-vt 0.880159 0.941890
-vt 0.869588 0.934845
-vt 0.861390 0.935150
-vt 0.879323 0.934199
-vt 0.869270 0.927172
-vt 0.861402 0.927404
-vt 0.878670 0.926727
-vt 0.869056 0.919772
-vt 0.861414 0.919946
-vt 0.878141 0.919484
-vt 0.868963 0.912569
-vt 0.861427 0.912670
-vt 0.877734 0.912470
-vt 0.981570 0.045526
-vt 0.979078 0.051542
-vt 0.974474 0.056146
-vt 0.968458 0.058638
-vt 0.961946 0.058638
-vt 0.955930 0.056146
-vt 0.869745 0.964294
-vt 0.779946 0.956926
-vt 0.709650 0.956904
-vt 0.779420 0.966097
-vt 0.708924 0.966063
-vt 0.770908 0.596328
-vt 0.839543 0.957612
-vt 0.850362 0.960783
-vt 0.847063 0.970602
-vt 0.836535 0.965340
-vt 0.839336 0.049792
-vt 0.841406 0.949698
-vt 0.851916 0.951492
-vt 0.852700 0.942865
-vt 0.842599 0.941830
-vt 0.853192 0.934819
-vt 0.843460 0.934142
-vt 0.853535 0.927147
-vt 0.844137 0.926672
-vt 0.853772 0.919747
-vt 0.844688 0.919430
-vt 0.853889 0.912543
-vt 0.845117 0.912417
-vt 0.845353 0.052284
-vt 0.851864 0.052284
-vt 0.857881 0.049792
-vt 0.862485 0.045187
-vt 0.864977 0.039171
-vt 0.864977 0.032659
-vt 0.852941 0.964266
-vt 0.703217 0.929377
-vt 0.703626 0.938567
-vt 0.633417 0.938555
-vt 0.632895 0.929366
-vt 0.071120 0.749866
-vt 0.079452 0.746414
-vt 0.079452 0.753317
-vt 0.074571 0.758198
-vt 0.143420 0.866156
-vt 0.140288 0.876925
-vt 0.130516 0.873665
-vt 0.135727 0.863181
-vt 0.088429 0.684667
-vt 0.093033 0.689271
-vt 0.079156 0.698543
-vt 0.151296 0.867993
-vt 0.149528 0.878456
-vt 0.148937 0.887852
-vt 0.138337 0.887847
-vt 0.158114 0.879231
-vt 0.157659 0.887872
-vt 0.159132 0.869163
-vt 0.166135 0.879723
-vt 0.165788 0.887909
-vt 0.166798 0.870002
-vt 0.173804 0.880070
-vt 0.173525 0.887957
-vt 0.174265 0.870654
-vt 0.181235 0.880307
-vt 0.181021 0.887993
-vt 0.181533 0.871178
-vt 0.188499 0.880414
-vt 0.188385 0.888022
-vt 0.188596 0.871579
-vt 0.082412 0.682175
-vt 0.075901 0.682175
-vt 0.069885 0.684667
-vt 0.065280 0.689271
-vt 0.062788 0.695287
-vt 0.065280 0.707815
-vt 0.062788 0.701799
-vt 0.195697 0.880505
-vt 0.195717 0.888013
-vt 0.195682 0.871316
-vt 0.136830 0.879496
-vt 0.633616 0.920229
-vt 0.703738 0.920229
-vt 0.702865 0.984490
-vt 0.632283 0.984445
-vt 0.633011 0.975275
-vt 0.703393 0.975309
-vt 0.067669 0.758198
-vt 0.062788 0.753317
-vt 0.143375 0.909449
-vt 0.135773 0.912291
-vt 0.130613 0.902038
-vt 0.140306 0.898725
-vt 0.968458 0.064620
-vt 0.965202 0.080989
-vt 0.961946 0.064620
-vt 0.151229 0.907636
-vt 0.149504 0.897222
-vt 0.158060 0.896495
-vt 0.159025 0.906485
-vt 0.166048 0.896083
-vt 0.166625 0.905672
-vt 0.173680 0.895880
-vt 0.173978 0.905066
-vt 0.181141 0.895685
-vt 0.181308 0.905163
-vt 0.188478 0.895667
-vt 0.188578 0.904730
-vt 0.974474 0.067112
-vt 0.979078 0.071716
-vt 0.981570 0.077732
-vt 0.981571 0.084244
-vt 0.979079 0.090260
-vt 0.968458 0.097357
-vt 0.974474 0.094865
-vt 0.195760 0.895543
-vt 0.195822 0.904978
-vt 0.136855 0.896184
-vt 0.703272 0.993714
-vt 0.632803 0.993668
-vt 0.703103 0.947726
-vt 0.632694 0.947703
-vt 0.074571 0.741534
-vt 0.067669 0.741534
-vt 0.247825 0.866061
-vt 0.255440 0.863193
-vt 0.260639 0.873459
-vt 0.250935 0.876808
-vt 0.095525 0.695287
-vt 0.239955 0.867903
-vt 0.241729 0.878349
-vt 0.252936 0.887691
-vt 0.242341 0.887726
-vt 0.233162 0.879134
-vt 0.233627 0.887758
-vt 0.232130 0.869086
-vt 0.225159 0.879636
-vt 0.225512 0.887797
-vt 0.224480 0.869940
-vt 0.217514 0.879994
-vt 0.217803 0.887847
-vt 0.217035 0.870610
-vt 0.210119 0.880251
-vt 0.210357 0.887909
-vt 0.209797 0.871151
-vt 0.202885 0.880383
-vt 0.203045 0.887963
-vt 0.202762 0.871566
-vt 0.095525 0.701799
-vt 0.093033 0.707815
-vt 0.088429 0.712420
-vt 0.082413 0.714912
-vt 0.075901 0.714912
-vt 0.069884 0.712420
-vt 0.254398 0.879343
-vt 0.703511 0.956926
-vt 0.633216 0.956904
-vt 0.702985 0.966097
-vt 0.632490 0.966063
-vt 0.062788 0.746414
-vt 0.247919 0.909341
-vt 0.251015 0.898599
-vt 0.260769 0.901827
-vt 0.255596 0.912291
-vt 0.955930 0.067112
-vt 0.240063 0.907529
-vt 0.241791 0.897101
-vt 0.233229 0.896373
-vt 0.232258 0.906381
-vt 0.225243 0.895944
-vt 0.224643 0.905567
-vt 0.217628 0.895690
-vt 0.217260 0.904944
-vt 0.210274 0.895599
-vt 0.210134 0.904466
-vt 0.203020 0.895544
-vt 0.203072 0.904661
-vt 0.951325 0.071716
-vt 0.948833 0.077732
-vt 0.948833 0.084244
-vt 0.951325 0.090260
-vt 0.955930 0.094865
-vt 0.961946 0.097357
-vt 0.254460 0.896025
-vt 0.879518 0.026423
-vt 0.888708 0.026013
-vt 0.888696 0.096222
-vt 0.879507 0.096745
-vt 0.071120 0.728223
-vt 0.062788 0.731674
-vt 0.062788 0.724771
-vt 0.067669 0.719891
-vt 0.943193 0.853469
-vt 0.932395 0.850323
-vt 0.935670 0.840522
-vt 0.946182 0.845755
-vt 0.977135 0.281163
-vt 0.977135 0.287675
-vt 0.960766 0.284419
-vt 0.941347 0.861368
-vt 0.930859 0.859595
-vt 0.921434 0.859010
-vt 0.921435 0.848361
-vt 0.930090 0.868203
-vt 0.921433 0.867766
-vt 0.940169 0.869220
-vt 0.929611 0.876232
-vt 0.921432 0.875914
-vt 0.939323 0.876891
-vt 0.929282 0.883887
-vt 0.921432 0.883643
-vt 0.938659 0.884345
-vt 0.929057 0.891271
-vt 0.921431 0.891085
-vt 0.938121 0.891571
-vt 0.928953 0.898461
-vt 0.921430 0.898348
-vt 0.937707 0.898569
-vt 0.974643 0.275147
-vt 0.970038 0.270542
-vt 0.964022 0.268051
-vt 0.957510 0.268051
-vt 0.951494 0.270542
-vt 0.944398 0.281163
-vt 0.946890 0.275147
-vt 0.928852 0.905578
-vt 0.921430 0.905577
-vt 0.937956 0.905578
-vt 0.929817 0.846852
-vt 0.870370 0.096024
-vt 0.870370 0.025901
-vt 0.934631 0.026775
-vt 0.934585 0.097357
-vt 0.925415 0.096629
-vt 0.925450 0.026247
-vt 0.074571 0.719891
-vt 0.079452 0.724771
-vt 0.899675 0.853466
-vt 0.896688 0.845751
-vt 0.907200 0.840520
-vt 0.910474 0.850321
-vt 0.944398 0.191173
-vt 0.960766 0.187917
-vt 0.946889 0.197189
-vt 0.901520 0.861364
-vt 0.912008 0.859593
-vt 0.912776 0.868201
-vt 0.902696 0.869217
-vt 0.913253 0.876230
-vt 0.903541 0.876888
-vt 0.913581 0.883886
-vt 0.904203 0.884341
-vt 0.913804 0.891270
-vt 0.904740 0.891568
-vt 0.913907 0.898460
-vt 0.905152 0.898566
-vt 0.944398 0.184661
-vt 0.946890 0.178645
-vt 0.951494 0.174040
-vt 0.957510 0.171548
-vt 0.964022 0.171548
-vt 0.974643 0.178645
-vt 0.970038 0.174040
-vt 0.914008 0.905577
-vt 0.904903 0.905577
-vt 0.913052 0.846851
-vt 0.943855 0.026368
-vt 0.943809 0.096837
-vt 0.897867 0.026537
-vt 0.897844 0.096946
-vt 0.067669 0.736555
-vt 0.074571 0.736555
-vt 0.943189 0.957682
-vt 0.946176 0.965395
-vt 0.935666 0.970627
-vt 0.932391 0.960827
-vt 0.974643 0.293691
-vt 0.941342 0.949785
-vt 0.930855 0.951557
-vt 0.921432 0.962790
-vt 0.921431 0.952142
-vt 0.930087 0.942950
-vt 0.921431 0.943387
-vt 0.940165 0.941933
-vt 0.929609 0.934922
-vt 0.921430 0.935239
-vt 0.939319 0.934263
-vt 0.929280 0.927268
-vt 0.921430 0.927511
-vt 0.938656 0.926811
-vt 0.929056 0.919884
-vt 0.921430 0.920069
-vt 0.938119 0.919585
-vt 0.928952 0.912695
-vt 0.921430 0.912807
-vt 0.937706 0.912588
-vt 0.970038 0.298296
-vt 0.964022 0.300788
-vt 0.957510 0.300788
-vt 0.951494 0.298296
-vt 0.946889 0.293691
-vt 0.944398 0.287675
-vt 0.929814 0.964298
-vt 0.907067 0.026129
-vt 0.907044 0.096424
-vt 0.916238 0.026654
-vt 0.916203 0.097150
-vt 0.079452 0.731674
-vt 0.899675 0.957685
-vt 0.910472 0.960829
-vt 0.907199 0.970630
-vt 0.896688 0.965399
-vt 0.951494 0.201793
-vt 0.901519 0.949787
-vt 0.912007 0.951559
-vt 0.912774 0.942951
-vt 0.902696 0.941936
-vt 0.913252 0.934923
-vt 0.903541 0.934265
-vt 0.913580 0.927268
-vt 0.904203 0.926812
-vt 0.913803 0.919884
-vt 0.904739 0.919585
-vt 0.913907 0.912694
-vt 0.905152 0.912588
-vt 0.957510 0.204285
-vt 0.964022 0.204285
-vt 0.970038 0.201793
-vt 0.974643 0.197189
-vt 0.977135 0.191173
-vt 0.977135 0.184661
-vt 0.913051 0.964300
-vt 0.706270 0.502931
-vt 0.715459 0.502522
-vt 0.715448 0.572731
-vt 0.706258 0.573253
-vt 0.071120 0.771509
-vt 0.062788 0.768057
-vt 0.067669 0.763177
-vt 0.074571 0.763177
-vt 0.710132 0.005494
-vt 0.706969 0.016359
-vt 0.697108 0.013066
-vt 0.702371 0.002489
-vt 0.974643 0.237431
-vt 0.977135 0.243447
-vt 0.960766 0.246703
-vt 0.718079 0.007350
-vt 0.716298 0.017903
-vt 0.715711 0.027386
-vt 0.704997 0.027386
-vt 0.724960 0.018675
-vt 0.724521 0.027386
-vt 0.725980 0.008533
-vt 0.733040 0.019154
-vt 0.732722 0.027386
-vt 0.733699 0.009381
-vt 0.740746 0.019484
-vt 0.740505 0.027385
-vt 0.741200 0.010043
-vt 0.748181 0.019708
-vt 0.748004 0.027380
-vt 0.748475 0.010575
-vt 0.755417 0.019812
-vt 0.755343 0.027365
-vt 0.755524 0.010980
-vt 0.970038 0.232826
-vt 0.964022 0.230335
-vt 0.957510 0.230335
-vt 0.951494 0.232827
-vt 0.946889 0.237431
-vt 0.944398 0.249959
-vt 0.944398 0.243447
-vt 0.762593 0.019939
-vt 0.762634 0.027465
-vt 0.762609 0.010718
-vt 0.703478 0.018953
-vt 0.697122 0.572532
-vt 0.697122 0.502410
-vt 0.761383 0.503283
-vt 0.761337 0.573865
-vt 0.752167 0.573137
-vt 0.752201 0.502755
-vt 0.079452 0.768057
-vt 0.079452 0.774960
-vt 0.710133 0.049279
-vt 0.702371 0.052284
-vt 0.697108 0.041707
-vt 0.706969 0.038414
-vt 0.964022 0.133832
-vt 0.960766 0.150201
-vt 0.957510 0.133832
-vt 0.718079 0.047423
-vt 0.716298 0.036870
-vt 0.724960 0.036099
-vt 0.725980 0.046240
-vt 0.733040 0.035619
-vt 0.733698 0.045392
-vt 0.740748 0.035292
-vt 0.741198 0.044732
-vt 0.748186 0.035071
-vt 0.748472 0.044203
-vt 0.755431 0.034980
-vt 0.755520 0.043805
-vt 0.970038 0.136324
-vt 0.974643 0.140929
-vt 0.977135 0.146945
-vt 0.977135 0.153457
-vt 0.974643 0.159473
-vt 0.964022 0.166569
-vt 0.970038 0.164078
-vt 0.762606 0.034910
-vt 0.762590 0.044078
-vt 0.703477 0.035820
-vt 0.770606 0.502877
-vt 0.770561 0.573345
-vt 0.724618 0.503046
-vt 0.724595 0.573454
-vt 0.062788 0.774960
-vt 0.067669 0.779841
-vt 0.814590 0.006376
-vt 0.822145 0.003470
-vt 0.827242 0.013765
-vt 0.817635 0.016947
-vt 0.977135 0.249959
-vt 0.806858 0.008157
-vt 0.808537 0.018414
-vt 0.819536 0.027705
-vt 0.809069 0.027676
-vt 0.800082 0.019090
-vt 0.800439 0.027630
-vt 0.799186 0.009269
-vt 0.792178 0.019417
-vt 0.792375 0.027560
-vt 0.791720 0.010025
-vt 0.784548 0.019690
-vt 0.784654 0.027482
-vt 0.784255 0.010023
-vt 0.777109 0.019797
-vt 0.777176 0.027524
-vt 0.776851 0.010547
-vt 0.769811 0.019854
-vt 0.769894 0.027470
-vt 0.769718 0.010965
-vt 0.974643 0.255975
-vt 0.970038 0.260580
-vt 0.964022 0.263072
-vt 0.957510 0.263072
-vt 0.951494 0.260580
-vt 0.946889 0.255975
-vt 0.821033 0.019481
-vt 0.733819 0.502637
-vt 0.733796 0.572932
-vt 0.742989 0.503163
-vt 0.742955 0.573658
-vt 0.074571 0.779841
-vt 0.814501 0.049145
-vt 0.817602 0.038497
-vt 0.827261 0.041725
-vt 0.822106 0.052088
-vt 0.951494 0.136324
-vt 0.806713 0.047328
-vt 0.808466 0.036974
-vt 0.799967 0.036195
-vt 0.798958 0.046172
-vt 0.792011 0.035698
-vt 0.791359 0.045352
-vt 0.784384 0.035355
-vt 0.783940 0.044724
-vt 0.776982 0.035138
-vt 0.776699 0.044223
-vt 0.769765 0.035026
-vt 0.769660 0.043824
-vt 0.946889 0.140929
-vt 0.944398 0.146945
-vt 0.944398 0.153457
-vt 0.946889 0.159473
-vt 0.951494 0.164077
-vt 0.957510 0.166569
-vt 0.821021 0.035957
-vt 0.452276 0.785576
-vt 0.530938 0.800580
-vt 0.519418 0.829679
-vt 0.530938 0.769285
-vt 0.467281 0.706915
-vt 0.496379 0.718434
-vt 0.435985 0.706915
-vt 0.518508 0.740564
-vt 0.386045 0.830589
-vt 0.373615 0.801867
-vt 0.408174 0.852718
-vt 0.497289 0.851808
-vt 0.468568 0.864238
-vt 0.437272 0.864238
-vt 0.407264 0.719344
-vt 0.385135 0.741474
-vt 0.373615 0.770572
-vt 0.195525 0.795751
-vt 0.180612 0.858203
-vt 0.164588 0.853541
-vt 0.153198 0.845820
-vt 0.227324 0.851141
-vt 0.203447 0.858093
-vt 0.258444 0.813479
-vt 0.246476 0.835278
-vt 0.137559 0.826486
-vt 0.132826 0.815171
-vt 0.130331 0.802691
-vt 0.253818 0.764843
-vt 0.260769 0.788720
-vt 0.130331 0.788931
-vt 0.135464 0.773052
-vt 0.216156 0.733723
-vt 0.237955 0.745691
-vt 0.148368 0.754212
-vt 0.167519 0.738349
-vt 0.191396 0.731397
-vt 0.144269 0.836752
-vt 0.735368 0.614585
-vt 0.735368 0.609007
-vt 0.765410 0.609007
-vt 0.765410 0.614585
-vt 0.735369 0.692674
-vt 0.765409 0.692672
-vt 0.765410 0.698250
-vt 0.735369 0.698251
-vt 0.735367 0.659208
-vt 0.735367 0.653630
-vt 0.765409 0.653629
-vt 0.765409 0.659207
-vt 0.735368 0.625740
-vt 0.735368 0.620163
-vt 0.765409 0.620163
-vt 0.765409 0.625741
-vt 0.735368 0.681518
-vt 0.765409 0.681517
-vt 0.765409 0.687095
-vt 0.735368 0.687096
-vt 0.765409 0.664785
-vt 0.735368 0.664785
-vt 0.735367 0.648052
-vt 0.735368 0.642474
-vt 0.765409 0.642474
-vt 0.765409 0.648052
-vt 0.735368 0.670363
-vt 0.765409 0.670362
-vt 0.735368 0.675941
-vt 0.765409 0.675940
-vt 0.735368 0.636896
-vt 0.735368 0.631318
-vt 0.765409 0.631319
-vt 0.765409 0.636896
-vt 0.627663 0.018536
-vt 0.640495 0.035701
-vt 0.118542 0.540948
-vt 0.129153 0.512449
-vt 0.182984 0.433696
-vt 0.665147 0.081893
-vt 0.675823 0.111525
-vt 0.614038 0.002489
-vt 0.538145 0.183061
-vt 0.543728 0.145268
-vt 0.552235 0.111517
-vt 0.562915 0.081886
-vt 0.246132 0.541712
-vt 0.254073 0.574629
-vt 0.653194 0.056591
-vt 0.102670 0.644547
-vt 0.104804 0.610557
-vt 0.259034 0.611464
-vt 0.260769 0.645460
-vt 0.587574 0.035697
-vt 0.600410 0.018534
-vt 0.684324 0.145276
-vt 0.689903 0.183067
-vt 0.539748 0.300788
-vt 0.538236 0.281328
-vt 0.260427 0.669393
-vt 0.259412 0.688471
-vt 0.535922 0.242380
-vt 0.535917 0.217894
-vt 0.102739 0.668499
-vt 0.235865 0.513089
-vt 0.536897 0.261860
-vt 0.212523 0.468569
-vt 0.224768 0.488974
-vt 0.689809 0.281329
-vt 0.688297 0.300788
-vt 0.103539 0.687606
-vt 0.692129 0.217898
-vt 0.110205 0.573773
-vt 0.692123 0.242382
-vt 0.574873 0.056585
-vt 0.198443 0.450720
-vt 0.140540 0.488468
-vt 0.153029 0.468211
-vt 0.691148 0.261861
-vt 0.167323 0.450533
-vt 0.792071 0.916492
-vt 0.801734 0.917833
-vt 0.800482 0.928867
-vt 0.790569 0.928447
-vt 0.819559 0.917593
-vt 0.828934 0.915975
-vt 0.830887 0.927620
-vt 0.821198 0.928431
-vt 0.810748 0.918151
-vt 0.810905 0.929153
-vt 0.810585 0.909797
-vt 0.818858 0.909566
-vt 0.802207 0.909591
-vt 0.792537 0.909087
-vt 0.828227 0.908819
-vt 0.810504 0.901865
-vt 0.818541 0.901813
-vt 0.802426 0.901718
-vt 0.792526 0.901481
-vt 0.828032 0.901496
-vt 0.810458 0.894122
-vt 0.818385 0.894157
-vt 0.802440 0.894004
-vt 0.792945 0.893902
-vt 0.828099 0.893988
-vt 0.810466 0.886501
-vt 0.818442 0.886564
-vt 0.802576 0.886344
-vt 0.792650 0.886274
-vt 0.827654 0.886528
-vt 0.810605 0.878861
-vt 0.818516 0.879006
-vt 0.802622 0.878699
-vt 0.792975 0.878624
-vt 0.827899 0.879219
-vt 0.810627 0.871174
-vt 0.818728 0.871360
-vt 0.802634 0.871045
-vt 0.793164 0.871158
-vt 0.828287 0.871815
-vt 0.810761 0.863286
-vt 0.819099 0.863519
-vt 0.802505 0.863298
-vt 0.793105 0.863821
-vt 0.828872 0.864342
-vt 0.810831 0.854897
-vt 0.819719 0.855317
-vt 0.802012 0.855256
-vt 0.792571 0.856598
-vt 0.829806 0.856813
-vt 0.810812 0.840513
-vt 0.821257 0.840988
-vt 0.800456 0.841199
-vt 0.790569 0.842257
-vt 0.831557 0.841861
-vt 0.198153 0.674384
-vt 0.190503 0.669690
-vt 0.181579 0.667935
-vt 0.172657 0.669498
-vt 0.164990 0.674149
-vt 0.172482 0.709831
-vt 0.165645 0.725148
-vt 0.164534 0.705393
-vt 0.181494 0.711289
-vt 0.181366 0.726419
-vt 0.190352 0.710029
-vt 0.197029 0.725317
-vt 0.198296 0.705626
-vt 0.198304 0.682086
-vt 0.198380 0.689831
-vt 0.198393 0.697682
-vt 0.111004 0.912641
-vt 0.115581 0.905791
-vt 0.125352 0.914425
-vt 0.120674 0.920403
-vt 0.115997 0.926380
-vt 0.106426 0.919491
-vt 0.111320 0.932358
-vt 0.101850 0.926341
-vt 0.106643 0.938335
-vt 0.097273 0.933191
-vt 0.103212 0.903331
-vt 0.109641 0.903331
-vt 0.092727 0.928645
-vt 0.090266 0.922705
-vt 0.097273 0.905791
-vt 0.090266 0.916276
-vt 0.092727 0.910337
-vt 0.028835 0.966192
-vt 0.022226 0.962460
-vt 0.027949 0.950743
-vt 0.034799 0.955320
-vt 0.041649 0.959896
-vt 0.035444 0.969924
-vt 0.048499 0.964473
-vt 0.042053 0.973656
-vt 0.048661 0.977389
-vt 0.055349 0.969050
-vt 0.057809 0.956681
-vt 0.057809 0.963111
-vt 0.032494 0.946196
-vt 0.038434 0.943736
-vt 0.044863 0.943736
-vt 0.055349 0.950742
-vt 0.050803 0.946196
-vt 0.164798 0.681881
-vt 0.164632 0.689635
-vt 0.164472 0.697463
-vt 0.632934 0.545044
-vt 0.652052 0.545141
-vt 0.651863 0.563819
-vt 0.632878 0.563545
-vt 0.632810 0.522319
-vt 0.651894 0.522072
-vt 0.614051 0.544992
-vt 0.614050 0.522383
-vt 0.614052 0.563464
-vt 0.623810 0.369295
-vt 0.633568 0.367324
-vt 0.639225 0.392887
-vt 0.626601 0.394923
-vt 0.621003 0.348235
-vt 0.627678 0.345810
-vt 0.614030 0.369953
-vt 0.614025 0.348001
-vt 0.614035 0.395617
-vt 0.629039 0.423653
-vt 0.644192 0.421805
-vt 0.648130 0.453878
-vt 0.630967 0.455302
-vt 0.614040 0.424291
-vt 0.614045 0.455805
-vt 0.632283 0.490213
-vt 0.650805 0.489389
-vt 0.614048 0.490505
-vt 0.671657 0.545379
-vt 0.671632 0.521677
-vt 0.671171 0.564390
-vt 0.643195 0.364006
-vt 0.634619 0.343782
-vt 0.651946 0.389422
-vt 0.659650 0.418657
-vt 0.665778 0.451472
-vt 0.669892 0.488003
-vt 0.609392 0.332898
-vt 0.607048 0.348238
-vt 0.600372 0.345815
-vt 0.605897 0.328451
-vt 0.614021 0.329898
-vt 0.632709 0.582516
-vt 0.651454 0.582884
-vt 0.650961 0.602258
-vt 0.632515 0.601907
-vt 0.614052 0.582411
-vt 0.614052 0.601845
-vt 0.670391 0.583627
-vt 0.669465 0.603025
-vt 0.595169 0.545046
-vt 0.595227 0.563546
-vt 0.576242 0.563821
-vt 0.576052 0.545144
-vt 0.595291 0.522321
-vt 0.576208 0.522076
-vt 0.604250 0.369299
-vt 0.601470 0.394928
-vt 0.588846 0.392897
-vt 0.594492 0.367332
-vt 0.599042 0.423658
-vt 0.597122 0.455306
-vt 0.579960 0.453886
-vt 0.583888 0.421814
-vt 0.595814 0.490216
-vt 0.577292 0.489395
-vt 0.556449 0.545383
-vt 0.556935 0.564393
-vt 0.556471 0.521683
-vt 0.584864 0.364018
-vt 0.576124 0.389437
-vt 0.593430 0.343791
-vt 0.568431 0.418672
-vt 0.562313 0.451485
-vt 0.558206 0.488013
-vt 0.618652 0.332896
-vt 0.622145 0.328447
-vt 0.595396 0.582517
-vt 0.595590 0.601906
-vt 0.577145 0.602257
-vt 0.576652 0.582885
-vt 0.557716 0.583628
-vt 0.558641 0.603025
-vt 0.600556 0.329700
-vt 0.627487 0.329694
-vt 0.587576 0.338950
-vt 0.600404 0.321797
-vt 0.552250 0.414757
-vt 0.562926 0.385129
-vt 0.614015 0.305766
-vt 0.684345 0.448489
-vt 0.689934 0.486285
-vt 0.665144 0.385108
-vt 0.675832 0.414737
-vt 0.574879 0.359831
-vt 0.627634 0.321791
-vt 0.640471 0.338937
-vt 0.538167 0.486298
-vt 0.543747 0.448506
-vt 0.689850 0.584566
-vt 0.688338 0.604028
-vt 0.692166 0.521122
-vt 0.692162 0.545612
-vt 0.691188 0.565094
-vt 0.539770 0.604028
-vt 0.538258 0.584567
-vt 0.535940 0.521131
-vt 0.535945 0.545617
-vt 0.653178 0.359814
-vt 0.536920 0.565098
-vt 0.632912 0.241809
-vt 0.652028 0.241907
-vt 0.651838 0.260583
-vt 0.632855 0.260309
-vt 0.632788 0.219087
-vt 0.651871 0.218840
-vt 0.614031 0.241757
-vt 0.614031 0.219149
-vt 0.614031 0.260227
-vt 0.623805 0.066059
-vt 0.633566 0.064090
-vt 0.639217 0.089658
-vt 0.626592 0.091693
-vt 0.621002 0.044992
-vt 0.627680 0.042567
-vt 0.614022 0.066716
-vt 0.614021 0.044757
-vt 0.614024 0.092385
-vt 0.629025 0.120425
-vt 0.644180 0.118578
-vt 0.648113 0.150651
-vt 0.630950 0.152074
-vt 0.614026 0.121061
-vt 0.614028 0.152576
-vt 0.632263 0.186983
-vt 0.650785 0.186160
-vt 0.614030 0.187274
-vt 0.671630 0.242146
-vt 0.671607 0.218447
-vt 0.671144 0.261155
-vt 0.643196 0.060774
-vt 0.634624 0.040541
-vt 0.651940 0.086196
-vt 0.659638 0.115434
-vt 0.665760 0.148248
-vt 0.669870 0.184777
-vt 0.609386 0.029646
-vt 0.607040 0.044994
-vt 0.600361 0.042569
-vt 0.605889 0.025195
-vt 0.614019 0.026643
-vt 0.632686 0.279277
-vt 0.651428 0.279645
-vt 0.650935 0.299016
-vt 0.632492 0.298665
-vt 0.614031 0.279172
-vt 0.614031 0.298603
-vt 0.670362 0.280388
-vt 0.669437 0.299784
-vt 0.595150 0.241810
-vt 0.595208 0.260309
-vt 0.576225 0.260584
-vt 0.576034 0.241908
-vt 0.595273 0.219088
-vt 0.576191 0.218842
-vt 0.604240 0.066061
-vt 0.601457 0.091695
-vt 0.588831 0.089662
-vt 0.594479 0.064093
-vt 0.599027 0.120427
-vt 0.597106 0.152076
-vt 0.579944 0.150655
-vt 0.583873 0.118582
-vt 0.595796 0.186984
-vt 0.577275 0.186163
-vt 0.556433 0.242148
-vt 0.556920 0.261156
-vt 0.556455 0.218450
-vt 0.584849 0.060778
-vt 0.576108 0.086202
-vt 0.593416 0.040545
-vt 0.568414 0.115440
-vt 0.562296 0.148253
-vt 0.558190 0.184781
-vt 0.618652 0.029645
-vt 0.622150 0.025194
-vt 0.595377 0.279278
-vt 0.595571 0.298665
-vt 0.577128 0.299016
-vt 0.576635 0.279645
-vt 0.557701 0.280389
-vt 0.558627 0.299784
-vt 0.600544 0.026445
-vt 0.627494 0.026443
-vt 0.587560 0.035701
-vt 0.600392 0.018536
-vt 0.552232 0.111525
-vt 0.562908 0.081893
-vt 0.614017 0.002489
-vt 0.684327 0.145268
-vt 0.689910 0.183061
-vt 0.665140 0.081886
-vt 0.675820 0.111517
-vt 0.574861 0.056591
-vt 0.627645 0.018534
-vt 0.640481 0.035697
-vt 0.538152 0.183067
-vt 0.543731 0.145276
-vt 0.689819 0.281328
-vt 0.688307 0.300788
-vt 0.692138 0.217894
-vt 0.692133 0.242380
-vt 0.691158 0.261860
-vt 0.539758 0.300788
-vt 0.538245 0.281329
-vt 0.535925 0.217898
-vt 0.535931 0.242382
-vt 0.653182 0.056585
-vt 0.536907 0.261861
-usemtl Bot
-s 1
-f 1/1 150/2 229/3 91/4
-f 1/1 91/4 216/5 95/6
-f 1/1 95/6 233/7 87/8
-f 1/1 87/8 256/9 150/2
-f 2/10 98/11 218/12 94/13
-f 2/10 94/13 219/14 97/15
-f 2/10 97/15 236/16 90/17
-f 2/10 90/17 235/18 98/11
-f 3/19 99/20 217/21 93/22
-f 3/19 93/22 218/12 98/11
-f 3/19 98/11 235/18 89/23
-f 3/19 89/23 234/24 99/20
-f 4/25 95/6 216/5 92/26
-f 4/25 92/26 217/21 99/20
-f 4/25 99/20 234/24 88/27
-f 4/25 88/27 233/7 95/6
-f 5/28 100/29 216/5 91/4
-f 5/28 91/4 229/3 151/30
-f 6/31 102/32 219/14 94/13
-f 6/31 94/13 218/12 103/33
-f 7/34 103/33 218/12 93/22
-f 7/34 93/22 217/21 104/35
-f 8/36 104/35 217/21 92/26
-f 8/36 92/26 216/5 100/29
-f 9/37 211/38 241/39 162/40
-f 9/37 162/40 236/16 105/41
-f 10/42 113/43 223/44 109/45
-f 10/42 109/45 224/46 112/47
-f 11/48 152/49 230/50 106/51
-f 11/48 106/51 221/52 114/53
-f 12/54 112/47 224/46 110/55
-f 12/54 110/55 242/56 111/57
-f 13/58 114/53 221/52 107/59
-f 13/58 107/59 222/60 116/61
-f 14/62 116/61 222/60 108/63
-f 14/62 108/63 223/44 113/43
-f 15/64 126/65 250/66 119/67
-f 15/64 119/67 251/68 125/69
-f 15/64 125/69 228/70 123/71
-f 15/64 123/71 227/72 126/65
-f 16/73 127/74 249/75 118/76
-f 16/73 118/76 250/66 126/65
-f 16/73 126/65 227/72 122/77
-f 16/73 122/77 226/78 127/74
-f 17/79 124/80 248/81 117/82
-f 17/79 117/82 249/75 127/74
-f 17/79 127/74 226/78 121/83
-f 17/79 121/83 225/84 124/80
-f 18/85 153/86 231/87 120/88
-f 18/85 120/88 225/84 128/89
-f 19/90 130/91 227/72 123/71
-f 19/90 123/71 228/70 129/92
-f 20/93 131/94 226/78 122/77
-f 20/93 122/77 227/72 130/91
-f 21/95 128/89 225/84 121/83
-f 21/95 121/83 226/78 131/94
-f 22/96 132/97 251/68 185/98
-f 22/96 185/98 255/99 213/100
-f 28/101 140/102 3493/56 3492/55
-f 28/101 3492/55 3491/46 145/103
-f 29/104 145/103 3491/46 3490/45
-f 29/104 3490/45 3489/44 144/105
-f 30/106 155/107 3483/50 148/108
-f 30/106 148/108 3496/109 141/110
-f 31/111 144/105 3489/44 3488/63
-f 31/111 3488/63 3487/60 143/112
-f 32/113 139/114 215/115 96/116
-f 32/113 96/116 232/117 138/118
-f 33/119 143/112 3487/60 3486/59
-f 33/119 3486/59 3485/52 142/120
-f 34/121 3413/122 220/123 115/124
-f 35/125 101/126 215/115 139/114
-f 36/127 3480/128 3481/129 147/130
-f 36/127 147/130 229/3 150/2
-f 36/127 150/2 256/9 146/131
-f 36/127 146/131 3479/132 3480/128
-f 67/133 195/134 199/135 3462/136
-f 40/137 154/138 3415/107 3412/106
-f 37/139 151/30 229/3 147/130
-f 37/139 147/130 3481/129 3482/140
-f 38/141 3427/142 3497/109 3503/108
-f 38/141 3503/108 230/50 152/49
-f 39/143 149/144 231/87 153/86
-f 80/145 74/146 197/147 3458/148
-f 26/149 3422/119 3423/120 136/150
-f 41/151 142/120 3485/52 3484/51
-f 41/151 3484/51 3483/50 155/107
-f 42/152 156/153 257/154 205/155
-f 42/152 205/155 256/9 87/8
-f 42/152 87/8 233/7 160/156
-f 42/152 160/156 238/157 156/153
-f 43/158 159/159 240/160 163/161
-f 43/158 163/161 235/18 90/17
-f 43/158 90/17 236/16 162/40
-f 43/158 162/40 241/39 159/159
-f 44/162 158/163 239/164 164/165
-f 44/162 164/165 234/24 89/23
-f 44/162 89/23 235/18 163/161
-f 44/162 163/161 240/160 158/163
-f 45/166 157/167 238/157 160/156
-f 45/166 160/156 233/7 88/27
-f 45/166 88/27 234/24 164/165
-f 45/166 164/165 239/164 157/167
-f 46/168 206/169 257/154 156/153
-f 46/168 156/153 238/157 165/170
-f 79/171 75/172 3470/173 3477/174
-f 47/175 168/176 240/160 159/159
-f 47/175 159/159 241/39 167/177
-f 27/178 3416/111 3417/112 137/179
-f 48/180 169/181 239/164 158/163
-f 48/180 158/163 240/160 168/176
-f 25/182 3405/101 3406/103 134/183
-f 49/184 165/170 238/157 157/167
-f 49/184 157/167 239/164 169/181
-f 50/185 173/186 246/187 176/188
-f 65/189 192/190 201/191 68/192
-f 50/185 175/193 247/194 173/186
-f 51/195 170/196 258/197 207/198
-f 51/195 177/199 244/200 170/196
-f 52/201 174/202 247/194 175/193
-f 52/201 3388/203 3494/204 174/202
-f 53/205 171/206 244/200 177/199
-f 39/143 3430/207 3420/208 149/144
-f 53/205 179/209 245/210 171/206
-f 54/211 172/212 245/210 179/209
-f 66/213 194/214 198/215 73/216
-f 23/217 134/183 3406/103 3410/104
-f 54/211 176/188 246/187 172/212
-f 55/218 119/67 250/66 186/219
-f 55/218 186/219 254/220 183/221
-f 55/218 183/221 255/99 185/98
-f 55/218 185/98 251/68 119/67
-f 56/222 118/76 249/75 187/223
-f 56/222 187/223 253/224 182/225
-f 56/222 182/225 254/220 186/219
-f 56/222 186/219 250/66 118/76
-f 57/226 117/82 248/81 184/227
-f 57/226 184/227 252/228 181/229
-f 57/226 181/229 253/224 187/223
-f 57/226 187/223 249/75 117/82
-f 58/230 180/231 259/232 208/233
-f 58/230 188/234 252/228 180/231
-f 59/235 183/221 254/220 190/236
-f 66/213 73/216 199/135 195/134
-f 27/178 135/237 3411/105 3416/111
-f 59/235 189/238 255/99 183/221
-f 60/239 182/225 253/224 191/240
-f 60/239 190/236 254/220 182/225
-f 61/241 181/229 252/228 188/234
-f 61/241 191/240 253/224 181/229
-f 62/242 105/41 236/16 97/15
-f 62/242 97/15 219/14 212/243
-f 79/171 204/244 3465/245 75/172
-f 24/246 136/150 3423/120 3433/151
-f 26/149 137/179 3417/112 3422/119
-f 65/189 68/192 3407/247 3400/248
-f 39/143 3432/249 3424/250 3430/207
-f 64/251 81/252 198/215 194/214
-f 3454/192 3517/202 3495/204 3409/247
-f 3454/192 3455/191 3516/194 3517/202
-f 69/253 3515/186 3516/194 3455/191
-f 69/253 200/254 3514/187 3515/186
-f 70/148 203/255 3508/197 3459/256
-f 70/148 3460/147 3518/257 203/255
-f 71/136 3513/212 3514/187 200/254
-f 71/136 3463/135 3512/210 3513/212
-f 72/258 161/259 237/260 196/261
-f 72/258 138/118 232/117 161/259
-f 3467/216 3511/206 3512/210 3463/135
-f 3467/216 3468/215 3510/200 3511/206
-f 3469/262 178/263 243/264 3461/265
-f 63/266 193/267 3457/254 3456/253
-f 3475/268 196/261 237/260 166/269
-f 76/270 202/271 3506/272 3505/273
-f 76/270 3505/273 3479/132 146/131
-f 76/270 146/131 256/9 205/155
-f 76/270 205/155 257/154 202/271
-f 77/274 3507/275 3506/272 202/271
-f 77/274 202/271 257/154 206/169
-f 78/276 3524/255 3519/257 3472/277
-f 23/217 3410/104 3411/105 135/237
-f 80/145 3458/148 210/256 209/278
-f 78/276 207/198 258/197 3524/255
-f 79/171 208/233 259/232 204/244
-f 40/137 3412/106 3414/110 3426/279
-f 3478/252 3509/196 3510/200 3468/215
-f 3478/252 3459/256 3508/197 3509/196
-f 82/280 125/69 251/68 132/97
-f 67/133 3462/136 3457/254 193/267
-f 82/280 214/281 228/70 125/69
-f 83/282 167/177 241/39 211/38
-f 25/182 133/283 3408/102 3405/101
-f 64/251 209/278 210/256 81/252
-f 84/284 212/243 219/14 102/32
-f 85/285 213/100 255/99 189/238
-f 24/246 3433/151 3415/107 154/138
-f 63/266 3456/253 201/191 192/190
-f 86/286 129/92 228/70 214/281
-f 83/282 3440/287 3436/288 167/177
-f 60/239 3453/289 3445/290 190/236
-f 22/96 213/100 3401/291 132/97
-f 48/180 168/176 3435/292 3443/293
-f 62/242 212/243 3389/294 105/41
-f 8/36 3390/295 3391/296 104/35
-f 7/34 3392/297 3383/298 103/33
-f 20/93 3404/299 3403/300 131/94
-f 47/175 3434/301 3435/292 168/176
-f 61/241 188/234 3449/302 3451/303
-f 83/282 211/38 3389/294 3440/287
-f 21/95 131/94 3403/300 3402/304
-f 47/175 167/177 3436/288 3434/301
-f 21/95 3402/304 3397/305 128/89
-f 84/284 102/32 3382/306 3387/307
-f 49/184 169/181 3442/308 3441/309
-f 48/180 3443/293 3442/308 169/181
-f 37/139 3482/140 3428/310 3431/311
-f 18/85 3396/312 3398/313 153/86
-f 5/28 3384/314 3385/315 100/29
-f 7/34 104/35 3391/296 3392/297
-f 58/230 3447/316 3449/302 188/234
-f 20/93 130/91 3395/317 3404/299
-f 37/139 3431/311 3386/318 151/30
-f 19/90 129/92 3394/319 3393/320
-f 77/274 3476/321 3473/322 3507/275
-f 58/230 208/233 3448/323 3447/316
-f 9/37 105/41 3389/294 211/38
-f 49/184 3441/309 3439/324 165/170
-f 35/125 3425/121 3429/124 101/126
-f 60/239 191/240 3452/325 3453/289
-f 46/168 165/170 3439/324 3437/326
-f 84/284 3387/307 3389/294 212/243
-f 82/280 132/97 3401/291 214/281
-f 6/31 103/33 3383/298 3381/327
-f 86/286 3399/328 3394/319 129/92
-f 5/28 151/30 3386/318 3384/314
-f 59/235 3444/329 3446/330 189/238
-f 79/171 3477/174 3448/323 208/233
-f 46/168 3437/326 3438/331 206/169
-f 86/286 214/281 3401/291 3399/328
-f 39/143 153/86 3398/313 3432/249
-f 59/235 190/236 3445/290 3444/329
-f 6/31 3381/327 3382/306 102/32
-f 19/90 3393/320 3395/317 130/91
-f 3475/268 166/269 3474/263 3471/262
-f 61/241 3451/303 3452/325 191/240
-f 18/85 128/89 3397/305 3396/312
-f 8/36 100/29 3385/315 3390/295
-f 77/274 206/169 3438/331 3476/321
-f 85/285 3450/332 3401/291 213/100
-f 85/285 189/238 3446/330 3450/332
-f 265/333 266/334 261/335 260/336
-f 268/337 269/338 264/339 263/340
-f 267/341 268/337 263/340 262/342
-f 266/334 267/341 262/342 261/335
-f 272/343 273/344 268/337 267/341
-f 271/345 272/343 267/341 266/334
-f 270/346 271/345 266/334 265/333
-f 273/344 274/347 269/338 268/337
-f 277/348 278/349 273/344 272/343
-f 276/350 277/348 272/343 271/345
-f 275/351 276/350 271/345 270/346
-f 278/349 279/352 274/347 273/344
-f 282/353 283/354 278/349 277/348
-f 281/355 282/353 277/348 276/350
-f 280/356 281/355 276/350 275/351
-f 283/354 284/357 279/352 278/349
-f 287/358 288/359 283/354 282/353
-f 286/360 287/358 282/353 281/355
-f 285/361 286/360 281/355 280/356
-f 288/359 289/362 284/357 283/354
-f 292/363 293/364 288/359 287/358
-f 291/365 292/363 287/358 286/360
-f 290/366 291/365 286/360 285/361
-f 293/364 294/367 289/362 288/359
-f 297/368 298/369 293/364 292/363
-f 296/370 297/368 292/363 291/365
-f 295/371 296/370 291/365 290/366
-f 298/369 299/372 294/367 293/364
-f 302/373 303/374 298/369 297/368
-f 301/375 302/373 297/368 296/370
-f 300/376 301/375 296/370 295/371
-f 303/374 304/377 299/372 298/369
-f 307/378 308/379 303/374 302/373
-f 306/380 307/378 302/373 301/375
-f 305/381 306/380 301/375 300/376
-f 308/379 309/382 304/377 303/374
-f 312/383 313/384 308/379 307/378
-f 311/385 312/383 307/378 306/380
-f 310/386 311/385 306/380 305/381
-f 313/384 314/387 309/382 308/379
-f 3500/84 3556/388 3555/389 3501/80
-f 3501/80 3555/389 3554/390 3502/81
-f 3553/391 3523/227 3502/81 3554/390
-f 3552/392 3522/228 3523/227 3553/391
-f 3528/393 3464/394 3466/245 3526/395
-f 3464/394 3528/393 3529/396 3419/397
-f 3530/398 3418/399 3419/397 3529/396
-f 3418/399 3530/398 3531/400 3421/208
-f 3499/88 317/401 3556/388 3500/84
-f 3498/87 316/402 317/401 3499/88
-f 316/402 3498/87 3504/144 315/403
-f 315/403 3504/144 3421/208 3531/400
-f 320/404 3550/405 3557/406 3559/407
-f 320/404 3559/407 3561/408 319/409
-f 319/409 3561/408 3560/410 318/411
-f 3560/410 3532/412 3533/413 318/411
-f 320/404 3546/414 3548/415 3550/405
-f 318/411 3533/413 3536/416 3538/417
-f 319/409 3544/418 3546/414 320/404
-f 318/411 3538/417 3540/419 319/409
-f 319/409 3540/419 3542/420 3544/418
-f 323/421 3551/422 3549/423 326/424
-f 323/421 326/424 325/425 322/426
-f 322/426 325/425 324/427 321/428
-f 3527/429 321/428 324/427 3534/430
-f 3537/431 3535/432 3534/430 324/427
-f 3549/423 3547/433 3545/434 326/424
-f 326/424 3545/434 3543/435 325/425
-f 325/425 3539/436 3537/431 324/427
-f 3543/435 3541/437 3539/436 325/425
-f 3558/438 3521/231 3522/228 3552/392
-f 3563/439 3520/232 3521/231 3558/438
-f 3520/232 3563/439 3562/440 3525/244
-f 3525/244 3562/440 3526/395 3466/245
-f 358/441 412/442 395/443 3609/444
-f 328/445 382/446 3614/447 391/448
-f 328/445 391/448 439/449 368/450
-f 3579/451 3634/452 443/453 379/454
-f 329/455 371/456 432/457 369/458
-f 329/455 369/458 433/459 372/460
-f 355/461 3602/462 392/463 409/464
-f 330/465 368/450 439/449 389/466
-f 330/465 389/466 438/467 3571/468
-f 3570/469 370/470 446/471 3642/472
-f 331/473 372/460 433/459 374/474
-f 331/473 374/474 434/475 375/476
-f 356/477 3605/478 395/443 412/442
-f 332/479 373/480 437/481 383/482
-f 332/479 383/482 436/483 376/484
-f 333/485 375/476 434/475 377/486
-f 333/485 377/486 435/487 378/488
-f 334/489 3581/490 3617/491 3618/492
-f 334/489 3618/492 3615/493 385/494
-f 3587/495 3636/496 444/497 3575/498
-f 335/499 378/488 435/487 380/500
-f 335/499 380/500 3619/501 381/502
-f 354/503 413/504 397/505 3599/506
-f 336/507 3571/468 438/467 386/508
-f 336/507 386/508 437/481 373/480
-f 337/509 381/510 3619/511 3622/512
-f 337/509 3622/512 3621/513 384/514
-f 352/515 3611/516 405/517 408/518
-f 338/519 376/484 436/483 3620/520
-f 338/519 3620/520 3617/491 3581/490
-f 3579/451 3580/521 442/522 3634/452
-f 3584/523 3576/524 445/525 3640/526
-f 339/527 384/514 3621/513 3624/528
-f 339/527 3624/528 3623/529 387/530
-f 355/461 408/518 405/517 3602/462
-f 340/531 388/532 3612/533 3613/534
-f 340/531 3613/534 3614/447 382/446
-f 3587/495 379/454 443/453 3636/496
-f 353/535 415/536 401/537 3596/538
-f 341/539 387/530 3623/529 3626/540
-f 341/539 3626/540 3625/541 390/542
-f 357/543 3607/544 403/545 411/546
-f 342/547 385/494 3615/493 3616/548
-f 342/547 3616/548 3612/533 388/532
-f 3590/549 3629/550 441/551 3591/552
-f 343/553 390/542 3625/541 3627/554
-f 343/553 3627/554 432/457 371/456
-f 3584/523 3640/526 446/471 370/470
-f 3594/555 3632/556 442/522 3580/521
-f 3590/549 3566/557 440/558 3629/550
-f 353/535 3596/538 394/559 410/560
-f 3574/561 3638/562 445/525 3576/524
-f 3564/563 3643/564 440/558 3566/557
-f 359/565 3610/566 401/537 415/536
-f 357/543 410/560 394/559 3607/544
-f 3594/555 3591/552 441/551 3632/556
-f 356/477 409/464 392/463 3605/478
-f 3574/561 3575/567 444/568 3638/562
-f 358/441 3609/444 397/505 413/504
-f 3570/469 3642/472 447/569 3565/570
-f 354/503 3599/506 399/571 414/572
-f 3564/563 3565/570 447/569 3643/564
-f 352/515 411/546 403/545 3611/516
-f 359/565 414/572 399/571 3610/566
-f 344/573 3598/574 3637/575 402/576
-f 344/573 402/576 3635/577 3597/578
-f 345/579 3601/580 3641/581 406/582
-f 345/579 406/582 3639/583 3600/584
-f 346/585 3604/586 3631/587 396/588
-f 346/585 396/588 3628/589 3603/590
-f 347/591 3603/590 3628/589 393/592
-f 347/591 393/592 3630/593 3606/594
-f 348/595 3597/578 3635/577 400/596
-f 348/595 400/596 3633/597 3608/598
-f 349/599 3606/594 3630/593 407/600
-f 349/599 407/600 3641/581 3601/580
-f 350/601 3600/584 3639/583 404/602
-f 350/601 404/602 3637/575 3598/574
-f 351/603 3608/598 3633/597 398/604
-f 351/603 398/604 3631/587 3604/586
-f 327/605 3589/606 3592/607
-f 327/605 3582/608 3583/609
-f 327/605 3572/610 3573/611
-f 352/515 408/518 451/612 422/613
-f 352/515 422/613 452/614 411/546
-f 327/605 3588/615 3589/606
-f 327/605 3578/616 3582/608
-f 353/535 410/560 453/617 426/618
-f 353/535 426/618 454/619 415/536
-f 327/605 3569/620 3572/610
-f 327/605 3595/621 3568/622
-f 354/503 414/572 455/623 430/624
-f 354/503 430/624 456/625 413/504
-f 327/605 3586/626 3588/615
-f 327/605 3577/627 3578/616
-f 355/461 409/464 450/628 420/629
-f 355/461 420/629 451/612 408/518
-f 327/605 3593/630 3595/621
-f 327/605 3567/631 3569/620
-f 356/477 412/442 449/632 417/633
-f 356/477 417/633 450/628 409/464
-f 327/605 3585/634 3586/626
-f 327/605 3573/611 3577/627
-f 357/543 411/546 452/614 424/635
-f 357/543 424/635 453/617 410/560
-f 327/605 3568/622 3567/631
-f 327/605 3583/609 3585/634
-f 358/441 413/504 456/625 431/636
-f 358/441 431/636 449/632 412/442
-f 327/605 3592/607 3593/630
-f 359/565 415/536 454/619 428/637
-f 359/565 428/637 455/623 414/572
-f 360/638 418/639 448/640 416/641
-f 360/638 416/641 450/628 417/633
-f 360/638 417/633 449/632 418/639
-f 361/642 416/641 448/640 419/643
-f 361/642 419/643 451/612 420/629
-f 361/642 420/629 450/628 416/641
-f 362/644 419/643 448/640 421/645
-f 362/644 421/645 452/614 422/613
-f 362/644 422/613 451/612 419/643
-f 363/646 421/645 448/640 423/647
-f 363/646 423/647 453/617 424/635
-f 363/646 424/635 452/614 421/645
-f 364/648 423/647 448/640 425/649
-f 364/648 425/649 454/619 426/618
-f 364/648 426/618 453/617 423/647
-f 365/650 425/649 448/640 427/651
-f 365/650 427/651 455/623 428/637
-f 365/650 428/637 454/619 425/649
-f 366/652 427/651 448/640 429/653
-f 366/652 429/653 456/625 430/624
-f 366/652 430/624 455/623 427/651
-f 367/654 429/653 448/640 418/639
-f 367/654 418/639 449/632 431/636
-f 367/654 431/636 456/625 429/653
-f 457/655 606/656 685/657 547/658
-f 457/655 547/658 672/659 551/660
-f 457/655 551/660 689/661 543/662
-f 457/655 543/662 712/663 606/656
-f 458/664 554/665 674/666 550/667
-f 458/664 550/667 675/668 553/669
-f 458/664 553/669 692/670 546/671
-f 458/664 546/671 691/672 554/665
-f 459/673 555/674 673/675 549/676
-f 459/673 549/676 674/666 554/665
-f 459/673 554/665 691/672 545/677
-f 459/673 545/677 690/678 555/674
-f 460/679 551/660 672/659 548/680
-f 460/679 548/680 673/675 555/674
-f 460/679 555/674 690/678 544/681
-f 460/679 544/681 689/661 551/660
-f 461/682 556/683 672/659 547/658
-f 461/682 547/658 685/657 607/684
-f 462/685 558/686 675/668 550/667
-f 462/685 550/667 674/666 559/687
-f 463/688 559/687 674/666 549/676
-f 463/688 549/676 673/675 560/689
-f 464/690 560/689 673/675 548/680
-f 464/690 548/680 672/659 556/683
-f 465/691 667/692 697/693 618/694
-f 465/691 618/694 692/670 561/695
-f 466/696 569/697 679/698 565/699
-f 466/696 565/699 680/700 568/701
-f 467/702 608/703 686/704 562/705
-f 467/702 562/705 677/706 570/707
-f 468/708 568/701 680/700 566/709
-f 468/708 566/709 698/710 567/711
-f 469/712 570/707 677/706 563/713
-f 469/712 563/713 678/714 572/715
-f 470/716 572/715 678/714 564/717
-f 470/716 564/717 679/698 569/697
-f 471/718 582/719 706/720 575/721
-f 471/718 575/721 707/722 581/723
-f 471/718 581/723 684/724 579/725
-f 471/718 579/725 683/726 582/719
-f 472/727 583/728 705/729 574/730
-f 472/727 574/730 706/720 582/719
-f 472/727 582/719 683/726 578/731
-f 472/727 578/731 682/732 583/728
-f 473/733 580/734 704/735 573/736
-f 473/733 573/736 705/729 583/728
-f 473/733 583/728 682/732 577/737
-f 473/733 577/737 681/738 580/734
-f 474/739 609/740 687/741 576/742
-f 474/739 576/742 681/738 584/743
-f 475/744 586/745 683/726 579/725
-f 475/744 579/725 684/724 585/746
-f 476/747 587/748 682/732 578/731
-f 476/747 578/731 683/726 586/745
-f 477/749 584/743 681/738 577/737
-f 477/749 577/737 682/732 587/748
-f 478/750 588/751 707/722 641/752
-f 478/750 641/752 711/753 669/754
-f 484/755 596/756 3756/710 3755/709
-f 484/755 3755/709 3754/700 601/757
-f 485/758 601/757 3754/700 3753/699
-f 485/758 3753/699 3752/698 600/759
-f 486/760 611/761 3746/704 604/762
-f 486/760 604/762 3759/763 597/764
-f 487/765 600/759 3752/698 3751/717
-f 487/765 3751/717 3750/714 599/766
-f 488/767 595/768 671/769 552/770
-f 488/767 552/770 688/771 594/772
-f 489/773 599/766 3750/714 3749/713
-f 489/773 3749/713 3748/706 598/774
-f 490/775 3676/776 676/777 571/778
-f 491/779 557/780 671/769 595/768
-f 492/781 3743/782 3744/783 603/784
-f 492/781 603/784 685/657 606/656
-f 492/781 606/656 712/663 602/785
-f 492/781 602/785 3742/786 3743/782
-f 523/787 651/788 655/789 3725/790
-f 496/791 610/792 3678/761 3675/760
-f 493/793 607/684 685/657 603/784
-f 493/793 603/784 3744/783 3745/794
-f 494/795 3690/796 3760/763 3766/762
-f 494/795 3766/762 686/704 608/703
-f 495/797 605/798 687/741 609/740
-f 536/799 530/800 653/801 3721/802
-f 482/803 3685/773 3686/774 592/804
-f 497/805 598/774 3748/706 3747/705
-f 497/805 3747/705 3746/704 611/761
-f 498/806 612/807 713/808 661/809
-f 498/806 661/809 712/663 543/662
-f 498/806 543/662 689/661 616/810
-f 498/806 616/810 694/811 612/807
-f 499/812 615/813 696/814 619/815
-f 499/812 619/815 691/672 546/671
-f 499/812 546/671 692/670 618/694
-f 499/812 618/694 697/693 615/813
-f 500/816 614/817 695/818 620/819
-f 500/816 620/819 690/678 545/677
-f 500/816 545/677 691/672 619/815
-f 500/816 619/815 696/814 614/817
-f 501/820 613/821 694/811 616/810
-f 501/820 616/810 689/661 544/681
-f 501/820 544/681 690/678 620/819
-f 501/820 620/819 695/818 613/821
-f 502/822 662/823 713/808 612/807
-f 502/822 612/807 694/811 621/824
-f 535/825 531/826 3733/827 3740/828
-f 503/829 624/830 696/814 615/813
-f 503/829 615/813 697/693 623/831
-f 483/832 3679/765 3680/766 593/833
-f 504/834 625/835 695/818 614/817
-f 504/834 614/817 696/814 624/830
-f 481/836 3668/755 3669/757 590/837
-f 505/838 621/824 694/811 613/821
-f 505/838 613/821 695/818 625/835
-f 506/839 629/840 702/841 632/842
-f 521/843 648/844 657/845 524/846
-f 506/839 631/847 703/848 629/840
-f 507/849 626/850 714/851 663/852
-f 507/849 633/853 700/854 626/850
-f 508/855 630/856 703/848 631/847
-f 508/855 3651/857 3757/858 630/856
-f 509/859 627/860 700/854 633/853
-f 495/797 3693/861 3683/862 605/798
-f 509/859 635/863 701/864 627/860
-f 510/865 628/866 701/864 635/863
-f 522/867 650/868 654/869 529/870
-f 479/871 590/837 3669/757 3673/758
-f 510/865 632/842 702/841 628/866
-f 511/872 575/721 706/720 642/873
-f 511/872 642/873 710/874 639/875
-f 511/872 639/875 711/753 641/752
-f 511/872 641/752 707/722 575/721
-f 512/876 574/730 705/729 643/877
-f 512/876 643/877 709/878 638/879
-f 512/876 638/879 710/874 642/873
-f 512/876 642/873 706/720 574/730
-f 513/880 573/736 704/735 640/881
-f 513/880 640/881 708/882 637/883
-f 513/880 637/883 709/878 643/877
-f 513/880 643/877 705/729 573/736
-f 514/884 636/885 715/886 664/887
-f 514/884 644/888 708/882 636/885
-f 515/889 639/875 710/874 646/890
-f 522/867 529/870 655/789 651/788
-f 483/832 591/891 3674/759 3679/765
-f 515/889 645/892 711/753 639/875
-f 516/893 638/879 709/878 647/894
-f 516/893 646/890 710/874 638/879
-f 517/895 637/883 708/882 644/888
-f 517/895 647/894 709/878 637/883
-f 518/896 561/695 692/670 553/669
-f 518/896 553/669 675/668 668/897
-f 535/825 660/898 3728/899 531/826
-f 480/900 592/804 3686/774 3696/805
-f 482/803 593/833 3680/766 3685/773
-f 521/843 524/846 3670/901 3663/902
-f 495/797 3695/903 3687/904 3693/861
-f 520/905 537/906 654/869 650/868
-f 3717/846 3780/856 3758/858 3672/901
-f 3717/846 3718/845 3779/848 3780/856
-f 525/907 3778/840 3779/848 3718/845
-f 525/907 656/908 3777/841 3778/840
-f 526/802 659/909 3771/851 3722/910
-f 526/802 3723/801 3781/911 659/909
-f 527/790 3776/866 3777/841 656/908
-f 527/790 3726/789 3775/864 3776/866
-f 528/912 617/913 693/914 652/915
-f 528/912 594/772 688/771 617/913
-f 3730/870 3774/860 3775/864 3726/789
-f 3730/870 3731/869 3773/854 3774/860
-f 3732/916 634/917 699/918 3724/919
-f 519/920 649/921 3720/908 3719/907
-f 3738/922 652/915 693/914 622/923
-f 532/924 658/925 3769/926 3768/927
-f 532/924 3768/927 3742/786 602/785
-f 532/924 602/785 712/663 661/809
-f 532/924 661/809 713/808 658/925
-f 533/928 3770/929 3769/926 658/925
-f 533/928 658/925 713/808 662/823
-f 534/930 3787/909 3782/911 3735/931
-f 479/871 3673/758 3674/759 591/891
-f 536/799 3721/802 666/910 665/932
-f 534/930 663/852 714/851 3787/909
-f 535/825 664/887 715/886 660/898
-f 496/791 3675/760 3677/764 3689/933
-f 3741/906 3772/850 3773/854 3731/869
-f 3741/906 3722/910 3771/851 3772/850
-f 538/934 581/723 707/722 588/751
-f 523/787 3725/790 3720/908 649/921
-f 538/934 670/935 684/724 581/723
-f 539/936 623/831 697/693 667/692
-f 481/836 589/937 3671/756 3668/755
-f 520/905 665/932 666/910 537/906
-f 540/938 668/897 675/668 558/686
-f 541/939 669/754 711/753 645/892
-f 480/900 3696/805 3678/761 610/792
-f 519/920 3719/907 657/845 648/844
-f 542/940 585/746 684/724 670/935
-f 716/941 1015/942 1164/943 1009/944
-f 716/941 1009/944 1163/945 1016/946
-f 778/947 963/948 4044/949 4045/950
-f 717/951 1014/952 1165/953 1010/954
-f 717/951 1010/954 1164/943 1015/942
-f 778/947 4045/950 4042/955 962/956
-f 718/957 1013/958 1166/959 1011/960
-f 718/957 1011/960 1165/953 1014/952
-f 776/961 4041/962 4039/963 960/964
-f 845/965 742/966 912/967 1075/968
-f 845/965 1076/969 911/970 742/966
-f 847/971 848/972 909/973 740/974
-f 844/975 3820/976 913/977 849/978
-f 3808/979 1062/980 900/981 836/982
-f 846/983 1077/984 910/985 741/986
-f 720/987 858/988 1154/989 855/990
-f 720/987 855/990 1153/991 857/992
-f 842/993 837/994 1069/995 1073/996
-f 721/997 860/998 1159/999 1003/1000
-f 721/997 1003/1000 1158/1001 859/1002
-f 722/1003 862/1004 1157/1005 852/1006
-f 722/1003 852/1006 1156/1007 861/1008
-f 723/1009 863/1010 1155/1011 854/1012
-f 723/1009 854/1012 1154/1013 858/1014
-f 843/1015 838/1016 902/1017 1074/1018
-f 724/1019 859/1002 1158/1001 1002/1020
-f 724/1019 1002/1020 1157/1005 862/1004
-f 725/1021 870/1022 1080/1023 868/1024
-f 725/1021 868/1024 1081/1025 869/1026
-f 725/1021 869/1026 1079/1027 867/1028
-f 725/1021 867/1028 1078/1029 870/1022
-f 726/1030 872/1031 1082/1032 871/1033
-f 726/1030 871/1033 1083/1034 887/1035
-f 726/1030 887/1035 1081/1025 868/1024
-f 726/1030 868/1024 1080/1023 872/1031
-f 727/1036 875/1037 1085/1038 874/1039
-f 727/1036 874/1039 1086/1040 888/1041
-f 727/1036 888/1041 1083/1034 871/1033
-f 727/1036 871/1033 1082/1032 875/1037
-f 728/1042 877/1043 1087/1044 876/1045
-f 728/1042 876/1045 1088/1046 889/1047
-f 728/1042 889/1047 1086/1040 874/1039
-f 728/1042 874/1039 1085/1038 877/1043
-f 729/1048 879/1049 1089/1050 878/1051
-f 729/1048 878/1051 1090/1052 890/1053
-f 729/1048 890/1053 1088/1046 876/1045
-f 729/1048 876/1045 1087/1044 879/1049
-f 847/971 740/974 910/985 1077/984
-f 731/1054 880/1055 1091/1056 891/1057
-f 731/1054 891/1057 1151/1058 1001/1059
-f 731/1054 1001/1059 4024/1060 991/1061
-f 731/1054 991/1061 1092/1062 880/1055
-f 732/1063 875/1037 1082/1032 872/1031
-f 732/1063 872/1031 1080/1023 882/1064
-f 732/1063 882/1064 1084/1065 873/1066
-f 732/1063 873/1066 1085/1038 875/1037
-f 733/1067 879/1049 1087/1044 877/1043
-f 733/1067 877/1043 1085/1038 873/1066
-f 733/1067 873/1066 1084/1065 883/1068
-f 733/1067 883/1068 1089/1050 879/1049
-f 734/1069 885/1070 1084/1065 882/1064
-f 734/1069 882/1064 1080/1023 870/1022
-f 734/1069 870/1022 1078/1029 886/1071
-f 734/1069 886/1071 1093/1072 885/1070
-f 735/1073 886/1071 1078/1029 867/1028
-f 735/1073 867/1028 1079/1027 892/1074
-f 735/1073 892/1074 1094/1075 881/1076
-f 735/1073 881/1076 1093/1072 886/1071
-f 3808/979 836/982 3811/1077 898/1078
-f 737/1079 977/1080 1134/1081 893/1082
-f 737/1079 893/1082 1096/1083 897/1084
-f 737/1079 897/1084 1097/1085 894/1086
-f 737/1079 894/1086 1135/1087 977/1080
-f 738/1088 3809/1089 4030/1062 4031/1061
-f 739/1090 1066/1091 4034/1092 1041/1093
-f 739/1090 1041/1093 4072/1094 1065/1095
-f 3813/1096 3814/1097 1107/1098 914/1099
-f 3813/1096 914/1099 1108/1100 3815/1101
-f 3816/1102 3815/1101 1108/1100 915/1103
-f 3816/1102 915/1103 1109/1104 3817/1105
-f 3818/1106 3817/1105 1109/1104 916/1107
-f 3818/1106 916/1107 1110/1108 3819/1109
-f 743/1110 3819/1109 1110/1108 917/1111
-f 743/1110 917/1111 1111/1112 3821/1113
-f 745/1114 1061/1115 3954/1046 3955/1053
-f 840/1116 833/1117 1067/1118 1071/1119
-f 745/1114 3955/1053 3956/1052 1060/1120
-f 847/971 1077/984 1064/1121 834/1122
-f 746/1123 920/1124 3950/1034 3951/1041
-f 746/1123 3951/1041 3952/1040 1064/1121
-f 831/1125 3901/1126 900/981 1062/980
-f 738/1088 4031/1061 1142/1060 3850/1127
-f 747/1128 1025/1129 3948/1027 3947/1026
-f 747/1128 3947/1026 3946/1025 919/1130
-f 748/1131 1063/1132 1100/1133 903/1134
-f 748/1131 903/1134 1101/1135 3828/1136
-f 749/1137 1040/1138 4030/1062 3809/1089
-f 832/1139 1060/1120 3956/1052 4069/1140
-f 749/1137 899/1141 1169/1142 1040/1138
-f 750/1143 864/1144 1152/1145 4051/1146
-f 750/1143 4051/1146 1159/999 860/998
-f 831/1125 3823/1147 918/1148 3901/1126
-f 3933/1149 3826/1150 896/1151 1070/1152
-f 751/1153 861/1008 1156/1007 853/1154
-f 751/1153 853/1154 1155/1011 863/1010
-f 775/1155 958/1156 1127/1157
-f 775/1155 1120/1158 958/1156
-f 752/1159 857/992 1153/991 856/1160
-f 752/1159 856/1160 1152/1145 864/1144
-f 775/1155 957/1161 1126/1162
-f 781/1163 966/1164 1145/1165 4033/1166
-f 783/1167 4038/1168 4036/1169 967/1170
-f 775/1155 1127/1157 957/1161
-f 776/961 961/1171 4040/1172 4041/962
-f 775/1155 956/1173 1125/1174
-f 775/1155 1126/1162 956/1173
-f 779/1175 964/1176 1147/1177 4046/1178
-f 780/1179 4026/1180 1147/1177 964/1176
-f 779/1175 4046/1178 4044/949 963/948
-f 775/1155 955/1181 1124/1182
-f 775/1155 1125/1174 955/1181
-f 775/1155 954/1183 1123/1184
-f 775/1155 1124/1182 954/1183
-f 775/1155 953/1185 1122/1186
-f 754/1187 3805/1188 3797/1189 866/1190
-f 781/1163 4033/1166 4025/1191 965/1192
-f 736/1193 3807/1194 3803/1195 923/1196
-f 775/1155 1123/1184 953/1185
-f 775/1155 4008/1197 1121/1198
-f 775/1155 1122/1186 4008/1197
-f 757/1199 3835/1200 3806/1201 922/1202
-f 775/1155 951/1203 1120/1158
-f 758/1204 3796/1205 3798/1206 925/1207
-f 775/1155 1121/1198 951/1203
-f 759/1208 935/1209 1118/1210 945/1211
-f 759/1208 945/1211 1117/1212 938/1213
-f 3872/1214 4019/1215 4006/1216 3859/1217
-f 753/1218 3833/1219 3800/1220 865/1221
-f 760/1222 930/1223 1112/1224 928/1225
-f 760/1222 928/1225 3984/1226 931/1227
-f 761/1228 927/1229 1113/1230 3985/1231
-f 761/1228 3985/1231 3986/1232 929/1233
-f 3876/1234 3854/1235 4015/1236 4018/1237
-f 762/1238 931/1227 3984/1226 933/1239
-f 762/1238 933/1239 1114/1240 934/1241
-f 763/1242 941/1243 1116/1244 939/1245
-f 763/1242 939/1245 3989/1246 944/1247
-f 3879/1248 3865/1249 4011/1250 4014/1251
-f 3882/1252 3869/1253 4007/1254 4010/1255
-f 764/1256 934/1241 1114/1240 936/1257
-f 764/1256 936/1257 1115/1258 937/1259
-f 765/1260 947/1261 3987/1262 3988/1263
-f 765/1260 3988/1263 1113/1230 927/1229
-f 3868/1264 3860/1265 4004/1266 952/1267
-f 766/1268 937/1259 1115/1258 3992/1269
-f 766/1268 3992/1269 3991/1270 940/1271
-f 767/1272 929/1233 3986/1232 950/1273
-f 767/1272 950/1273 1119/1274 932/1275
-f 3868/1264 952/1267 4007/1276 3869/1277
-f 3863/1278 4012/1279 4011/1250 3865/1249
-f 754/1187 922/1202 3806/1201 3805/1188
-f 768/1280 940/1271 3991/1270 942/1281
-f 768/1280 942/1281 3993/1282 943/1283
-f 769/1284 932/1275 1119/1274 948/1285
-f 769/1284 948/1285 1118/1210 935/1209
-f 3872/1214 3873/1286 4017/1287 4019/1215
-f 770/1288 943/1283 3993/1282 3999/1289
-f 770/1288 3999/1289 3998/1290 946/1291
-f 771/1292 938/1213 1117/1212 3994/1293
-f 771/1292 3994/1293 1116/1244 941/1243
-f 3858/1294 3859/1217 4006/1216 4005/1295
-f 772/1296 946/1297 3998/1298 4002/1299
-f 772/1296 4002/1299 4001/1300 949/1301
-f 773/1302 944/1247 3989/1246 3990/1303
-f 773/1302 3990/1303 3987/1262 947/1261
-f 3863/1278 3864/1304 4009/1305 4012/1279
-f 774/1306 949/1301 4001/1300 4003/1307
-f 774/1306 4003/1307 1112/1224 930/1223
-f 3879/1248 4014/1251 4013/1308 3853/1309
-f 756/1310 923/1196 3803/1195 3802/1311
-f 3852/1312 4016/1313 4015/1236 3854/1235
-f 757/1199 924/1314 3804/1315 3835/1200
-f 3882/1252 4010/1255 4009/1305 3864/1304
-f 3852/1312 3853/1309 4013/1308 4016/1313
-f 758/1204 866/1190 3797/1189 3796/1205
-f 756/1310 3802/1311 3804/1315 924/1314
-f 3858/1294 4005/1295 4004/1266 3860/1265
-f 3876/1234 4018/1237 4017/1287 3873/1286
-f 755/1316 865/1221 3800/1220 3799/1317
-f 753/1218 926/1318 3834/1319 3833/1219
-f 730/1320 925/1207 3798/1206 3836/1321
-f 736/1193 921/1322 3801/1323 3807/1194
-f 844/975 1075/968 912/967 3820/976
-f 846/983 741/986 911/970 1076/969
-f 719/1324 3944/1325 3943/1326
-f 719/1324 3945/1327 3944/1325
-f 719/1324 3942/1328 3941/1329
-f 719/1324 3943/1326 3942/1328
-f 719/1324 3940/1330 3939/1331
-f 719/1324 3941/1329 3940/1330
-f 719/1324 3938/1332 3937/1333
-f 719/1324 3939/1331 3938/1332
-f 719/1324 3936/1334 3935/1335
-f 719/1324 3937/1333 3936/1334
-f 719/1324 4048/1336 4047/1337
-f 719/1324 3935/1335 4048/1336
-f 719/1324 4050/1338 4049/1339
-f 719/1324 4047/1337 4050/1338
-f 719/1324 1004/1340 3945/1327
-f 719/1324 4049/1339 1004/1340
-f 812/1341 1035/1342 1022/1343 3929/1344
-f 814/1345 1023/1346 1030/1347 3917/1348
-f 812/1341 3929/1344 1029/1349 1036/1350
-f 827/1351 3927/1352 1022/1343 1035/1342
-f 730/1320 3836/1321 3834/1319 926/1318
-f 830/1353 1034/1354 1024/1355 3921/1356
-f 828/1357 1021/1358 1027/1359 3925/1360
-f 814/1345 3917/1348 1031/1361 1037/1362
-f 830/1353 3921/1356 1026/1363 1056/1364
-f 755/1316 3799/1317 3801/1323 921/1322
-f 813/1365 1036/1350 1029/1349 3914/1366
-f 784/1367 3963/1368 3962/1369 969/1370
-f 784/1367 969/1370 1133/1371 976/1372
-f 784/1367 976/1372 1134/1081 970/1373
-f 784/1367 970/1373 3964/1374 3963/1368
-f 785/1375 904/1376 3964/1374 970/1373
-f 785/1375 970/1373 1134/1081 977/1080
-f 785/1375 977/1080 1135/1087 971/1377
-f 785/1375 971/1377 1102/1378 904/1376
-f 786/1379 905/1380 1102/1378 971/1377
-f 786/1379 971/1377 1135/1087 978/1381
-f 786/1379 978/1381 1136/1382 972/1383
-f 786/1379 972/1383 1103/1384 905/1380
-f 787/1385 906/1386 1103/1387 972/1388
-f 787/1385 972/1388 1136/1389 979/1390
-f 787/1385 979/1390 1137/1391 973/1392
-f 787/1385 973/1392 1104/1393 906/1386
-f 788/1394 907/1395 1104/1393 973/1392
-f 788/1394 973/1392 1137/1391 980/1396
-f 788/1394 980/1396 1138/1397 974/1398
-f 788/1394 974/1398 3972/1399 907/1395
-f 789/1400 908/1401 3972/1399 974/1398
-f 789/1400 974/1398 1138/1397 981/1402
-f 789/1400 981/1402 1139/1403 975/1404
-f 789/1400 975/1404 1105/1405 908/1401
-f 790/1406 998/1407 1140/1408 984/1409
-f 790/1406 984/1409 1132/1410 968/1411
-f 790/1406 968/1411 1099/1412 985/1413
-f 790/1406 985/1413 1148/1414 998/1407
-f 791/1415 985/1413 1099/1412 993/1416
-f 791/1415 993/1416 4029/1417 986/1418
-f 791/1415 986/1418 1149/1419 997/1420
-f 791/1415 997/1420 1148/1414 985/1413
-f 792/1421 986/1418 4029/1417 990/1422
-f 792/1421 990/1422 1105/1405 987/1423
-f 792/1421 987/1423 1150/1424 996/1425
-f 792/1421 996/1425 1149/1419 986/1418
-f 793/1426 3903/1427 3974/1428 4028/1429
-f 793/1426 4028/1429 1141/1430 3902/1431
-f 794/1432 902/1017 1106/1433 3973/1434
-f 794/1432 3973/1434 3974/1428 3903/1427
-f 795/1435 975/1404 1139/1403 983/1436
-f 795/1435 983/1436 1143/1437 995/1438
-f 795/1435 995/1438 1150/1424 987/1423
-f 795/1435 987/1423 1105/1405 975/1404
-f 816/1439 1037/1362 1031/1361 3919/1440
-f 828/1357 3925/1360 1028/1441 1057/1442
-f 816/1439 3919/1440 1024/1355 1034/1354
-f 813/1365 3914/1366 1030/1347 1023/1346
-f 829/1443 1056/1364 1026/1363 3923/1444
-f 829/1443 3923/1444 1027/1359 1021/1358
-f 827/1351 1057/1442 1028/1441 3927/1352
-f 796/1445 1000/1446 1093/1072 881/1076
-f 796/1445 881/1076 1094/1075 988/1447
-f 796/1445 988/1447 4024/1060 1001/1059
-f 796/1445 1001/1059 1151/1058 1000/1446
-f 797/1448 1016/946 1163/945 1008/1449
-f 797/1448 1008/1449 1162/1450 1017/1451
-f 783/1167 960/964 4039/963 4038/1168
-f 798/1452 1017/1451 1162/1450 1007/1453
-f 798/1452 1007/1453 1161/1454 1018/1455
-f 782/1456 4037/1457 1145/1165 966/1164
-f 799/1458 1018/1455 1161/1454 1006/1459
-f 799/1458 1006/1459 1160/1460 1019/1461
-f 780/1179 965/1462 4025/1463 4026/1180
-f 800/1464 1019/1461 1160/1460 1005/1465
-f 800/1464 1005/1465 1167/1466 1020/1467
-f 777/1468 4043/1469 4040/1172 961/1171
-f 801/1470 1020/1467 1167/1466 1012/1471
-f 801/1470 1012/1471 1166/959 1013/958
-f 777/1468 962/956 4042/955 4043/1469
-f 782/1456 967/1170 4036/1169 4037/1457
-f 802/1472 3916/1473 4062/1474 4063/1475
-f 802/1472 4063/1475 4064/1476 3915/1477
-f 3892/1478 3874/1479 3875/1480 3893/1481
-f 803/1482 3915/1477 4064/1476 4065/1483
-f 803/1482 4065/1483 4066/1484 3918/1485
-f 3888/1486 3887/1487 3862/1488 3866/1489
-f 804/1490 3918/1485 4066/1484 4067/1491
-f 804/1490 4067/1491 4052/1492 3920/1493
-f 3885/1494 3861/1495 3862/1488 3887/1487
-f 805/1496 3920/1493 4052/1492 4053/1497
-f 805/1496 4053/1497 4054/1498 3922/1499
-f 3900/1500 3855/1501 3857/1502 3886/1503
-f 806/1504 3922/1499 4054/1498 4055/1505
-f 806/1504 4055/1505 4056/1506 3924/1507
-f 3900/1500 3899/1508 3856/1509 3855/1501
-f 3885/1494 3886/1503 3857/1502 3861/1495
-f 807/1510 3924/1511 4056/1512 4057/1513
-f 807/1510 4057/1513 4058/1514 3926/1515
-f 3896/1516 3880/1517 3881/1518 3897/1519
-f 808/1520 3926/1515 4058/1514 4059/1521
-f 808/1520 4059/1521 4060/1522 3928/1523
-f 3898/1524 3883/1525 3856/1509 3899/1508
-f 809/1526 3928/1523 4060/1522 4061/1527
-f 809/1526 4061/1527 4062/1474 3916/1473
-f 3896/1516 3895/1528 3878/1529 3880/1517
-f 810/1530 891/1057 1091/1056 884/1531
-f 810/1530 884/1531 1084/1065 885/1070
-f 810/1530 885/1070 1093/1072 1000/1446
-f 810/1530 1000/1446 1151/1058 891/1057
-f 811/1532 1033/1533 1091/1056 880/1055
-f 811/1532 880/1055 1092/1062 4073/1138
-f 811/1532 4073/1138 4070/1142 1032/1534
-f 811/1532 1032/1534 1171/1535 1033/1533
-f 3894/1536 3877/1537 3878/1529 3895/1528
-f 812/1341 1036/1350 1099/1412 968/1411
-f 812/1341 968/1411 1132/1410 1035/1342
-f 813/1365 4074/1538 1099/1412 1036/1350
-f 3892/1478 3891/1539 3871/1540 3874/1479
-f 813/1365 1023/1346 1168/1541 4074/1538
-f 814/1345 1039/1542 1168/1541 1023/1346
-f 3894/1536 3893/1481 3875/1480 3877/1537
-f 814/1345 1037/1362 3962/1369 1039/1542
-f 815/1543 919/1130 3946/1025 3949/1035
-f 815/1543 3949/1035 3950/1034 920/1124
-f 3831/1544 898/1078 3811/1077 3810/1545
-f 3824/1546 3829/1547 896/1151 3826/1150
-f 834/1122 3953/1047 3954/1046 1061/1115
-f 816/1439 1034/1354 1133/1371 969/1370
-f 816/1439 969/1370 3962/1369 1037/1362
-f 3890/1548 3870/1549 3871/1540 3891/1539
-f 817/1550 878/1051 1089/1050 1042/1551
-f 817/1550 1042/1551 1171/1535 1032/1534
-f 817/1550 1032/1534 4070/1142 1038/1140
-f 817/1550 1038/1140 1090/1052 878/1051
-f 818/1552 976/1372 1133/1371 1044/1553
-f 818/1552 1044/1553 1130/1554 1047/1555
-f 818/1552 1047/1555 1096/1083 893/1082
-f 818/1552 893/1082 1134/1081 976/1372
-f 819/1556 978/1381 1135/1087 894/1086
-f 819/1556 894/1086 1097/1085 1048/1557
-f 819/1556 1048/1557 1131/1558 1045/1559
-f 819/1556 1045/1559 1136/1382 978/1381
-f 820/1560 979/1390 1136/1389 1045/1561
-f 820/1560 1045/1561 1131/1562 1049/1563
-f 820/1560 1049/1563 1098/1564 895/1565
-f 820/1560 895/1565 1137/1391 979/1390
-f 821/1566 980/1396 1137/1391 895/1565
-f 821/1566 895/1565 1098/1564 1050/1567
-f 821/1566 1050/1567 1128/1568 1046/1569
-f 821/1566 1046/1569 1138/1397 980/1396
-f 822/1570 981/1402 1138/1397 1046/1569
-f 822/1570 1046/1569 1128/1568 959/1571
-f 822/1570 959/1571 1095/1572 1051/1573
-f 822/1570 1051/1573 1139/1403 981/1402
-f 823/1574 1043/1575 1132/1410 984/1409
-f 823/1574 984/1409 1140/1408 999/1576
-f 823/1574 999/1576 4027/1577 1053/1578
-f 823/1574 1053/1578 1129/1579 1043/1575
-f 824/1580 982/1581 1144/1582 1054/1583
-f 824/1580 1054/1583 1129/1579 1053/1578
-f 824/1580 1053/1578 4027/1577 989/1584
-f 824/1580 989/1584 1146/1585 982/1581
-f 825/1586 1052/1587 1095/1572 1055/1588
-f 825/1586 1055/1588 1144/1582 982/1581
-f 825/1586 982/1581 1146/1585 992/1589
-f 825/1586 992/1589 4032/1590 1052/1587
-f 826/1591 994/1592 1143/1437 983/1436
-f 826/1591 983/1436 1139/1403 1051/1573
-f 826/1591 1051/1573 1095/1572 1052/1587
-f 826/1591 1052/1587 4032/1590 994/1592
-f 827/1351 1035/1342 1132/1410 1043/1575
-f 827/1351 1043/1575 1129/1579 1057/1442
-f 3890/1548 3889/1593 3867/1594 3870/1549
-f 828/1357 1058/1595 1170/1596 1021/1358
-f 828/1357 1057/1442 1129/1579 1058/1595
-f 829/1443 1059/1597 1130/1554 1056/1364
-f 829/1443 1021/1358 1170/1596 1059/1597
-f 3898/1524 3897/1519 3881/1518 3883/1525
-f 3888/1486 3866/1489 3867/1594 3889/1593
-f 830/1353 1056/1364 1130/1554 1044/1553
-f 830/1353 1044/1553 1133/1371 1034/1354
-f 842/993 1072/1598 1068/1599 837/994
-f 846/983 746/1123 1064/1121 1077/984
-f 744/1600 901/1601 3957/1075 3958/1074
-f 847/971 834/1122 1061/1115 848/972
-f 3884/1602 839/1603 3830/1604 3825/1605
-f 833/1117 3828/1136 1101/1135 3965/1606
-f 833/1117 3965/1606 3966/1607 1067/1118
-f 834/1122 1064/1121 3952/1040 3953/1047
-f 3831/1544 3810/1545 3812/1608 3832/1609
-f 832/1139 4069/1140 1169/1142 899/1141
-f 835/1610 1067/1118 3966/1607 3967/1611
-f 835/1610 3967/1611 3968/1612 1068/1599
-f 841/1613 835/1610 1068/1599 1072/1598
-f 3824/1546 3825/1605 3830/1604 3829/1547
-f 3931/1614 3902/1431 1141/1430 4035/1615
-f 3931/1614 4035/1615 4034/1092 1066/1091
-f 837/994 1068/1599 3968/1612 3969/1616
-f 837/994 3969/1616 3970/1617 1069/995
-f 3930/1618 3850/1127 1142/1060 4023/1447
-f 3884/1602 3832/1609 3812/1608 839/1603
-f 3934/1619 3847/1620 3848/1621 3851/1622
-f 844/975 747/1128 919/1130 1075/968
-f 845/965 815/1543 920/1124 1076/969
-f 838/1016 1069/995 3970/1617 3971/1623
-f 838/1016 3971/1623 1106/1433 902/1017
-f 3932/1624 4071/1625 1100/1133 1063/1132
-f 3932/1624 1065/1095 4072/1094 4071/1625
-f 840/1116 3976/1626 3975/1627 3827/1628
-f 840/1116 1071/1119 3977/1629 3976/1626
-f 841/1613 3978/1630 3977/1629 1071/1119
-f 841/1613 1072/1598 3979/1631 3978/1630
-f 842/993 3980/1632 3979/1631 1072/1598
-f 842/993 1073/996 3981/1633 3980/1632
-f 843/1015 3982/1634 3981/1633 1073/996
-f 843/1015 1074/1018 3983/1635 3982/1634
-f 840/1116 3827/1628 3828/1136 833/1117
-f 3930/1618 4023/1447 3957/1075 901/1601
-f 744/1600 3958/1074 3948/1027 1025/1129
-f 843/1015 1073/996 1069/995 838/1016
-f 846/983 1076/969 920/1124 746/1123
-f 3822/1636 3851/1622 3848/1621 3904/1637
-f 841/1613 1071/1119 1067/1118 835/1610
-f 844/975 849/978 1025/1129 747/1128
-f 3933/1149 1070/1152 1107/1638 3814/1639
-f 3934/1619 3821/1640 1111/1641 3847/1620
-f 3822/1636 3904/1637 918/1148 3823/1147
-f 845/965 1075/968 919/1130 815/1543
-f 850/1642 884/1531 1091/1056 1033/1533
-f 850/1642 1033/1533 1171/1535 1042/1551
-f 850/1642 1042/1551 1089/1050 883/1068
-f 850/1642 883/1068 1084/1065 884/1531
-f 1172/1643 1271/1644 1369/1645 1239/1646
-f 1172/1643 1239/1646 1362/1647 1240/1648
-f 1172/1643 1240/1648 1361/1649 1237/1650
-f 1172/1643 1237/1650 1370/1651 1271/1644
-f 1173/1652 1244/1653 1371/1654 1241/1655
-f 1173/1652 1241/1655 1363/1656 1243/1657
-f 1173/1652 1243/1657 1362/1647 1239/1646
-f 1173/1652 1239/1646 1369/1645 1244/1653
-f 1174/1658 1248/1659 1364/1660 1246/1661
-f 1174/1658 1246/1661 1413/1662 1247/1663
-f 1174/1658 1247/1663 1412/1664 1242/1665
-f 1174/1658 1242/1665 1363/1656 1248/1659
-f 1175/1666 1249/1667 1372/1668 1245/1669
-f 1175/1666 1245/1669 1364/1660 1248/1659
-f 1175/1666 1248/1659 1363/1656 1241/1655
-f 1175/1666 1241/1655 1371/1654 1249/1667
-f 1176/1670 1253/1671 1365/1672 1251/1673
-f 1176/1670 1251/1673 1414/1674 1252/1675
-f 1176/1670 1252/1675 1413/1662 1246/1661
-f 1176/1670 1246/1661 1364/1660 1253/1671
-f 1177/1676 1254/1677 1373/1678 1250/1679
-f 1177/1676 1250/1679 1365/1672 1253/1671
-f 1177/1676 1253/1671 1364/1660 1245/1669
-f 1177/1676 1245/1669 1372/1668 1254/1677
-f 1178/1680 1256/1681 1386/1682 1290/1683
-f 1178/1680 1290/1683 1387/1684 1309/1685
-f 1179/1686 1258/1687 1374/1688 1255/1689
-f 1179/1686 1255/1689 1366/1690 1257/1691
-f 1179/1686 1257/1691 1365/1692 1250/1693
-f 1179/1686 1250/1693 1373/1694 1258/1687
-f 1180/1695 1262/1696 1389/1697 1293/1698
-f 1180/1695 1293/1698 4160/1699 1308/1700
-f 1181/1701 1264/1702 1375/1703 1259/1704
-f 1181/1701 1259/1704 1367/1705 1263/1706
-f 1181/1701 1263/1706 1366/1690 1255/1689
-f 1181/1701 1255/1689 1374/1688 1264/1702
-f 1182/1707 1260/1708 1416/1709 1289/1710
-f 1182/1707 1289/1710 1386/1711 1256/1712
-f 1183/1713 1268/1714 1376/1715 1265/1716
-f 1183/1713 1265/1716 1368/1717 1267/1718
-f 1183/1713 1267/1718 1367/1705 1259/1704
-f 1183/1713 1259/1704 1375/1703 1268/1714
-f 1184/1719 1261/1720 1388/1721 1292/1722
-f 1184/1719 1292/1722 1389/1697 1262/1696
-f 1185/1723 1270/1724 1370/1725 1237/1726
-f 1185/1723 1237/1726 1361/1727 1269/1728
-f 1185/1723 1269/1728 1368/1717 1265/1716
-f 1185/1723 1265/1716 1376/1715 1270/1724
-f 1186/1729 1272/1730 1380/1731 1285/1732
-f 1186/1729 1285/1732 1379/1733 1278/1734
-f 4111/1735 1275/1736 4142/1737 4141/1738
-f 4102/1739 1274/1740 4140/1741 4139/1742
-f 1187/1743 1273/1744 1377/1745 1282/1746
-f 1187/1743 1282/1746 1384/1747 4103/1748
-f 1193/1749 1284/1750 1378/1751 1279/1752
-f 4112/1753 4129/1754 4128/1755 4107/1756
-f 4110/1757 4104/1758 4138/1759 4137/1760
-f 1188/1761 4143/1762 4142/1737 1275/1736
-f 4105/1763 4106/1764 1382/1765 1280/1766
-f 4105/1763 1280/1766 1383/1767 1276/1768
-f 1189/1769 1277/1770 1381/1771 1286/1772
-f 1189/1769 1286/1772 1380/1731 1272/1730
-f 1203/1773 4097/1774 4094/1775 1305/1776
-f 1231/1777 1221/1778 1334/1779 1356/1780
-f 1190/1781 1283/1782 1377/1745 1273/1744
-f 4111/1735 4141/1738 4140/1741 1274/1740
-f 1191/1783 4103/1748 1384/1747 1281/1784
-f 1191/1783 1281/1784 1382/1785 4106/1786
-f 4108/1787 4131/1788 4130/1789 4109/1790
-f 1203/1773 1303/1791 4098/1792 4097/1774
-f 1192/1793 1276/1768 1383/1767 1287/1794
-f 1192/1793 1287/1794 1381/1771 1277/1770
-f 4099/1795 4100/1796 4134/1797 4133/1798
-f 1201/1799 1302/1800 4096/1801 4095/1802
-f 1193/1749 1278/1734 1379/1733 1284/1750
-f 1229/1803 1215/1804 1330/1805 1219/1806
-f 1229/1803 1219/1806 4096/1801 1302/1800
-f 1190/1781 1279/1752 1378/1751 1283/1782
-f 1202/1807 1301/1808 4090/1809 4114/1810
-f 1230/1811 1233/1812 1359/1813 1355/1814
-f 4099/1795 4133/1798 4132/1815 4101/1816
-f 4113/1817 4392/1818 4136/1819 4135/1820
-f 1231/1777 1357/1821 1335/1822 1221/1778
-f 4113/1817 4135/1820 4134/1797 4100/1796
-f 1232/1823 1234/1824 1358/1825 1217/1826
-f 1204/1827 4092/1828 4093/1829 4115/1830
-f 4108/1787 4101/1816 4132/1815 4131/1788
-f 1229/1803 1355/1814 1359/1813 1215/1804
-f 4110/1757 4137/1760 4136/1819 4392/1818
-f 4112/1753 4109/1790 4130/1789 4129/1754
-f 4102/1739 4139/1742 4138/1759 4104/1758
-f 1188/1761 4107/1756 4128/1755 4143/1762
-f 1201/1799 4089/1831 4090/1809 1301/1808
-f 1204/1827 1305/1776 4094/1775 4092/1828
-f 1202/1807 4114/1810 4098/1792 1303/1791
-f 1195/1832 1295/1833 4162/1834 1288/1835
-f 1195/1832 1288/1835 1385/1836 1294/1837
-f 1195/1832 1294/1837 1361/1727 1238/1838
-f 1195/1832 1238/1838 1411/1839 1295/1833
-f 1196/1840 1297/1841 4163/1842 4164/1843
-f 1196/1840 4164/1843 4165/1844 1296/1845
-f 1196/1840 1296/1845 1414/1846 1251/1847
-f 1196/1840 1251/1847 1365/1692 1297/1841
-f 1197/1848 1298/1849 4167/1850 4166/1851
-f 1197/1848 4166/1851 4163/1842 1297/1841
-f 1197/1848 1297/1841 1365/1692 1257/1691
-f 1197/1848 1257/1691 1366/1690 1298/1849
-f 1198/1852 1299/1853 4169/1854 1291/1855
-f 1198/1852 1291/1855 4167/1850 1298/1849
-f 1198/1852 1298/1849 1366/1690 1263/1706
-f 1198/1852 1263/1706 1367/1705 1299/1853
-f 1199/1856 1300/1857 4171/1858 4170/1859
-f 1199/1856 4170/1859 4169/1854 1299/1853
-f 1199/1856 1299/1853 1367/1705 1267/1718
-f 1199/1856 1267/1718 1368/1717 1300/1857
-f 1200/1860 1294/1837 1385/1836 4172/1861
-f 1200/1860 4172/1861 4171/1858 1300/1857
-f 1200/1860 1300/1857 1368/1717 1269/1728
-f 1200/1860 1269/1728 1361/1727 1294/1837
-f 1201/1799 1301/1808 1417/1862 1302/1800
-f 1202/1807 1303/1791 1418/1863 1304/1864
-f 1202/1807 1304/1864 1417/1862 1301/1808
-f 1203/1773 1305/1776 1419/1865 1306/1866
-f 1203/1773 1306/1866 1418/1863 1303/1791
-f 1204/1827 1307/1867 1419/1865 1305/1776
-f 1205/1868 1309/1685 1387/1684 4168/1869
-f 1205/1868 4168/1869 1388/1870 1261/1871
-f 1206/1872 1308/1873 4160/1874 4161/1875
-f 1206/1872 4161/1875 1415/1876 1266/1877
-f 1232/1823 1307/1867 4116/1878 1234/1824
-f 1207/1879 1238/1880 1361/1649 1240/1648
-f 1207/1879 1240/1648 1362/1647 1312/1881
-f 1207/1879 1312/1881 1420/1882 1310/1883
-f 1207/1879 1310/1883 1411/1884 1238/1880
-f 1208/1885 1312/1881 1362/1647 1243/1657
-f 1208/1885 1243/1657 1363/1656 1242/1665
-f 1208/1885 1242/1665 1412/1664 1311/1886
-f 1208/1885 1311/1886 1420/1882 1312/1881
-f 1204/1827 4115/1830 4116/1878 1307/1867
-f 1232/1823 1217/1826 1335/1822 1357/1821
-f 1201/1799 4095/1802 4091/1887 4089/1831
-f 1209/1888 1315/1889 1398/1890 1343/1891
-f 1209/1888 1343/1891 1399/1892 1313/1893
-f 1209/1888 1313/1893 1390/1894 1316/1895
-f 1209/1888 1316/1895 1391/1896 1315/1889
-f 1210/1897 1317/1898 1400/1899 1320/1900
-f 1210/1897 1320/1900 1398/1890 1315/1889
-f 1210/1897 1315/1889 1391/1896 1319/1901
-f 1210/1897 1319/1901 1392/1902 1317/1898
-f 1211/1903 1322/1904 1393/1905 1323/1906
-f 1211/1903 1323/1906 1392/1902 1318/1907
-f 1211/1903 1318/1907 1412/1664 1247/1663
-f 1211/1903 1247/1663 1413/1662 1322/1904
-f 1212/1908 1321/1909 1401/1910 1324/1911
-f 1212/1908 1324/1911 1400/1899 1317/1898
-f 1212/1908 1317/1898 1392/1902 1323/1906
-f 1212/1908 1323/1906 1393/1905 1321/1909
-f 1213/1912 1326/1913 1394/1914 1327/1915
-f 1213/1912 1327/1915 1393/1905 1322/1904
-f 1213/1912 1322/1904 1413/1662 1252/1675
-f 1213/1912 1252/1675 1414/1674 1326/1913
-f 1214/1916 1325/1917 1402/1918 1328/1919
-f 1214/1916 1328/1919 1401/1910 1321/1909
-f 1214/1916 1321/1909 1393/1905 1327/1915
-f 1214/1916 1327/1915 1394/1914 1325/1917
-f 4117/1920 1346/1921 1407/1922 4118/1923
-f 4117/1920 4119/1924 1408/1925 1346/1921
-f 1216/1926 1329/1927 1403/1928 1332/1929
-f 1216/1926 1332/1929 1402/1930 1325/1931
-f 1216/1926 1325/1931 1394/1932 1331/1933
-f 1216/1926 1331/1933 1395/1934 1329/1927
-f 4120/1935 1349/1936 1410/1937 4121/1938
-f 4120/1935 4122/1939 4189/1940 1349/1936
-f 1218/1941 1333/1942 1404/1943 1337/1944
-f 1218/1941 1337/1944 1403/1928 1329/1927
-f 1218/1941 1329/1927 1395/1934 1336/1945
-f 1218/1941 1336/1945 1396/1946 1333/1942
-f 4123/1947 4118/1948 1407/1949 1345/1950
-f 4123/1947 1345/1950 1416/1709 1260/1708
-f 1220/1951 1338/1952 1405/1953 1340/1954
-f 1220/1951 1340/1954 1404/1943 1333/1942
-f 1220/1951 1333/1942 1396/1946 1339/1955
-f 1220/1951 1339/1955 1397/1956 1338/1952
-f 4124/1957 1348/1958 1409/1959 4125/1960
-f 4124/1957 4121/1938 1410/1937 1348/1958
-f 1222/1961 1313/1962 1399/1963 1342/1964
-f 1222/1961 1342/1964 1405/1953 1338/1952
-f 1222/1961 1338/1952 1397/1956 1341/1965
-f 1222/1961 1341/1965 1390/1966 1313/1962
-f 1223/1967 1344/1968 4162/1834 1295/1833
-f 1223/1967 1295/1833 1411/1839 1314/1969
-f 1223/1967 1314/1969 1390/1966 1350/1970
-f 1223/1967 1350/1970 1406/1971 1344/1968
-f 1224/1972 4192/1973 4191/1974 1351/1975
-f 1224/1972 1351/1975 1394/1932 1326/1976
-f 1224/1972 1326/1976 1414/1846 1296/1845
-f 1224/1972 1296/1845 4165/1844 4192/1973
-f 1225/1977 4193/1978 4194/1979 1352/1980
-f 1225/1977 1352/1980 1395/1934 1331/1933
-f 1225/1977 1331/1933 1394/1932 1351/1975
-f 1225/1977 1351/1975 4191/1974 4193/1978
-f 1226/1981 1347/1982 4196/1983 1353/1984
-f 1226/1981 1353/1984 1396/1946 1336/1945
-f 1226/1981 1336/1945 1395/1934 1352/1980
-f 1226/1981 1352/1980 4194/1979 1347/1982
-f 1227/1985 4197/1986 4198/1987 1354/1988
-f 1227/1985 1354/1988 1397/1956 1339/1955
-f 1227/1985 1339/1955 1396/1946 1353/1984
-f 1227/1985 1353/1984 4196/1983 4197/1986
-f 1228/1989 4199/1990 1406/1971 1350/1970
-f 1228/1989 1350/1970 1390/1966 1341/1965
-f 1228/1989 1341/1965 1397/1956 1354/1988
-f 1228/1989 1354/1988 4198/1987 4199/1990
-f 1229/1803 1302/1800 1417/1862 1355/1814
-f 1230/1811 1355/1814 1417/1862 1304/1864
-f 1230/1811 1304/1864 1418/1863 1356/1780
-f 1231/1777 1356/1780 1418/1863 1306/1866
-f 1231/1777 1306/1866 1419/1865 1357/1821
-f 1232/1823 1357/1821 1419/1865 1307/1867
-f 4126/1991 4195/1992 1408/1925 4119/1924
-f 4126/1991 4125/1993 1409/1994 4195/1992
-f 4127/1995 4190/1996 4189/1997 4122/1998
-f 4127/1995 1266/1877 1415/1876 4190/1996
-f 1235/1999 1316/1895 1390/1894 1314/2000
-f 1235/1999 1314/2000 1411/1884 1310/1883
-f 1235/1999 1310/1883 1420/1882 1360/2001
-f 1235/1999 1360/2001 1391/1896 1316/1895
-f 1236/2002 1319/1901 1391/1896 1360/2001
-f 1236/2002 1360/2001 1420/1882 1311/1886
-f 1236/2002 1311/1886 1412/1664 1318/1907
-f 1236/2002 1318/1907 1392/1902 1319/1901
-f 1421/2003 4200/2004 4212/2005 4213/2006
-f 1483/2007 1461/2008 4201/2009
-f 1483/2007 4201/2009 1438/2010
-f 1422/2011 1423/2012 1467/2013 1466/2014
-f 4204/2015 4211/2016 1465/2017
-f 1424/2018 1425/2019 1423/2012 1422/2011
-f 1423/2012 1425/2019 1444/2020 4214/2021
-f 1427/2022 1447/2023 1444/2020 1425/2019
-f 1426/2024 1427/2022 1425/2019 1424/2018
-f 1429/2025 1450/2026 1447/2023 1427/2022
-f 1428/2027 1429/2025 1427/2022 1426/2024
-f 1431/2028 1453/2029 1450/2026 1429/2025
-f 1430/2030 1431/2028 1429/2025 1428/2027
-f 1433/2031 1456/2032 1453/2029 1431/2028
-f 1432/2033 1433/2031 1431/2028 1430/2030
-f 1435/2034 1459/2035 1456/2032 1433/2031
-f 1434/2036 1435/2034 1433/2031 1432/2033
-f 4203/2037 4204/2015 1465/2017
-f 4205/2038 4203/2037 1465/2017
-f 4206/2039 4205/2038 1465/2017
-f 4207/2040 4206/2039 1465/2017
-f 4208/2041 4207/2040 1465/2017
-f 4210/2042 4209/2043 1465/2017
-f 4209/2043 4208/2041 1465/2017
-f 1464/2044 1489/2045 1459/2035 1435/2034
-f 1463/2046 1464/2044 1435/2034 1434/2036
-f 4214/2021 1436/2047 1423/2012
-f 1423/2012 1436/2047 1467/2013
-f 1421/2003 4213/2006 1441/2048 4202/2049
-f 1437/2050 4227/2051 4226/2052 4215/2053
-f 1483/2007 4216/2054 1484/2055
-f 1483/2007 1438/2010 4216/2054
-f 1439/2056 1491/2057 1492/2058 1440/2059
-f 4218/2060 1490/2061 4225/2062
-f 1442/2063 1439/2056 1440/2059 1443/2064
-f 1440/2059 4214/2021 1444/2020 1443/2064
-f 1446/2065 1443/2064 1444/2020 1447/2023
-f 1445/2066 1442/2063 1443/2064 1446/2065
-f 1449/2067 1446/2065 1447/2023 1450/2026
-f 1448/2068 1445/2066 1446/2065 1449/2067
-f 1452/2069 1449/2067 1450/2026 1453/2029
-f 1451/2070 1448/2068 1449/2067 1452/2069
-f 1455/2071 1452/2069 1453/2029 1456/2032
-f 1454/2072 1451/2070 1452/2069 1455/2071
-f 1458/2073 1455/2071 1456/2032 1459/2035
-f 1457/2074 1454/2072 1455/2071 1458/2073
-f 4217/2075 1490/2061 4218/2060
-f 4219/2076 1490/2061 4217/2075
-f 4220/2077 1490/2061 4219/2076
-f 4221/2078 1490/2061 4220/2077
-f 4222/2079 1490/2061 4221/2078
-f 4224/2080 1490/2061 4223/2081
-f 4223/2081 1490/2061 4222/2079
-f 1488/2082 1458/2073 1459/2035 1489/2045
-f 1487/2083 1457/2074 1458/2073 1488/2082
-f 4214/2021 1440/2059 1460/2084
-f 1440/2059 1492/2058 1460/2084
-f 1437/2050 4202/2085 1441/2086 4227/2051
-f 1462/2087 4237/2088 4212/2005 4200/2004
-f 1483/2007 4228/2089 1461/2008
-f 1483/2007 1486/2090 4228/2089
-f 1468/2091 1466/2092 1467/2093 1469/2094
-f 4231/2095 1465/2017 4211/2016
-f 1470/2096 1468/2091 1469/2094 1471/2097
-f 1469/2094 4238/2098 1498/2099 1471/2097
-f 1473/2100 1471/2097 1498/2099 1501/2101
-f 1472/2102 1470/2096 1471/2097 1473/2100
-f 1475/2103 1473/2100 1501/2101 1504/2104
-f 1474/2105 1472/2102 1473/2100 1475/2103
-f 1477/2106 1475/2103 1504/2104 1507/2107
-f 1476/2108 1474/2105 1475/2103 1477/2106
-f 1479/2109 1477/2106 1507/2107 1510/2110
-f 1478/2111 1476/2108 1477/2106 1479/2109
-f 1481/2112 1479/2109 1510/2110 1513/2113
-f 1480/2114 1478/2111 1479/2109 1481/2112
-f 4230/2115 1465/2017 4231/2095
-f 4232/2116 1465/2017 4230/2115
-f 4233/2117 1465/2017 4232/2116
-f 4234/2118 1465/2017 4233/2117
-f 4235/2119 1465/2017 4234/2118
-f 4210/2042 1465/2017 4236/2120
-f 4236/2120 1465/2017 4235/2119
-f 1464/2044 1481/2112 1513/2113 1489/2045
-f 1463/2046 1480/2114 1481/2112 1464/2044
-f 4238/2098 1469/2094 1482/2121
-f 1469/2094 1467/2093 1482/2121
-f 1462/2087 4229/2122 1495/2123 4237/2088
-f 1485/2124 4215/2053 4226/2052 4247/2125
-f 1483/2007 1484/2055 4239/2126
-f 1483/2007 4239/2126 1486/2090
-f 1493/2127 1494/2128 1492/2129 1491/2130
-f 4241/2131 4225/2062 1490/2061
-f 1496/2132 1497/2133 1494/2128 1493/2127
-f 1494/2128 1497/2133 1498/2099 4238/2098
-f 1500/2134 1501/2101 1498/2099 1497/2133
-f 1499/2135 1500/2134 1497/2133 1496/2132
-f 1503/2136 1504/2104 1501/2101 1500/2134
-f 1502/2137 1503/2136 1500/2134 1499/2135
-f 1506/2138 1507/2107 1504/2104 1503/2136
-f 1505/2139 1506/2138 1503/2136 1502/2137
-f 1509/2140 1510/2110 1507/2107 1506/2138
-f 1508/2141 1509/2140 1506/2138 1505/2139
-f 1512/2142 1513/2113 1510/2110 1509/2140
-f 1511/2143 1512/2142 1509/2140 1508/2141
-f 4240/2144 4241/2131 1490/2061
-f 4242/2145 4240/2144 1490/2061
-f 4243/2146 4242/2145 1490/2061
-f 4244/2147 4243/2146 1490/2061
-f 4245/2148 4244/2147 1490/2061
-f 4224/2080 4246/2149 1490/2061
-f 4246/2149 4245/2148 1490/2061
-f 1488/2082 1489/2045 1513/2113 1512/2142
-f 1487/2083 1488/2082 1512/2142 1511/2143
-f 4238/2098 1514/2150 1494/2128
-f 1494/2128 1514/2150 1492/2129
-f 1485/2124 4247/2125 1495/2123 4229/2122
-f 1515/2151 4248/2152 4260/2153 4261/2154
-f 1577/2155 1555/2156 4249/2157
-f 1577/2155 4249/2157 1532/2158
-f 1516/2159 1517/2160 1561/2161 1560/2162
-f 4252/2163 4259/2164 1559/2165
-f 1518/2166 1519/2167 1517/2160 1516/2159
-f 1517/2160 1519/2167 1538/2168 4262/2169
-f 1521/2170 1541/2171 1538/2168 1519/2167
-f 1520/2172 1521/2170 1519/2167 1518/2166
-f 1523/2173 1544/2174 1541/2171 1521/2170
-f 1522/2175 1523/2173 1521/2170 1520/2172
-f 1525/2176 1547/2177 1544/2174 1523/2173
-f 1524/2178 1525/2176 1523/2173 1522/2175
-f 1527/2179 1550/2180 1547/2177 1525/2176
-f 1526/2181 1527/2179 1525/2176 1524/2178
-f 1529/2182 1553/2183 1550/2180 1527/2179
-f 1528/2184 1529/2182 1527/2179 1526/2181
-f 4251/2185 4252/2163 1559/2165
-f 4253/2186 4251/2185 1559/2165
-f 4254/2187 4253/2186 1559/2165
-f 4255/2188 4254/2187 1559/2165
-f 4256/2189 4255/2188 1559/2165
-f 4258/2190 4257/2191 1559/2165
-f 4257/2191 4256/2189 1559/2165
-f 1558/2192 1583/2193 1553/2183 1529/2182
-f 1557/2194 1558/2192 1529/2182 1528/2184
-f 4262/2169 1530/2195 1517/2160
-f 1517/2160 1530/2195 1561/2161
-f 1515/2151 4261/2154 1535/2196 4250/2197
-f 1531/2198 4275/2199 4274/2200 4263/2201
-f 1577/2155 4264/2202 1578/2203
-f 1577/2155 1532/2158 4264/2202
-f 1533/2204 1585/2205 1586/2206 1534/2207
-f 4266/2208 1584/2209 4273/2210
-f 1536/2211 1533/2204 1534/2207 1537/2212
-f 1534/2207 4262/2169 1538/2168 1537/2212
-f 1540/2213 1537/2212 1538/2168 1541/2171
-f 1539/2214 1536/2211 1537/2212 1540/2213
-f 1543/2215 1540/2213 1541/2171 1544/2174
-f 1542/2216 1539/2214 1540/2213 1543/2215
-f 1546/2217 1543/2215 1544/2174 1547/2177
-f 1545/2218 1542/2216 1543/2215 1546/2217
-f 1549/2219 1546/2217 1547/2177 1550/2180
-f 1548/2220 1545/2218 1546/2217 1549/2219
-f 1552/2221 1549/2219 1550/2180 1553/2183
-f 1551/2222 1548/2220 1549/2219 1552/2221
-f 4265/2223 1584/2209 4266/2208
-f 4267/2224 1584/2209 4265/2223
-f 4268/2225 1584/2209 4267/2224
-f 4269/2226 1584/2209 4268/2225
-f 4270/2227 1584/2209 4269/2226
-f 4272/2228 1584/2209 4271/2229
-f 4271/2229 1584/2209 4270/2227
-f 1582/2230 1552/2221 1553/2183 1583/2193
-f 1581/2231 1551/2222 1552/2221 1582/2230
-f 4262/2169 1534/2207 1554/2232
-f 1534/2207 1586/2206 1554/2232
-f 1531/2198 4250/2233 1535/2234 4275/2199
-f 1556/2235 4285/2236 4260/2153 4248/2152
-f 1577/2155 4276/2237 1555/2156
-f 1577/2155 1580/2238 4276/2237
-f 1562/2239 1560/2240 1561/2241 1563/2242
-f 4279/2243 1559/2165 4259/2164
-f 1564/2244 1562/2239 1563/2242 1565/2245
-f 1563/2242 4286/2246 1592/2247 1565/2245
-f 1567/2248 1565/2245 1592/2247 1595/2249
-f 1566/2250 1564/2244 1565/2245 1567/2248
-f 1569/2251 1567/2248 1595/2249 1598/2252
-f 1568/2253 1566/2250 1567/2248 1569/2251
-f 1571/2254 1569/2251 1598/2252 1601/2255
-f 1570/2256 1568/2253 1569/2251 1571/2254
-f 1573/2257 1571/2254 1601/2255 1604/2258
-f 1572/2259 1570/2256 1571/2254 1573/2257
-f 1575/2260 1573/2257 1604/2258 1607/2261
-f 1574/2262 1572/2259 1573/2257 1575/2260
-f 4278/2263 1559/2165 4279/2243
-f 4280/2264 1559/2165 4278/2263
-f 4281/2265 1559/2165 4280/2264
-f 4282/2266 1559/2165 4281/2265
-f 4283/2267 1559/2165 4282/2266
-f 4258/2190 1559/2165 4284/2268
-f 4284/2268 1559/2165 4283/2267
-f 1558/2192 1575/2260 1607/2261 1583/2193
-f 1557/2194 1574/2262 1575/2260 1558/2192
-f 4286/2246 1563/2242 1576/2269
-f 1563/2242 1561/2241 1576/2269
-f 1556/2235 4277/2270 1589/2271 4285/2236
-f 1579/2272 4263/2201 4274/2200 4295/2273
-f 1577/2155 1578/2203 4287/2274
-f 1577/2155 4287/2274 1580/2238
-f 1587/2275 1588/2276 1586/2277 1585/2278
-f 4289/2279 4273/2210 1584/2209
-f 1590/2280 1591/2281 1588/2276 1587/2275
-f 1588/2276 1591/2281 1592/2247 4286/2246
-f 1594/2282 1595/2249 1592/2247 1591/2281
-f 1593/2283 1594/2282 1591/2281 1590/2280
-f 1597/2284 1598/2252 1595/2249 1594/2282
-f 1596/2285 1597/2284 1594/2282 1593/2283
-f 1600/2286 1601/2255 1598/2252 1597/2284
-f 1599/2287 1600/2286 1597/2284 1596/2285
-f 1603/2288 1604/2258 1601/2255 1600/2286
-f 1602/2289 1603/2288 1600/2286 1599/2287
-f 1606/2290 1607/2261 1604/2258 1603/2288
-f 1605/2291 1606/2290 1603/2288 1602/2289
-f 4288/2292 4289/2279 1584/2209
-f 4290/2293 4288/2292 1584/2209
-f 4291/2294 4290/2293 1584/2209
-f 4292/2295 4291/2294 1584/2209
-f 4293/2296 4292/2295 1584/2209
-f 4272/2228 4294/2297 1584/2209
-f 4294/2297 4293/2296 1584/2209
-f 1582/2230 1583/2193 1607/2261 1606/2290
-f 1581/2231 1582/2230 1606/2290 1605/2291
-f 4286/2246 1608/2298 1588/2276
-f 1588/2276 1608/2298 1586/2277
-f 1579/2272 4295/2273 1589/2271 4277/2270
-f 1609/2299 4296/2300 4308/2301 4309/2302
-f 1671/2303 1649/2304 4297/2305
-f 1671/2303 4297/2305 1626/2306
-f 1610/2307 1611/2308 1655/2309 1654/2310
-f 4300/2311 4307/2312 1653/2313
-f 1612/2314 1613/2315 1611/2308 1610/2307
-f 1611/2308 1613/2315 1632/2316 4310/2317
-f 1615/2318 1635/2319 1632/2316 1613/2315
-f 1614/2320 1615/2318 1613/2315 1612/2314
-f 1617/2321 1638/2322 1635/2319 1615/2318
-f 1616/2323 1617/2321 1615/2318 1614/2320
-f 1619/2324 1641/2325 1638/2322 1617/2321
-f 1618/2326 1619/2324 1617/2321 1616/2323
-f 1621/2327 1644/2328 1641/2325 1619/2324
-f 1620/2329 1621/2327 1619/2324 1618/2326
-f 1623/2330 1647/2331 1644/2328 1621/2327
-f 1622/2332 1623/2330 1621/2327 1620/2329
-f 4299/2333 4300/2311 1653/2313
-f 4301/2334 4299/2333 1653/2313
-f 4302/2335 4301/2334 1653/2313
-f 4303/2336 4302/2335 1653/2313
-f 4304/2337 4303/2336 1653/2313
-f 4306/2338 4305/2339 1653/2313
-f 4305/2339 4304/2337 1653/2313
-f 1652/2340 1677/2341 1647/2331 1623/2330
-f 1651/2342 1652/2340 1623/2330 1622/2332
-f 4310/2317 1624/2343 1611/2308
-f 1611/2308 1624/2343 1655/2309
-f 1609/2299 4309/2302 1629/2344 4298/2345
-f 1625/2346 4323/2347 4322/2348 4311/2349
-f 1671/2303 4312/2350 1672/2351
-f 1671/2303 1626/2306 4312/2350
-f 1627/2352 1679/2353 1680/2354 1628/2355
-f 4314/2356 1678/2357 4321/2358
-f 1630/2359 1627/2352 1628/2355 1631/2360
-f 1628/2355 4310/2317 1632/2316 1631/2360
-f 1634/2361 1631/2360 1632/2316 1635/2319
-f 1633/2362 1630/2359 1631/2360 1634/2361
-f 1637/2363 1634/2361 1635/2319 1638/2322
-f 1636/2364 1633/2362 1634/2361 1637/2363
-f 1640/2365 1637/2363 1638/2322 1641/2325
-f 1639/2366 1636/2364 1637/2363 1640/2365
-f 1643/2367 1640/2365 1641/2325 1644/2328
-f 1642/2368 1639/2366 1640/2365 1643/2367
-f 1646/2369 1643/2367 1644/2328 1647/2331
-f 1645/2370 1642/2368 1643/2367 1646/2369
-f 4313/2371 1678/2357 4314/2356
-f 4315/2372 1678/2357 4313/2371
-f 4316/2373 1678/2357 4315/2372
-f 4317/2374 1678/2357 4316/2373
-f 4318/2375 1678/2357 4317/2374
-f 4320/2376 1678/2357 4319/2377
-f 4319/2377 1678/2357 4318/2375
-f 1676/2378 1646/2369 1647/2331 1677/2341
-f 1675/2379 1645/2370 1646/2369 1676/2378
-f 4310/2317 1628/2355 1648/2380
-f 1628/2355 1680/2354 1648/2380
-f 1625/2346 4298/2381 1629/2382 4323/2347
-f 1650/2383 4333/2384 4308/2301 4296/2300
-f 1671/2303 4324/2385 1649/2304
-f 1671/2303 1674/2386 4324/2385
-f 1656/2387 1654/2388 1655/2389 1657/2390
-f 4327/2391 1653/2313 4307/2312
-f 1658/2392 1656/2387 1657/2390 1659/2393
-f 1657/2390 4334/2394 1686/2395 1659/2393
-f 1661/2396 1659/2393 1686/2395 1689/2397
-f 1660/2398 1658/2392 1659/2393 1661/2396
-f 1663/2399 1661/2396 1689/2397 1692/2400
-f 1662/2401 1660/2398 1661/2396 1663/2399
-f 1665/2402 1663/2399 1692/2400 1695/2403
-f 1664/2404 1662/2401 1663/2399 1665/2402
-f 1667/2405 1665/2402 1695/2403 1698/2406
-f 1666/2407 1664/2404 1665/2402 1667/2405
-f 1669/2408 1667/2405 1698/2406 1701/2409
-f 1668/2410 1666/2407 1667/2405 1669/2408
-f 4326/2411 1653/2313 4327/2391
-f 4328/2412 1653/2313 4326/2411
-f 4329/2413 1653/2313 4328/2412
-f 4330/2414 1653/2313 4329/2413
-f 4331/2415 1653/2313 4330/2414
-f 4306/2338 1653/2313 4332/2416
-f 4332/2416 1653/2313 4331/2415
-f 1652/2340 1669/2408 1701/2409 1677/2341
-f 1651/2342 1668/2410 1669/2408 1652/2340
-f 4334/2394 1657/2390 1670/2417
-f 1657/2390 1655/2389 1670/2417
-f 1650/2383 4325/2418 1683/2419 4333/2384
-f 1673/2420 4311/2349 4322/2348 4343/2421
-f 1671/2303 1672/2351 4335/2422
-f 1671/2303 4335/2422 1674/2386
-f 1681/2423 1682/2424 1680/2425 1679/2426
-f 4337/2427 4321/2358 1678/2357
-f 1684/2428 1685/2429 1682/2424 1681/2423
-f 1682/2424 1685/2429 1686/2395 4334/2394
-f 1688/2430 1689/2397 1686/2395 1685/2429
-f 1687/2431 1688/2430 1685/2429 1684/2428
-f 1691/2432 1692/2400 1689/2397 1688/2430
-f 1690/2433 1691/2432 1688/2430 1687/2431
-f 1694/2434 1695/2403 1692/2400 1691/2432
-f 1693/2435 1694/2434 1691/2432 1690/2433
-f 1697/2436 1698/2406 1695/2403 1694/2434
-f 1696/2437 1697/2436 1694/2434 1693/2435
-f 1700/2438 1701/2409 1698/2406 1697/2436
-f 1699/2439 1700/2438 1697/2436 1696/2437
-f 4336/2440 4337/2427 1678/2357
-f 4338/2441 4336/2440 1678/2357
-f 4339/2442 4338/2441 1678/2357
-f 4340/2443 4339/2442 1678/2357
-f 4341/2444 4340/2443 1678/2357
-f 4320/2376 4342/2445 1678/2357
-f 4342/2445 4341/2444 1678/2357
-f 1676/2378 1677/2341 1701/2409 1700/2438
-f 1675/2379 1676/2378 1700/2438 1699/2439
-f 4334/2394 1702/2446 1682/2424
-f 1682/2424 1702/2446 1680/2425
-f 1673/2420 4343/2421 1683/2419 4325/2418
-f 1703/2447 4344/2448 4356/2449 4357/2450
-f 1765/2451 1743/2452 4345/2453
-f 1765/2451 4345/2453 1720/2454
-f 1704/2455 1705/2456 1749/2457 1748/2458
-f 4348/2459 4355/2460 1747/2461
-f 1706/2462 1707/2463 1705/2456 1704/2455
-f 1705/2456 1707/2463 1726/2464 4358/2465
-f 1709/2466 1729/2467 1726/2464 1707/2463
-f 1708/2468 1709/2466 1707/2463 1706/2462
-f 1711/2469 1732/2470 1729/2467 1709/2466
-f 1710/2471 1711/2469 1709/2466 1708/2468
-f 1713/2472 1735/2473 1732/2470 1711/2469
-f 1712/2474 1713/2472 1711/2469 1710/2471
-f 1715/2475 1738/2476 1735/2473 1713/2472
-f 1714/2477 1715/2475 1713/2472 1712/2474
-f 1717/2478 1741/2479 1738/2476 1715/2475
-f 1716/2480 1717/2478 1715/2475 1714/2477
-f 4347/2481 4348/2459 1747/2461
-f 4349/2482 4347/2481 1747/2461
-f 4350/2483 4349/2482 1747/2461
-f 4351/2484 4350/2483 1747/2461
-f 4352/2485 4351/2484 1747/2461
-f 4354/2486 4353/2487 1747/2461
-f 4353/2487 4352/2485 1747/2461
-f 1746/2488 1771/2489 1741/2479 1717/2478
-f 1745/2490 1746/2488 1717/2478 1716/2480
-f 4358/2465 1718/2491 1705/2456
-f 1705/2456 1718/2491 1749/2457
-f 1703/2447 4357/2450 1723/2492 4346/2493
-f 1719/2494 4371/2495 4370/2496 4359/2497
-f 1765/2451 4360/2498 1766/2499
-f 1765/2451 1720/2454 4360/2498
-f 1721/2500 1773/2501 1774/2502 1722/2503
-f 4362/2504 1772/2505 4369/2506
-f 1724/2507 1721/2500 1722/2503 1725/2508
-f 1722/2503 4358/2465 1726/2464 1725/2508
-f 1728/2509 1725/2508 1726/2464 1729/2467
-f 1727/2510 1724/2507 1725/2508 1728/2509
-f 1731/2511 1728/2509 1729/2467 1732/2470
-f 1730/2512 1727/2510 1728/2509 1731/2511
-f 1734/2513 1731/2511 1732/2470 1735/2473
-f 1733/2514 1730/2512 1731/2511 1734/2513
-f 1737/2515 1734/2513 1735/2473 1738/2476
-f 1736/2516 1733/2514 1734/2513 1737/2515
-f 1740/2517 1737/2515 1738/2476 1741/2479
-f 1739/2518 1736/2516 1737/2515 1740/2517
-f 4361/2519 1772/2505 4362/2504
-f 4363/2520 1772/2505 4361/2519
-f 4364/2521 1772/2505 4363/2520
-f 4365/2522 1772/2505 4364/2521
-f 4366/2523 1772/2505 4365/2522
-f 4368/2524 1772/2505 4367/2525
-f 4367/2525 1772/2505 4366/2523
-f 1770/2526 1740/2517 1741/2479 1771/2489
-f 1769/2527 1739/2518 1740/2517 1770/2526
-f 4358/2465 1722/2503 1742/2528
-f 1722/2503 1774/2502 1742/2528
-f 1719/2494 4346/2529 1723/2530 4371/2495
-f 1744/2531 4381/2532 4356/2449 4344/2448
-f 1765/2451 4372/2533 1743/2452
-f 1765/2451 1768/2534 4372/2533
-f 1750/2535 1748/2536 1749/2537 1751/2538
-f 4375/2539 1747/2461 4355/2460
-f 1752/2540 1750/2535 1751/2538 1753/2541
-f 1751/2538 4382/2542 1780/2543 1753/2541
-f 1755/2544 1753/2541 1780/2543 1783/2545
-f 1754/2546 1752/2540 1753/2541 1755/2544
-f 1757/2547 1755/2544 1783/2545 1786/2548
-f 1756/2549 1754/2546 1755/2544 1757/2547
-f 1759/2550 1757/2547 1786/2548 1789/2551
-f 1758/2552 1756/2549 1757/2547 1759/2550
-f 1761/2553 1759/2550 1789/2551 1792/2554
-f 1760/2555 1758/2552 1759/2550 1761/2553
-f 1763/2556 1761/2553 1792/2554 1795/2557
-f 1762/2558 1760/2555 1761/2553 1763/2556
-f 4374/2559 1747/2461 4375/2539
-f 4376/2560 1747/2461 4374/2559
-f 4377/2561 1747/2461 4376/2560
-f 4378/2562 1747/2461 4377/2561
-f 4379/2563 1747/2461 4378/2562
-f 4354/2486 1747/2461 4380/2564
-f 4380/2564 1747/2461 4379/2563
-f 1746/2488 1763/2556 1795/2557 1771/2489
-f 1745/2490 1762/2558 1763/2556 1746/2488
-f 4382/2542 1751/2538 1764/2565
-f 1751/2538 1749/2537 1764/2565
-f 1744/2531 4373/2566 1777/2567 4381/2532
-f 1767/2568 4359/2497 4370/2496 4391/2569
-f 1765/2451 1766/2499 4383/2570
-f 1765/2451 4383/2570 1768/2534
-f 1775/2571 1776/2572 1774/2573 1773/2574
-f 4385/2575 4369/2506 1772/2505
-f 1778/2576 1779/2577 1776/2572 1775/2571
-f 1776/2572 1779/2577 1780/2543 4382/2542
-f 1782/2578 1783/2545 1780/2543 1779/2577
-f 1781/2579 1782/2578 1779/2577 1778/2576
-f 1785/2580 1786/2548 1783/2545 1782/2578
-f 1784/2581 1785/2580 1782/2578 1781/2579
-f 1788/2582 1789/2551 1786/2548 1785/2580
-f 1787/2583 1788/2582 1785/2580 1784/2581
-f 1791/2584 1792/2554 1789/2551 1788/2582
-f 1790/2585 1791/2584 1788/2582 1787/2583
-f 1794/2586 1795/2557 1792/2554 1791/2584
-f 1793/2587 1794/2586 1791/2584 1790/2585
-f 4384/2588 4385/2575 1772/2505
-f 4386/2589 4384/2588 1772/2505
-f 4387/2590 4386/2589 1772/2505
-f 4388/2591 4387/2590 1772/2505
-f 4389/2592 4388/2591 1772/2505
-f 4368/2524 4390/2593 1772/2505
-f 4390/2593 4389/2592 1772/2505
-f 1770/2526 1771/2489 1795/2557 1794/2586
-f 1769/2527 1770/2526 1794/2586 1793/2587
-f 4382/2542 1796/2594 1776/2572
-f 1776/2572 1796/2594 1774/2573
-f 1767/2568 4391/2569 1777/2567 4373/2566
-f 1194/2595 4158/2596 4157/2597
-f 1194/2595 4155/2598 4158/2596
-f 1194/2595 4154/2599 4153/2600
-f 1194/2595 4151/2601 4154/2599
-f 1194/2595 4156/2602 4155/2598
-f 1194/2595 4153/2600 4156/2602
-f 1194/2595 4148/2603 4147/2604
-f 1194/2595 4146/2605 4148/2603
-f 1194/2595 4159/2606 4144/2607
-f 1194/2595 4157/2597 4159/2606
-f 1194/2595 4144/2607 4145/2608
-f 1194/2595 4145/2608 4146/2605
-f 1194/2595 4152/2609 4151/2601
-f 1194/2595 4149/2610 4152/2609
-f 1194/2595 4150/2611 4149/2610
-f 1194/2595 4147/2604 4150/2611
-f 1230/1811 1356/1780 1334/1779 1233/1812
-f 851/2612 4076/2613 4088/2614
-f 851/2612 4088/2614 4086/2615
-f 851/2612 3961/2616 4075/2617
-f 851/2612 4075/2617 4076/2613
-f 851/2612 3959/2618 3960/2619
-f 851/2612 3960/2619 3961/2616
-f 851/2612 4084/2620 4083/2621
-f 851/2612 4083/2621 4082/2622
-f 851/2612 4077/2623 4078/2624
-f 851/2612 4078/2624 3959/2618
-f 851/2612 4082/2622 4085/2625
-f 851/2612 4085/2625 4020/2626
-f 851/2612 4079/2627 4080/2628
-f 851/2612 4080/2628 4077/2623
-f 851/2612 4020/2626 4021/2629
-f 851/2612 4021/2629 4022/2630
-f 851/2612 4022/2630 4081/2631
-f 851/2612 4081/2631 4079/2627
-f 851/2612 4086/2615 4087/2632
-f 851/2612 4087/2632 4084/2620
-f 3843/2633 3844/2634 3908/2635 3909/2636
-f 3997/2637 3907/2638 3908/2639 3844/2640
-f 3840/2641 3842/2642 3793/2643 3792/2644
-f 3837/2645 3839/2646 3910/2647 3911/2648
-f 3845/2649 3905/2650 3906/2651 4000/2652
-f 3843/2633 3909/2636 3910/2647 3839/2646
-f 3840/2641 3792/2644 3791/2653 3841/2654
-f 3849/2655 3996/2656 3795/2657 3794/2658
-f 4068/2659 3841/2654 3791/2653 3789/2660
-f 3845/2649 3846/2661 3790/2662 3905/2650
-f 4068/2659 3789/2660 3790/2662 3846/2661
-f 3849/2655 3794/2658 3793/2643 3842/2642
-f 3997/2637 4000/2652 3906/2651 3907/2638
-f 3995/2663 3838/2664 3912/2665 3913/2666
-f 3995/2663 3913/2666 3795/2657 3996/2656
-f 3837/2645 3911/2648 3912/2665 3838/2664
-f 539/936 3703/2667 3699/2668 623/831
-f 516/893 3716/2669 3708/2670 646/890
-f 478/750 669/754 3664/2671 588/751
-f 504/834 624/830 3698/2672 3706/2673
-f 518/896 668/897 3652/2674 561/695
-f 464/690 3653/2675 3654/2676 560/689
-f 463/688 3655/2677 3646/2678 559/687
-f 476/747 3667/2679 3666/2680 587/748
-f 503/829 3697/2681 3698/2672 624/830
-f 517/895 644/888 3712/2682 3714/2683
-f 539/936 667/692 3652/2674 3703/2667
-f 477/749 587/748 3666/2680 3665/2684
-f 503/829 623/831 3699/2668 3697/2681
-f 477/749 3665/2684 3660/2685 584/743
-f 540/938 558/686 3645/2686 3650/2687
-f 505/838 625/835 3705/2688 3704/2689
-f 504/834 3706/2673 3705/2688 625/835
-f 493/793 3745/794 3691/2690 3694/2691
-f 474/739 3659/2692 3661/2693 609/740
-f 461/682 3647/2694 3648/2695 556/683
-f 463/688 560/689 3654/2676 3655/2677
-f 514/884 3710/2696 3712/2682 644/888
-f 476/747 586/745 3658/2697 3667/2679
-f 493/793 3694/2691 3649/2698 607/684
-f 475/744 585/746 3657/2699 3656/2700
-f 533/928 3739/2701 3736/2702 3770/929
-f 514/884 664/887 3711/2703 3710/2696
-f 465/691 561/695 3652/2674 667/692
-f 505/838 3704/2689 3702/2704 621/824
-f 491/779 3688/775 3692/778 557/780
-f 516/893 647/894 3715/2705 3716/2669
-f 502/822 621/824 3702/2704 3700/2706
-f 540/938 3650/2687 3652/2674 668/897
-f 538/934 588/751 3664/2671 670/935
-f 462/685 559/687 3646/2678 3644/2707
-f 542/940 3662/2708 3657/2699 585/746
-f 461/682 607/684 3649/2698 3647/2694
-f 515/889 3707/2709 3709/2710 645/892
-f 535/825 3740/828 3711/2703 664/887
-f 502/822 3700/2706 3701/2711 662/823
-f 542/940 670/935 3664/2671 3662/2708
-f 495/797 609/740 3661/2693 3695/903
-f 515/889 646/890 3708/2670 3707/2709
-f 462/685 3644/2707 3645/2686 558/686
-f 475/744 3656/2700 3658/2697 586/745
-f 3738/922 622/923 3737/917 3734/916
-f 517/895 3714/2683 3715/2705 647/894
-f 474/739 584/743 3660/2685 3659/2692
-f 464/690 556/683 3648/2695 3653/2675
-f 533/928 662/823 3701/2711 3739/2701
-f 541/939 3713/2712 3664/2671 669/754
-f 541/939 645/892 3709/2710 3713/2712
-f 1802/2713 1803/2714 1798/2715 1797/2716
-f 1805/2717 1806/2718 1801/2719 1800/2720
-f 1804/2721 1805/2717 1800/2720 1799/2722
-f 1803/2714 1804/2721 1799/2722 1798/2715
-f 1809/2723 1810/2724 1805/2717 1804/2721
-f 1808/2725 1809/2723 1804/2721 1803/2714
-f 1807/2726 1808/2725 1803/2714 1802/2713
-f 1810/2724 1811/2727 1806/2718 1805/2717
-f 1814/2728 1815/2729 1810/2724 1809/2723
-f 1813/2730 1814/2728 1809/2723 1808/2725
-f 1812/2731 1813/2730 1808/2725 1807/2726
-f 1815/2729 1816/2732 1811/2727 1810/2724
-f 1819/2733 1820/2734 1815/2729 1814/2728
-f 1818/2735 1819/2733 1814/2728 1813/2730
-f 1817/2736 1818/2735 1813/2730 1812/2731
-f 1820/2734 1821/2737 1816/2732 1815/2729
-f 1824/2738 1825/2739 1820/2734 1819/2733
-f 1823/2740 1824/2738 1819/2733 1818/2735
-f 1822/2741 1823/2740 1818/2735 1817/2736
-f 1825/2739 1826/2742 1821/2737 1820/2734
-f 1829/2743 1830/2744 1825/2739 1824/2738
-f 1828/2745 1829/2743 1824/2738 1823/2740
-f 1827/2746 1828/2745 1823/2740 1822/2741
-f 1830/2744 1831/2747 1826/2742 1825/2739
-f 1834/2748 1835/2749 1830/2744 1829/2743
-f 1833/2750 1834/2748 1829/2743 1828/2745
-f 1832/2751 1833/2750 1828/2745 1827/2746
-f 1835/2749 1836/2752 1831/2747 1830/2744
-f 1839/2753 1840/2754 1835/2749 1834/2748
-f 1838/2755 1839/2753 1834/2748 1833/2750
-f 1837/2756 1838/2755 1833/2750 1832/2751
-f 1840/2754 1841/2757 1836/2752 1835/2749
-f 1844/2758 1845/2759 1840/2754 1839/2753
-f 1843/2760 1844/2758 1839/2753 1838/2755
-f 1842/2761 1843/2760 1838/2755 1837/2756
-f 1845/2759 1846/2762 1841/2757 1840/2754
-f 1849/2763 1850/2764 1845/2759 1844/2758
-f 1848/2765 1849/2763 1844/2758 1843/2760
-f 1847/2766 1848/2765 1843/2760 1842/2761
-f 1850/2764 1851/2767 1846/2762 1845/2759
-f 3763/738 4423/2768 4422/2769 3764/734
-f 3764/734 4422/2769 4421/2770 3765/735
-f 4420/2771 3786/881 3765/735 4421/2770
-f 4419/2772 3785/882 3786/881 4420/2771
-f 4395/2773 3727/2774 3729/899 4393/2775
-f 3727/2774 4395/2773 4396/2776 3682/2777
-f 4397/2778 3681/2779 3682/2777 4396/2776
-f 3681/2779 4397/2778 4398/2780 3684/862
-f 3762/742 1854/2781 4423/2768 3763/738
-f 3761/741 1853/2782 1854/2781 3762/742
-f 1853/2782 3761/741 3767/798 1852/2783
-f 1852/2783 3767/798 3684/862 4398/2780
-f 1857/2784 4417/2785 4424/2786 4426/2787
-f 1857/2784 4426/2787 4428/2788 1856/2789
-f 1856/2789 4428/2788 4427/2790 1855/2791
-f 4427/2790 4399/2792 4400/2793 1855/2791
-f 1857/2784 4413/2794 4415/2795 4417/2785
-f 1855/2791 4400/2793 4403/2796 4405/2797
-f 1856/2789 4411/2798 4413/2794 1857/2784
-f 1855/2791 4405/2797 4407/2799 1856/2789
-f 1856/2789 4407/2799 4409/2800 4411/2798
-f 1860/2801 4418/2802 4416/2803 1863/2804
-f 1860/2801 1863/2804 1862/2805 1859/2806
-f 1859/2806 1862/2805 1861/2807 1858/2808
-f 4394/2809 1858/2808 1861/2807 4401/2810
-f 4404/2811 4402/2812 4401/2810 1861/2807
-f 4416/2803 4414/2813 4412/2814 1863/2804
-f 1863/2804 4412/2814 4410/2815 1862/2805
-f 1862/2805 4406/2816 4404/2811 1861/2807
-f 4410/2815 4408/2817 4406/2816 1862/2805
-f 4425/2818 3784/885 3785/882 4419/2772
-f 4430/2819 3783/886 3784/885 4425/2818
-f 3783/886 4430/2819 4429/2820 3788/898
-f 3788/898 4429/2820 4393/2775 3729/899
-f 1864/2821 1954/2822 2092/2823 2013/2824
-f 1864/2821 1958/2825 2079/2826 1954/2822
-f 1864/2821 1950/2827 2096/2828 1958/2825
-f 1864/2821 2013/2824 2119/2829 1950/2827
-f 1865/2830 1957/2831 2081/2832 1961/2833
-f 1865/2830 1960/2834 2082/2835 1957/2831
-f 1865/2830 1953/2836 2099/2837 1960/2834
-f 1865/2830 1961/2833 2098/2838 1953/2836
-f 1866/2839 1956/2840 2080/2841 1962/2842
-f 1866/2839 1961/2833 2081/2832 1956/2840
-f 1866/2839 1952/2843 2098/2838 1961/2833
-f 1866/2839 1962/2842 2097/2844 1952/2843
-f 1867/2845 1955/2846 2079/2826 1958/2825
-f 1867/2845 1962/2842 2080/2841 1955/2846
-f 1867/2845 1951/2847 2097/2844 1962/2842
-f 1867/2845 1958/2825 2096/2828 1951/2847
-f 1868/2848 1954/2822 2079/2826 1963/2849
-f 1868/2848 2014/2850 2092/2823 1954/2822
-f 1869/2851 1957/2831 2082/2835 1965/2852
-f 1869/2851 1966/2853 2081/2832 1957/2831
-f 1870/2854 1956/2840 2081/2832 1966/2853
-f 1870/2854 1967/2855 2080/2841 1956/2840
-f 1871/2856 1955/2846 2080/2841 1967/2855
-f 1871/2856 1963/2849 2079/2826 1955/2846
-f 1872/2857 2025/2858 2104/2859 2074/2860
-f 1872/2857 1968/2861 2099/2837 2025/2858
-f 1873/42 1972/45 2086/44 1976/43
-f 1873/42 1975/47 2087/46 1972/45
-f 1874/48 1969/51 2093/50 2015/49
-f 1874/48 1977/53 2084/52 1969/51
-f 1875/54 1973/55 2087/46 1975/47
-f 1875/54 1974/57 2105/56 1973/55
-f 1876/58 1970/59 2084/52 1977/53
-f 1876/58 1979/61 2085/60 1970/59
-f 1877/62 1971/63 2085/60 1979/61
-f 1877/62 1976/43 2086/44 1971/63
-f 1878/64 1982/67 2113/66 1989/65
-f 1878/64 1988/69 2114/68 1982/67
-f 1878/64 1986/71 2091/70 1988/69
-f 1878/64 1989/65 2090/72 1986/71
-f 1879/73 1981/76 2112/75 1990/74
-f 1879/73 1989/65 2113/66 1981/76
-f 1879/73 1985/77 2090/72 1989/65
-f 1879/73 1990/74 2089/78 1985/77
-f 1880/79 1980/82 2111/81 1987/80
-f 1880/79 1990/74 2112/75 1980/82
-f 1880/79 1984/83 2089/78 1990/74
-f 1880/79 1987/80 2088/84 1984/83
-f 1881/85 1983/88 2094/87 2016/86
-f 1881/85 1991/89 2088/84 1983/88
-f 1882/90 1986/71 2090/72 1993/91
-f 1882/90 1992/92 2091/70 1986/71
-f 1883/93 1985/77 2089/78 1994/94
-f 1883/93 1993/91 2090/72 1985/77
-f 1884/95 1984/83 2088/84 1991/89
-f 1884/95 1994/94 2089/78 1984/83
-f 1885/96 2048/98 2114/68 1995/97
-f 1885/96 2076/100 2118/99 2048/98
-f 1891/101 4542/55 4543/56 2003/102
-f 1891/101 2008/103 4541/46 4542/55
-f 1892/104 4540/45 4541/46 2008/103
-f 1892/104 2007/105 4539/44 4540/45
-f 1893/106 2011/108 4533/50 2018/107
-f 1893/106 2004/110 4546/109 2011/108
-f 1894/111 4538/63 4539/44 2007/105
-f 1894/111 2006/112 4537/60 4538/63
-f 1895/113 1959/116 2078/115 2002/114
-f 1895/113 2001/118 2095/117 1959/116
-f 1896/119 4536/59 4537/60 2006/112
-f 1896/119 2005/120 4535/52 4536/59
-f 1897/121 1978/124 2083/123 4463/122
-f 1898/125 2002/114 2078/115 1964/126
-f 1899/2862 2010/2863 4531/2864 4530/2865
-f 1899/2862 2013/2824 2092/2823 2010/2863
-f 1899/2862 2009/2866 2119/2829 2013/2824
-f 1899/2862 4530/2865 4529/2867 2009/2866
-f 1930/133 4512/136 2062/135 2058/134
-f 1903/137 4462/106 4465/107 2017/138
-f 1900/2868 2010/2863 2092/2823 2014/2850
-f 1900/2868 4532/2869 4531/2864 2010/2863
-f 1901/141 4553/108 4547/109 4477/142
-f 1901/141 2015/49 2093/50 4553/108
-f 1902/143 2016/86 2094/87 2012/144
-f 1943/145 4508/148 2060/147 1937/146
-f 1889/149 1999/150 4473/120 4472/119
-f 1904/151 4534/51 4535/52 2005/120
-f 1904/151 2018/107 4533/50 4534/51
-f 1905/2870 2068/2871 2120/2872 2019/2873
-f 1905/2870 1950/2827 2119/2829 2068/2871
-f 1905/2870 2023/2874 2096/2828 1950/2827
-f 1905/2870 2019/2873 2101/2875 2023/2874
-f 1906/2876 2026/2877 2103/2878 2022/2879
-f 1906/2876 1953/2836 2098/2838 2026/2877
-f 1906/2876 2025/2858 2099/2837 1953/2836
-f 1906/2876 2022/2879 2104/2859 2025/2858
-f 1907/2880 2027/2881 2102/2882 2021/2883
-f 1907/2880 1952/2843 2097/2844 2027/2881
-f 1907/2880 2026/2877 2098/2838 1952/2843
-f 1907/2880 2021/2883 2103/2878 2026/2877
-f 1908/2884 2023/2874 2101/2875 2020/2885
-f 1908/2884 1951/2847 2096/2828 2023/2874
-f 1908/2884 2027/2881 2097/2844 1951/2847
-f 1908/2884 2020/2885 2102/2882 2027/2881
-f 1909/2886 2019/2873 2120/2872 2069/2887
-f 1909/2886 2028/2888 2101/2875 2019/2873
-f 1942/171 4527/174 4520/173 1938/172
-f 1910/2889 2022/2879 2103/2878 2031/2890
-f 1910/2889 2030/2891 2104/2859 2022/2879
-f 1890/178 2000/179 4467/112 4466/111
-f 1911/2892 2021/2883 2102/2882 2032/2893
-f 1911/2892 2031/2890 2103/2878 2021/2883
-f 1888/182 1997/183 4456/103 4455/101
-f 1912/2894 2020/2885 2101/2875 2028/2888
-f 1912/2894 2032/2893 2102/2882 2020/2885
-f 1913/185 2039/188 2109/187 2036/186
-f 1928/189 1931/192 2064/191 2055/190
-f 1913/185 2036/186 2110/194 2038/193
-f 1914/195 2070/198 2121/197 2033/196
-f 1914/195 2033/196 2107/200 2040/199
-f 1915/201 2038/193 2110/194 2037/202
-f 1915/201 2037/202 4544/204 4438/203
-f 1916/205 2040/199 2107/200 2034/206
-f 1902/143 2012/144 4470/208 4480/207
-f 1916/205 2034/206 2108/210 2042/209
-f 1917/211 2042/209 2108/210 2035/212
-f 1929/213 1936/216 2061/215 2057/214
-f 1886/217 4460/104 4456/103 1997/183
-f 1917/211 2035/212 2109/187 2039/188
-f 1918/218 2049/219 2113/66 1982/67
-f 1918/218 2046/221 2117/220 2049/219
-f 1918/218 2048/98 2118/99 2046/221
-f 1918/218 1982/67 2114/68 2048/98
-f 1919/222 2050/223 2112/75 1981/76
-f 1919/222 2045/225 2116/224 2050/223
-f 1919/222 2049/219 2117/220 2045/225
-f 1919/222 1981/76 2113/66 2049/219
-f 1920/226 2047/227 2111/81 1980/82
-f 1920/226 2044/229 2115/228 2047/227
-f 1920/226 2050/223 2116/224 2044/229
-f 1920/226 1980/82 2112/75 2050/223
-f 1921/230 2071/233 2122/232 2043/231
-f 1921/230 2043/231 2115/228 2051/234
-f 1922/235 2053/236 2117/220 2046/221
-f 1929/213 2058/134 2062/135 1936/216
-f 1890/178 4466/111 4461/105 1998/237
-f 1922/235 2046/221 2118/99 2052/238
-f 1923/239 2054/240 2116/224 2045/225
-f 1923/239 2045/225 2117/220 2053/236
-f 1924/241 2051/234 2115/228 2044/229
-f 1924/241 2044/229 2116/224 2054/240
-f 1925/2895 1960/2834 2099/2837 1968/2861
-f 1925/2895 2075/2896 2082/2835 1960/2834
-f 1942/171 1938/172 4515/245 2067/244
-f 1887/246 4483/151 4473/120 1999/150
-f 1889/149 4472/119 4467/112 2000/179
-f 1928/189 4450/248 4457/247 1931/192
-f 1902/143 4480/207 4474/250 4482/249
-f 1927/251 2057/214 2061/215 1944/252
-f 4504/192 4459/247 4545/204 4567/202
-f 4504/192 4567/202 4566/194 4505/191
-f 1932/253 4505/191 4566/194 4565/186
-f 1932/253 4565/186 4564/187 2063/254
-f 1933/148 4509/256 4558/197 2066/255
-f 1933/148 2066/255 4568/257 4510/147
-f 1934/136 2063/254 4564/187 4563/212
-f 1934/136 4563/212 4562/210 4513/135
-f 1935/258 2059/261 2100/260 2024/259
-f 1935/258 2024/259 2095/117 2001/118
-f 4517/216 4513/135 4562/210 4561/206
-f 4517/216 4561/206 4560/200 4518/215
-f 4519/262 4511/265 2106/264 2041/263
-f 1926/266 4506/253 4507/254 2056/267
-f 4525/268 2029/269 2100/260 2059/261
-f 1939/2897 4555/2898 4556/2899 2065/2900
-f 1939/2897 2009/2866 4529/2867 4555/2898
-f 1939/2897 2068/2871 2119/2829 2009/2866
-f 1939/2897 2065/2900 2120/2872 2068/2871
-f 1940/2901 2065/2900 4556/2899 4557/2902
-f 1940/2901 2069/2887 2120/2872 2065/2900
-f 1941/276 4522/277 4569/257 4574/255
-f 1886/217 1998/237 4461/105 4460/104
-f 1943/145 2072/278 2073/256 4508/148
-f 1941/276 4574/255 2121/197 2070/198
-f 1942/171 2067/244 2122/232 2071/233
-f 1903/137 4476/279 4464/110 4462/106
-f 4528/252 4518/215 4560/200 4559/196
-f 4528/252 4559/196 4558/197 4509/256
-f 1945/280 1995/97 2114/68 1988/69
-f 1930/133 2056/267 4507/254 4512/136
-f 1945/280 1988/69 2091/70 2077/281
-f 1946/2903 2074/2860 2104/2859 2030/2891
-f 1888/182 4455/101 4458/102 1996/283
-f 1927/251 1944/252 2073/256 2072/278
-f 1947/2904 1965/2852 2082/2835 2075/2896
-f 1948/285 2052/238 2118/99 2076/100
-f 1887/246 2017/138 4465/107 4483/151
-f 1926/266 2055/190 2064/191 4506/253
-f 1949/286 2077/281 2091/70 1992/92
-f 1946/2903 2030/2891 4486/2905 4490/2906
-f 1923/239 2053/236 4495/290 4503/289
-f 1885/96 1995/97 4451/291 2076/100
-f 1911/2892 4493/2907 4485/2908 2031/2890
-f 1925/2895 1968/2861 4439/2909 2075/2896
-f 1871/2856 1967/2855 4441/2910 4440/2911
-f 1870/2854 1966/2853 4433/2912 4442/2913
-f 1883/93 1994/94 4453/300 4454/299
-f 1910/2889 2031/2890 4485/2908 4484/2914
-f 1924/241 4501/303 4499/302 2051/234
-f 1946/2903 4490/2906 4439/2909 2074/2860
-f 1884/95 4452/304 4453/300 1994/94
-f 1910/2889 4484/2914 4486/2905 2030/2891
-f 1884/95 1991/89 4447/305 4452/304
-f 1947/2904 4437/2915 4432/2916 1965/2852
-f 1912/2894 4491/2917 4492/2918 2032/2893
-f 1911/2892 2032/2893 4492/2918 4493/2907
-f 1900/2868 4481/2919 4478/2920 4532/2869
-f 1881/85 2016/86 4448/313 4446/312
-f 1868/2848 1963/2849 4435/2921 4434/2922
-f 1870/2854 4442/2913 4441/2910 1967/2855
-f 1921/230 2051/234 4499/302 4497/316
-f 1883/93 4454/299 4445/317 1993/91
-f 1900/2868 2014/2850 4436/2923 4481/2919
-f 1882/90 4443/320 4444/319 1992/92
-f 1940/2901 4557/2902 4523/2924 4526/2925
-f 1921/230 4497/316 4498/323 2071/233
-f 1872/2857 2074/2860 4439/2909 1968/2861
-f 1912/2894 2028/2888 4489/2926 4491/2917
-f 1898/125 1964/126 4479/124 4475/121
-f 1923/239 4503/289 4502/325 2054/240
-f 1909/2886 4487/2927 4489/2926 2028/2888
-f 1947/2904 2075/2896 4439/2909 4437/2915
-f 1945/280 2077/281 4451/291 1995/97
-f 1869/2851 4431/2928 4433/2912 1966/2853
-f 1949/286 1992/92 4444/319 4449/328
-f 1868/2848 4434/2922 4436/2923 2014/2850
-f 1922/235 2052/238 4496/330 4494/329
-f 1942/171 2071/233 4498/323 4527/174
-f 1909/2886 2069/2887 4488/2929 4487/2927
-f 1949/286 4449/328 4451/291 2077/281
-f 1902/143 4482/249 4448/313 2016/86
-f 1922/235 4494/329 4495/290 2053/236
-f 1869/2851 1965/2852 4432/2916 4431/2928
-f 1882/90 1993/91 4445/317 4443/320
-f 4525/268 4521/262 4524/263 2029/269
-f 1924/241 2054/240 4502/325 4501/303
-f 1881/85 4446/312 4447/305 1991/89
-f 1871/2856 4440/2911 4435/2921 1963/2849
-f 1940/2901 4526/2925 4488/2929 2069/2887
-f 1948/285 2076/100 4451/291 4500/332
-f 1948/285 4500/332 4496/330 2052/238
-f 2128/333 2123/336 2124/335 2129/334
-f 2131/337 2126/340 2127/339 2132/338
-f 2130/341 2125/342 2126/340 2131/337
-f 2129/334 2124/335 2125/342 2130/341
-f 2135/343 2130/341 2131/337 2136/344
-f 2134/345 2129/334 2130/341 2135/343
-f 2133/346 2128/333 2129/334 2134/345
-f 2136/344 2131/337 2132/338 2137/347
-f 2140/348 2135/343 2136/344 2141/349
-f 2139/350 2134/345 2135/343 2140/348
-f 2138/351 2133/346 2134/345 2139/350
-f 2141/349 2136/344 2137/347 2142/352
-f 2145/353 2140/348 2141/349 2146/354
-f 2144/355 2139/350 2140/348 2145/353
-f 2143/356 2138/351 2139/350 2144/355
-f 2146/354 2141/349 2142/352 2147/357
-f 2150/358 2145/353 2146/354 2151/359
-f 2149/360 2144/355 2145/353 2150/358
-f 2148/361 2143/356 2144/355 2149/360
-f 2151/359 2146/354 2147/357 2152/362
-f 2155/363 2150/358 2151/359 2156/364
-f 2154/365 2149/360 2150/358 2155/363
-f 2153/366 2148/361 2149/360 2154/365
-f 2156/364 2151/359 2152/362 2157/367
-f 2160/368 2155/363 2156/364 2161/369
-f 2159/370 2154/365 2155/363 2160/368
-f 2158/371 2153/366 2154/365 2159/370
-f 2161/369 2156/364 2157/367 2162/372
-f 2165/373 2160/368 2161/369 2166/374
-f 2164/375 2159/370 2160/368 2165/373
-f 2163/376 2158/371 2159/370 2164/375
-f 2166/374 2161/369 2162/372 2167/377
-f 2170/378 2165/373 2166/374 2171/379
-f 2169/380 2164/375 2165/373 2170/378
-f 2168/381 2163/376 2164/375 2169/380
-f 2171/379 2166/374 2167/377 2172/382
-f 2175/383 2170/378 2171/379 2176/384
-f 2174/385 2169/380 2170/378 2175/383
-f 2173/386 2168/381 2169/380 2174/385
-f 2176/384 2171/379 2172/382 2177/387
-f 4550/84 4551/80 4605/389 4606/388
-f 4551/80 4552/81 4604/390 4605/389
-f 4603/391 4604/390 4552/81 4573/227
-f 4602/392 4603/391 4573/227 4572/228
-f 4578/393 4576/395 4516/245 4514/394
-f 4514/394 4469/397 4579/396 4578/393
-f 4580/398 4579/396 4469/397 4468/399
-f 4468/399 4471/208 4581/400 4580/398
-f 4549/88 4550/84 4606/388 2180/401
-f 4548/87 4549/88 2180/401 2179/402
-f 2179/402 2178/403 4554/144 4548/87
-f 2178/403 4581/400 4471/208 4554/144
-f 2183/404 4609/407 4607/406 4600/405
-f 2183/404 2182/409 4611/408 4609/407
-f 2182/409 2181/411 4610/410 4611/408
-f 4610/410 2181/411 4583/413 4582/412
-f 2183/404 4600/405 4598/415 4596/414
-f 2181/411 4588/417 4586/416 4583/413
-f 2182/409 2183/404 4596/414 4594/418
-f 2181/411 2182/409 4590/419 4588/417
-f 2182/409 4594/418 4592/420 4590/419
-f 2186/421 2189/424 4599/423 4601/422
-f 2186/421 2185/426 2188/425 2189/424
-f 2185/426 2184/428 2187/427 2188/425
-f 4577/429 4584/430 2187/427 2184/428
-f 4587/431 2187/427 4584/430 4585/432
-f 4599/423 2189/424 4595/434 4597/433
-f 2189/424 2188/425 4593/435 4595/434
-f 2188/425 2187/427 4587/431 4589/436
-f 4593/435 2188/425 4589/436 4591/437
-f 4608/438 4602/392 4572/228 4571/231
-f 4613/439 4608/438 4571/231 4570/232
-f 4570/232 4575/244 4612/440 4613/439
-f 4575/244 4516/245 4576/395 4612/440
-f 2190/2930 2280/2931 2418/2932 2339/2933
-f 2190/2930 2284/2934 2405/2935 2280/2931
-f 2190/2930 2276/2936 2422/2937 2284/2934
-f 2190/2930 2339/2933 2445/2938 2276/2936
-f 2191/2939 2283/2940 2407/2941 2287/2942
-f 2191/2939 2286/2943 2408/2944 2283/2940
-f 2191/2939 2279/2945 2425/2946 2286/2943
-f 2191/2939 2287/2942 2424/2947 2279/2945
-f 2192/2948 2282/2949 2406/2950 2288/2951
-f 2192/2948 2287/2942 2407/2941 2282/2949
-f 2192/2948 2278/2952 2424/2947 2287/2942
-f 2192/2948 2288/2951 2423/2953 2278/2952
-f 2193/2954 2281/2955 2405/2935 2284/2934
-f 2193/2954 2288/2951 2406/2950 2281/2955
-f 2193/2954 2277/2956 2423/2953 2288/2951
-f 2193/2954 2284/2934 2422/2937 2277/2956
-f 2194/2957 2280/2931 2405/2935 2289/2958
-f 2194/2957 2340/2959 2418/2932 2280/2931
-f 2195/2960 2283/2940 2408/2944 2291/2961
-f 2195/2960 2292/2962 2407/2941 2283/2940
-f 2196/2963 2282/2949 2407/2941 2292/2962
-f 2196/2963 2293/2964 2406/2950 2282/2949
-f 2197/2965 2281/2955 2406/2950 2293/2964
-f 2197/2965 2289/2958 2405/2935 2281/2955
-f 2198/2966 2351/2967 2430/2968 2400/2969
-f 2198/2966 2294/2970 2425/2946 2351/2967
-f 2199/696 2298/699 2412/698 2302/697
-f 2199/696 2301/701 2413/700 2298/699
-f 2200/702 2295/705 2419/704 2341/703
-f 2200/702 2303/707 2410/706 2295/705
-f 2201/708 2299/709 2413/700 2301/701
-f 2201/708 2300/711 2431/710 2299/709
-f 2202/712 2296/713 2410/706 2303/707
-f 2202/712 2305/715 2411/714 2296/713
-f 2203/716 2297/717 2411/714 2305/715
-f 2203/716 2302/697 2412/698 2297/717
-f 2204/718 2308/721 2439/720 2315/719
-f 2204/718 2314/723 2440/722 2308/721
-f 2204/718 2312/725 2417/724 2314/723
-f 2204/718 2315/719 2416/726 2312/725
-f 2205/727 2307/730 2438/729 2316/728
-f 2205/727 2315/719 2439/720 2307/730
-f 2205/727 2311/731 2416/726 2315/719
-f 2205/727 2316/728 2415/732 2311/731
-f 2206/733 2306/736 2437/735 2313/734
-f 2206/733 2316/728 2438/729 2306/736
-f 2206/733 2310/737 2415/732 2316/728
-f 2206/733 2313/734 2414/738 2310/737
-f 2207/739 2309/742 2420/741 2342/740
-f 2207/739 2317/743 2414/738 2309/742
-f 2208/744 2312/725 2416/726 2319/745
-f 2208/744 2318/746 2417/724 2312/725
-f 2209/747 2311/731 2415/732 2320/748
-f 2209/747 2319/745 2416/726 2311/731
-f 2210/749 2310/737 2414/738 2317/743
-f 2210/749 2320/748 2415/732 2310/737
-f 2211/750 2374/752 2440/722 2321/751
-f 2211/750 2402/754 2444/753 2374/752
-f 2217/755 4725/709 4726/710 2329/756
-f 2217/755 2334/757 4724/700 4725/709
-f 2218/758 4723/699 4724/700 2334/757
-f 2218/758 2333/759 4722/698 4723/699
-f 2219/760 2337/762 4716/704 2344/761
-f 2219/760 2330/764 4729/763 2337/762
-f 2220/765 4721/717 4722/698 2333/759
-f 2220/765 2332/766 4720/714 4721/717
-f 2221/767 2285/770 2404/769 2328/768
-f 2221/767 2327/772 2421/771 2285/770
-f 2222/773 4719/713 4720/714 2332/766
-f 2222/773 2331/774 4718/706 4719/713
-f 2223/775 2304/778 2409/777 4646/776
-f 2224/779 2328/768 2404/769 2290/780
-f 2225/2971 2336/2972 4714/2973 4713/2974
-f 2225/2971 2339/2933 2418/2932 2336/2972
-f 2225/2971 2335/2975 2445/2938 2339/2933
-f 2225/2971 4713/2974 4712/2976 2335/2975
-f 2256/787 4695/790 2388/789 2384/788
-f 2229/791 4645/760 4648/761 2343/792
-f 2226/2977 2336/2972 2418/2932 2340/2959
-f 2226/2977 4715/2978 4714/2973 2336/2972
-f 2227/795 4736/762 4730/763 4660/796
-f 2227/795 2341/703 2419/704 4736/762
-f 2228/797 2342/740 2420/741 2338/798
-f 2269/799 4691/802 2386/801 2263/800
-f 2215/803 2325/804 4656/774 4655/773
-f 2230/805 4717/705 4718/706 2331/774
-f 2230/805 2344/761 4716/704 4717/705
-f 2231/2979 2394/2980 2446/2981 2345/2982
-f 2231/2979 2276/2936 2445/2938 2394/2980
-f 2231/2979 2349/2983 2422/2937 2276/2936
-f 2231/2979 2345/2982 2427/2984 2349/2983
-f 2232/2985 2352/2986 2429/2987 2348/2988
-f 2232/2985 2279/2945 2424/2947 2352/2986
-f 2232/2985 2351/2967 2425/2946 2279/2945
-f 2232/2985 2348/2988 2430/2968 2351/2967
-f 2233/2989 2353/2990 2428/2991 2347/2992
-f 2233/2989 2278/2952 2423/2953 2353/2990
-f 2233/2989 2352/2986 2424/2947 2278/2952
-f 2233/2989 2347/2992 2429/2987 2352/2986
-f 2234/2993 2349/2983 2427/2984 2346/2994
-f 2234/2993 2277/2956 2422/2937 2349/2983
-f 2234/2993 2353/2990 2423/2953 2277/2956
-f 2234/2993 2346/2994 2428/2991 2353/2990
-f 2235/2995 2345/2982 2446/2981 2395/2996
-f 2235/2995 2354/2997 2427/2984 2345/2982
-f 2268/825 4710/828 4703/827 2264/826
-f 2236/2998 2348/2988 2429/2987 2357/2999
-f 2236/2998 2356/3000 2430/2968 2348/2988
-f 2216/832 2326/833 4650/766 4649/765
-f 2237/3001 2347/2992 2428/2991 2358/3002
-f 2237/3001 2357/2999 2429/2987 2347/2992
-f 2214/836 2323/837 4639/757 4638/755
-f 2238/3003 2346/2994 2427/2984 2354/2997
-f 2238/3003 2358/3002 2428/2991 2346/2994
-f 2239/839 2365/842 2435/841 2362/840
-f 2254/843 2257/846 2390/845 2381/844
-f 2239/839 2362/840 2436/848 2364/847
-f 2240/849 2396/852 2447/851 2359/850
-f 2240/849 2359/850 2433/854 2366/853
-f 2241/855 2364/847 2436/848 2363/856
-f 2241/855 2363/856 4727/858 4621/857
-f 2242/859 2366/853 2433/854 2360/860
-f 2228/797 2338/798 4653/862 4663/861
-f 2242/859 2360/860 2434/864 2368/863
-f 2243/865 2368/863 2434/864 2361/866
-f 2255/867 2262/870 2387/869 2383/868
-f 2212/871 4643/758 4639/757 2323/837
-f 2243/865 2361/866 2435/841 2365/842
-f 2244/872 2375/873 2439/720 2308/721
-f 2244/872 2372/875 2443/874 2375/873
-f 2244/872 2374/752 2444/753 2372/875
-f 2244/872 2308/721 2440/722 2374/752
-f 2245/876 2376/877 2438/729 2307/730
-f 2245/876 2371/879 2442/878 2376/877
-f 2245/876 2375/873 2443/874 2371/879
-f 2245/876 2307/730 2439/720 2375/873
-f 2246/880 2373/881 2437/735 2306/736
-f 2246/880 2370/883 2441/882 2373/881
-f 2246/880 2376/877 2442/878 2370/883
-f 2246/880 2306/736 2438/729 2376/877
-f 2247/884 2397/887 2448/886 2369/885
-f 2247/884 2369/885 2441/882 2377/888
-f 2248/889 2379/890 2443/874 2372/875
-f 2255/867 2384/788 2388/789 2262/870
-f 2216/832 4649/765 4644/759 2324/891
-f 2248/889 2372/875 2444/753 2378/892
-f 2249/893 2380/894 2442/878 2371/879
-f 2249/893 2371/879 2443/874 2379/890
-f 2250/895 2377/888 2441/882 2370/883
-f 2250/895 2370/883 2442/878 2380/894
-f 2251/3004 2286/2943 2425/2946 2294/2970
-f 2251/3004 2401/3005 2408/2944 2286/2943
-f 2268/825 2264/826 4698/899 2393/898
-f 2213/900 4666/805 4656/774 2325/804
-f 2215/803 4655/773 4650/766 2326/833
-f 2254/843 4633/902 4640/901 2257/846
-f 2228/797 4663/861 4657/904 4665/903
-f 2253/905 2383/868 2387/869 2270/906
-f 4687/846 4642/901 4728/858 4750/856
-f 4687/846 4750/856 4749/848 4688/845
-f 2258/907 4688/845 4749/848 4748/840
-f 2258/907 4748/840 4747/841 2389/908
-f 2259/802 4692/910 4741/851 2392/909
-f 2259/802 2392/909 4751/911 4693/801
-f 2260/790 2389/908 4747/841 4746/866
-f 2260/790 4746/866 4745/864 4696/789
-f 2261/912 2385/915 2426/914 2350/913
-f 2261/912 2350/913 2421/771 2327/772
-f 4700/870 4696/789 4745/864 4744/860
-f 4700/870 4744/860 4743/854 4701/869
-f 4702/916 4694/919 2432/918 2367/917
-f 2252/920 4689/907 4690/908 2382/921
-f 4708/922 2355/923 2426/914 2385/915
-f 2265/3006 4738/3007 4739/3008 2391/3009
-f 2265/3006 2335/2975 4712/2976 4738/3007
-f 2265/3006 2394/2980 2445/2938 2335/2975
-f 2265/3006 2391/3009 2446/2981 2394/2980
-f 2266/3010 2391/3009 4739/3008 4740/3011
-f 2266/3010 2395/2996 2446/2981 2391/3009
-f 2267/930 4705/931 4752/911 4757/909
-f 2212/871 2324/891 4644/759 4643/758
-f 2269/799 2398/932 2399/910 4691/802
-f 2267/930 4757/909 2447/851 2396/852
-f 2268/825 2393/898 2448/886 2397/887
-f 2229/791 4659/933 4647/764 4645/760
-f 4711/906 4701/869 4743/854 4742/850
-f 4711/906 4742/850 4741/851 4692/910
-f 2271/934 2321/751 2440/722 2314/723
-f 2256/787 2382/921 4690/908 4695/790
-f 2271/934 2314/723 2417/724 2403/935
-f 2272/3012 2400/2969 2430/2968 2356/3000
-f 2214/836 4638/755 4641/756 2322/937
-f 2253/905 2270/906 2399/910 2398/932
-f 2273/3013 2291/2961 2408/2944 2401/3005
-f 2274/939 2378/892 2444/753 2402/754
-f 2213/900 2343/792 4648/761 4666/805
-f 2252/920 2381/844 2390/845 4689/907
-f 2275/940 2403/935 2417/724 2318/746
-f 2449/941 2742/944 2897/943 2748/942
-f 2449/941 2749/946 2896/945 2742/944
-f 2511/947 5015/950 5014/949 2696/948
-f 2450/951 2743/954 2898/953 2747/952
-f 2450/951 2748/942 2897/943 2743/954
-f 2511/947 2695/956 5012/955 5015/950
-f 2451/957 2744/960 2899/959 2746/958
-f 2451/957 2747/952 2898/953 2744/960
-f 2509/961 2693/964 5009/963 5011/962
-f 2578/965 2808/968 2645/967 2475/966
-f 2578/965 2475/966 2644/970 2809/969
-f 2580/971 2473/974 2642/973 2581/972
-f 2577/975 2582/978 2646/977 4790/976
-f 4778/979 2569/982 2633/981 2795/980
-f 2579/983 2474/986 2643/985 2810/984
-f 2453/987 2588/990 2887/989 2591/988
-f 2453/987 2590/992 2886/991 2588/990
-f 2575/993 2806/996 2802/995 2570/994
-f 2454/997 2736/1000 2892/999 2593/998
-f 2454/997 2592/1002 2891/1001 2736/1000
-f 2455/1003 2585/1006 2890/1005 2595/1004
-f 2455/1003 2594/1008 2889/1007 2585/1006
-f 2456/1009 2587/1012 2888/1011 2596/1010
-f 2456/1009 2591/1014 2887/1013 2587/1012
-f 2576/1015 2807/1018 2635/1017 2571/1016
-f 2457/1019 2735/1020 2891/1001 2592/1002
-f 2457/1019 2595/1004 2890/1005 2735/1020
-f 2458/1021 2601/1024 2813/1023 2603/1022
-f 2458/1021 2602/1026 2814/1025 2601/1024
-f 2458/1021 2600/1028 2812/1027 2602/1026
-f 2458/1021 2603/1022 2811/1029 2600/1028
-f 2459/1030 2604/1033 2815/1032 2605/1031
-f 2459/1030 2620/1035 2816/1034 2604/1033
-f 2459/1030 2601/1024 2814/1025 2620/1035
-f 2459/1030 2605/1031 2813/1023 2601/1024
-f 2460/1036 2607/1039 2818/1038 2608/1037
-f 2460/1036 2621/1041 2819/1040 2607/1039
-f 2460/1036 2604/1033 2816/1034 2621/1041
-f 2460/1036 2608/1037 2815/1032 2604/1033
-f 2461/1042 2609/1045 2820/1044 2610/1043
-f 2461/1042 2622/1047 2821/1046 2609/1045
-f 2461/1042 2607/1039 2819/1040 2622/1047
-f 2461/1042 2610/1043 2818/1038 2607/1039
-f 2462/1048 2611/1051 2822/1050 2612/1049
-f 2462/1048 2623/1053 2823/1052 2611/1051
-f 2462/1048 2609/1045 2821/1046 2623/1053
-f 2462/1048 2612/1049 2820/1044 2609/1045
-f 2580/971 2810/984 2643/985 2473/974
-f 2464/1054 2624/1057 2824/1056 2613/1055
-f 2464/1054 2734/1059 2884/1058 2624/1057
-f 2464/1054 2724/1061 4994/1060 2734/1059
-f 2464/1054 2613/1055 2825/1062 2724/1061
-f 2465/1063 2605/1031 2815/1032 2608/1037
-f 2465/1063 2615/1064 2813/1023 2605/1031
-f 2465/1063 2606/1066 2817/1065 2615/1064
-f 2465/1063 2608/1037 2818/1038 2606/1066
-f 2466/1067 2610/1043 2820/1044 2612/1049
-f 2466/1067 2606/1066 2818/1038 2610/1043
-f 2466/1067 2616/1068 2817/1065 2606/1066
-f 2466/1067 2612/1049 2822/1050 2616/1068
-f 2467/1069 2615/1064 2817/1065 2618/1070
-f 2467/1069 2603/1022 2813/1023 2615/1064
-f 2467/1069 2619/1071 2811/1029 2603/1022
-f 2467/1069 2618/1070 2826/1072 2619/1071
-f 2468/1073 2600/1028 2811/1029 2619/1071
-f 2468/1073 2625/1074 2812/1027 2600/1028
-f 2468/1073 2614/1076 2827/1075 2625/1074
-f 2468/1073 2619/1071 2826/1072 2614/1076
-f 4778/979 2631/1078 4781/1077 2569/982
-f 2470/1079 2626/1082 2867/1081 2710/1080
-f 2470/1079 2630/1084 2829/1083 2626/1082
-f 2470/1079 2627/1086 2830/1085 2630/1084
-f 2470/1079 2710/1080 2868/1087 2627/1086
-f 2471/1088 5001/1061 5000/1062 4779/1089
-f 2472/1090 2774/1093 5004/1092 2799/1091
-f 2472/1090 2798/1095 5042/1094 2774/1093
-f 4783/1096 2647/1099 2840/1098 4784/1097
-f 4783/1096 4785/1101 2841/1100 2647/1099
-f 4786/1102 2648/1103 2841/1100 4785/1101
-f 4786/1102 4787/1105 2842/1104 2648/1103
-f 4788/1106 2649/1107 2842/1104 4787/1105
-f 4788/1106 4789/1109 2843/1108 2649/1107
-f 2476/1110 2650/1111 2843/1108 4789/1109
-f 2476/1110 4791/1113 2844/1112 2650/1111
-f 2478/1114 4925/1053 4924/1046 2794/1115
-f 2573/1116 2804/1119 2800/1118 2566/1117
-f 2478/1114 2793/1120 4926/1052 4925/1053
-f 2580/971 2567/1122 2797/1121 2810/984
-f 2479/1123 4921/1041 4920/1034 2653/1124
-f 2479/1123 2797/1121 4922/1040 4921/1041
-f 2564/1125 2795/980 2633/981 4871/1126
-f 2471/1088 4820/1127 2875/1060 5001/1061
-f 2480/1128 4917/1026 4918/1027 2758/1129
-f 2480/1128 2652/1130 4916/1025 4917/1026
-f 2481/1131 2636/1134 2833/1133 2796/1132
-f 2481/1131 4798/1136 2834/1135 2636/1134
-f 2482/1137 4779/1089 5000/1062 2773/1138
-f 2565/1139 5039/1140 4926/1052 2793/1120
-f 2482/1137 2773/1138 2902/1142 2632/1141
-f 2483/1143 5021/1146 2885/1145 2597/1144
-f 2483/1143 2593/998 2892/999 5021/1146
-f 2564/1125 4871/1126 2651/1148 4793/1147
-f 4903/1149 2803/1152 2629/1151 4796/1150
-f 2484/1153 2586/1154 2889/1007 2594/1008
-f 2484/1153 2596/1010 2888/1011 2586/1154
-f 2508/1155 2860/1157 2691/1156
-f 2508/1155 2691/1156 2853/1158
-f 2485/1159 2589/1160 2886/991 2590/992
-f 2485/1159 2597/1144 2885/1145 2589/1160
-f 2508/1155 2859/1162 2690/1161
-f 2514/1163 5003/1166 2878/1165 2699/1164
-f 2516/1167 2700/1170 5006/1169 5008/1168
-f 2508/1155 2690/1161 2860/1157
-f 2509/961 5011/962 5010/1172 2694/1171
-f 2508/1155 2858/1174 2689/1173
-f 2508/1155 2689/1173 2859/1162
-f 2512/1175 5016/1178 2880/1177 2697/1176
-f 2513/1179 2697/1176 2880/1177 4996/1180
-f 2512/1175 2696/948 5014/949 5016/1178
-f 2508/1155 2857/1182 2688/1181
-f 2508/1155 2688/1181 2858/1174
-f 2508/1155 2856/1184 2687/1183
-f 2508/1155 2687/1183 2857/1182
-f 2508/1155 2855/1186 2686/1185
-f 2487/1187 2599/1190 4767/1189 4775/1188
-f 2514/1163 2698/1192 4995/1191 5003/1166
-f 2469/1193 2656/1196 4773/1195 4777/1194
-f 2508/1155 2686/1185 2856/1184
-f 2508/1155 2854/1198 4978/1197
-f 2508/1155 4978/1197 2855/1186
-f 2490/1199 2655/1202 4776/1201 4805/1200
-f 2508/1155 2853/1158 2684/1203
-f 2491/1204 2658/1207 4768/1206 4766/1205
-f 2508/1155 2684/1203 2854/1198
-f 2492/1208 2678/1211 2851/1210 2668/1209
-f 2492/1208 2671/1213 2850/1212 2678/1211
-f 4842/1214 4829/1217 4976/1216 4989/1215
-f 2486/1218 2598/1221 4770/1220 4803/1219
-f 2493/1222 2661/1225 2845/1224 2663/1223
-f 2493/1222 2664/1227 4954/1226 2661/1225
-f 2494/1228 4955/1231 2846/1230 2660/1229
-f 2494/1228 2662/1233 4956/1232 4955/1231
-f 4846/1234 4988/1237 4985/1236 4824/1235
-f 2495/1238 2666/1239 4954/1226 2664/1227
-f 2495/1238 2667/1241 2847/1240 2666/1239
-f 2496/1242 2672/1245 2849/1244 2674/1243
-f 2496/1242 2677/1247 4959/1246 2672/1245
-f 4849/1248 4984/1251 4981/1250 4835/1249
-f 4852/1252 4980/1255 4977/1254 4839/1253
-f 2497/1256 2669/1257 2847/1240 2667/1241
-f 2497/1256 2670/1259 2848/1258 2669/1257
-f 2498/1260 4958/1263 4957/1262 2680/1261
-f 2498/1260 2660/1229 2846/1230 4958/1263
-f 4838/1264 2685/1267 4974/1266 4830/1265
-f 2499/1268 4962/1269 2848/1258 2670/1259
-f 2499/1268 2673/1271 4961/1270 4962/1269
-f 2500/1272 2683/1273 4956/1232 2662/1233
-f 2500/1272 2665/1275 2852/1274 2683/1273
-f 4838/1264 4839/1277 4977/1276 2685/1267
-f 4833/1278 4835/1249 4981/1250 4982/1279
-f 2487/1187 4775/1188 4776/1201 2655/1202
-f 2501/1280 2675/1281 4961/1270 2673/1271
-f 2501/1280 2676/1283 4963/1282 2675/1281
-f 2502/1284 2681/1285 2852/1274 2665/1275
-f 2502/1284 2668/1209 2851/1210 2681/1285
-f 4842/1214 4989/1215 4987/1287 4843/1286
-f 2503/1288 4969/1289 4963/1282 2676/1283
-f 2503/1288 2679/1291 4968/1290 4969/1289
-f 2504/1292 4964/1293 2850/1212 2671/1213
-f 2504/1292 2674/1243 2849/1244 4964/1293
-f 4828/1294 4975/1295 4976/1216 4829/1217
-f 2505/1296 4972/1299 4968/1298 2679/1297
-f 2505/1296 2682/1301 4971/1300 4972/1299
-f 2506/1302 4960/1303 4959/1246 2677/1247
-f 2506/1302 2680/1261 4957/1262 4960/1303
-f 4833/1278 4982/1279 4979/1305 4834/1304
-f 2507/1306 4973/1307 4971/1300 2682/1301
-f 2507/1306 2663/1223 2845/1224 4973/1307
-f 4849/1248 4823/1309 4983/1308 4984/1251
-f 2489/1310 4772/1311 4773/1195 2656/1196
-f 4822/1312 4824/1235 4985/1236 4986/1313
-f 2490/1199 4805/1200 4774/1315 2657/1314
-f 4852/1252 4834/1304 4979/1305 4980/1255
-f 4822/1312 4986/1313 4983/1308 4823/1309
-f 2491/1204 4766/1205 4767/1189 2599/1190
-f 2489/1310 2657/1314 4774/1315 4772/1311
-f 4828/1294 4830/1265 4974/1266 4975/1295
-f 4846/1234 4843/1286 4987/1287 4988/1237
-f 2488/1316 4769/1317 4770/1220 2598/1221
-f 2486/1218 4803/1219 4804/1319 2659/1318
-f 2463/1320 4806/1321 4768/1206 2658/1207
-f 2469/1193 4777/1194 4771/1323 2654/1322
-f 2577/975 4790/976 2645/967 2808/968
-f 2579/983 2809/969 2644/970 2474/986
-f 2452/1324 4913/1326 4914/1325
-f 2452/1324 4914/1325 4915/1327
-f 2452/1324 4911/1329 4912/1328
-f 2452/1324 4912/1328 4913/1326
-f 2452/1324 4909/1331 4910/1330
-f 2452/1324 4910/1330 4911/1329
-f 2452/1324 4907/1333 4908/1332
-f 2452/1324 4908/1332 4909/1331
-f 2452/1324 4905/1335 4906/1334
-f 2452/1324 4906/1334 4907/1333
-f 2452/1324 5017/1337 5018/1336
-f 2452/1324 5018/1336 4905/1335
-f 2452/1324 5019/1339 5020/1338
-f 2452/1324 5020/1338 5017/1337
-f 2452/1324 4915/1327 2737/1340
-f 2452/1324 2737/1340 5019/1339
-f 2545/1341 4899/1344 2755/1343 2768/1342
-f 2547/1345 4887/1348 2763/1347 2756/1346
-f 2545/1341 2769/1350 2762/1349 4899/1344
-f 2560/1351 2768/1342 2755/1343 4897/1352
-f 2463/1320 2659/1318 4804/1319 4806/1321
-f 2563/1353 4891/1356 2757/1355 2767/1354
-f 2561/1357 4895/1360 2760/1359 2754/1358
-f 2547/1345 2770/1362 2764/1361 4887/1348
-f 2563/1353 2789/1364 2759/1363 4891/1356
-f 2488/1316 2654/1322 4771/1323 4769/1317
-f 2546/1365 4884/1366 2762/1349 2769/1350
-f 2517/1367 2702/1370 4932/1369 4933/1368
-f 2517/1367 2709/1372 2866/1371 2702/1370
-f 2517/1367 2703/1373 2867/1081 2709/1372
-f 2517/1367 4933/1368 4934/1374 2703/1373
-f 2518/1375 2703/1373 4934/1374 2637/1376
-f 2518/1375 2710/1080 2867/1081 2703/1373
-f 2518/1375 2704/1377 2868/1087 2710/1080
-f 2518/1375 2637/1376 2835/1378 2704/1377
-f 2519/1379 2704/1377 2835/1378 2638/1380
-f 2519/1379 2711/1381 2868/1087 2704/1377
-f 2519/1379 2705/1383 2869/1382 2711/1381
-f 2519/1379 2638/1380 2836/1384 2705/1383
-f 2520/1385 2705/1388 2836/1387 2639/1386
-f 2520/1385 2712/1390 2869/1389 2705/1388
-f 2520/1385 2706/1392 2870/1391 2712/1390
-f 2520/1385 2639/1386 2837/1393 2706/1392
-f 2521/1394 2706/1392 2837/1393 2640/1395
-f 2521/1394 2713/1396 2870/1391 2706/1392
-f 2521/1394 2707/1398 2871/1397 2713/1396
-f 2521/1394 2640/1395 4942/1399 2707/1398
-f 2522/1400 2707/1398 4942/1399 2641/1401
-f 2522/1400 2714/1402 2871/1397 2707/1398
-f 2522/1400 2708/1404 2872/1403 2714/1402
-f 2522/1400 2641/1401 2838/1405 2708/1404
-f 2523/1406 2717/1409 2873/1408 2731/1407
-f 2523/1406 2701/1411 2865/1410 2717/1409
-f 2523/1406 2718/1413 2832/1412 2701/1411
-f 2523/1406 2731/1407 2881/1414 2718/1413
-f 2524/1415 2726/1416 2832/1412 2718/1413
-f 2524/1415 2719/1418 4999/1417 2726/1416
-f 2524/1415 2730/1420 2882/1419 2719/1418
-f 2524/1415 2718/1413 2881/1414 2730/1420
-f 2525/1421 2723/1422 4999/1417 2719/1418
-f 2525/1421 2720/1423 2838/1405 2723/1422
-f 2525/1421 2729/1425 2883/1424 2720/1423
-f 2525/1421 2719/1418 2882/1419 2729/1425
-f 2526/1426 4998/1429 4944/1428 4873/1427
-f 2526/1426 4872/1431 2874/1430 4998/1429
-f 2527/1432 4943/1434 2839/1433 2635/1017
-f 2527/1432 4873/1427 4944/1428 4943/1434
-f 2528/1435 2716/1436 2872/1403 2708/1404
-f 2528/1435 2728/1438 2876/1437 2716/1436
-f 2528/1435 2720/1423 2883/1424 2728/1438
-f 2528/1435 2708/1404 2838/1405 2720/1423
-f 2549/1439 4889/1440 2764/1361 2770/1362
-f 2561/1357 2790/1442 2761/1441 4895/1360
-f 2549/1439 2767/1354 2757/1355 4889/1440
-f 2546/1365 2756/1346 2763/1347 4884/1366
-f 2562/1443 4893/1444 2759/1363 2789/1364
-f 2562/1443 2754/1358 2760/1359 4893/1444
-f 2560/1351 4897/1352 2761/1441 2790/1442
-f 2529/1445 2614/1076 2826/1072 2733/1446
-f 2529/1445 2721/1447 2827/1075 2614/1076
-f 2529/1445 2734/1059 4994/1060 2721/1447
-f 2529/1445 2733/1446 2884/1058 2734/1059
-f 2530/1448 2741/1449 2896/945 2749/946
-f 2530/1448 2750/1451 2895/1450 2741/1449
-f 2516/1167 5008/1168 5009/963 2693/964
-f 2531/1452 2740/1453 2895/1450 2750/1451
-f 2531/1452 2751/1455 2894/1454 2740/1453
-f 2515/1456 2699/1164 2878/1165 5007/1457
-f 2532/1458 2739/1459 2894/1454 2751/1455
-f 2532/1458 2752/1461 2893/1460 2739/1459
-f 2513/1179 4996/1180 4995/1463 2698/1462
-f 2533/1464 2738/1465 2893/1460 2752/1461
-f 2533/1464 2753/1467 2900/1466 2738/1465
-f 2510/1468 2694/1171 5010/1172 5013/1469
-f 2534/1470 2745/1471 2900/1466 2753/1467
-f 2534/1470 2746/958 2899/959 2745/1471
-f 2510/1468 5013/1469 5012/955 2695/956
-f 2515/1456 5007/1457 5006/1169 2700/1170
-f 2535/1472 5033/1475 5032/1474 4886/1473
-f 2535/1472 4885/1477 5034/1476 5033/1475
-f 4862/1478 4863/1481 4845/1480 4844/1479
-f 2536/1482 5035/1483 5034/1476 4885/1477
-f 2536/1482 4888/1485 5036/1484 5035/1483
-f 4858/1486 4836/1489 4832/1488 4857/1487
-f 2537/1490 5037/1491 5036/1484 4888/1485
-f 2537/1490 4890/1493 5022/1492 5037/1491
-f 4855/1494 4857/1487 4832/1488 4831/1495
-f 2538/1496 5023/1497 5022/1492 4890/1493
-f 2538/1496 4892/1499 5024/1498 5023/1497
-f 4870/1500 4856/1503 4827/1502 4825/1501
-f 2539/1504 5025/1505 5024/1498 4892/1499
-f 2539/1504 4894/1507 5026/1506 5025/1505
-f 4870/1500 4825/1501 4826/1509 4869/1508
-f 4855/1494 4831/1495 4827/1502 4856/1503
-f 2540/1510 5027/1513 5026/1512 4894/1511
-f 2540/1510 4896/1515 5028/1514 5027/1513
-f 4866/1516 4867/1519 4851/1518 4850/1517
-f 2541/1520 5029/1521 5028/1514 4896/1515
-f 2541/1520 4898/1523 5030/1522 5029/1521
-f 4868/1524 4869/1508 4826/1509 4853/1525
-f 2542/1526 5031/1527 5030/1522 4898/1523
-f 2542/1526 4886/1473 5032/1474 5031/1527
-f 4866/1516 4850/1517 4848/1529 4865/1528
-f 2543/1530 2617/1531 2824/1056 2624/1057
-f 2543/1530 2618/1070 2817/1065 2617/1531
-f 2543/1530 2733/1446 2826/1072 2618/1070
-f 2543/1530 2624/1057 2884/1058 2733/1446
-f 2544/1532 2613/1055 2824/1056 2766/1533
-f 2544/1532 5043/1138 2825/1062 2613/1055
-f 2544/1532 2765/1534 5040/1142 5043/1138
-f 2544/1532 2766/1533 2904/1535 2765/1534
-f 4864/1536 4865/1528 4848/1529 4847/1537
-f 2545/1341 2701/1411 2832/1412 2769/1350
-f 2545/1341 2768/1342 2865/1410 2701/1411
-f 2546/1365 2769/1350 2832/1412 5044/1538
-f 4862/1478 4844/1479 4841/1540 4861/1539
-f 2546/1365 5044/1538 2901/1541 2756/1346
-f 2547/1345 2756/1346 2901/1541 2772/1542
-f 4864/1536 4847/1537 4845/1480 4863/1481
-f 2547/1345 2772/1542 4932/1369 2770/1362
-f 2548/1543 4919/1035 4916/1025 2652/1130
-f 2548/1543 2653/1124 4920/1034 4919/1035
-f 4801/1544 4780/1545 4781/1077 2631/1078
-f 4794/1546 4796/1150 2629/1151 4799/1547
-f 2567/1122 2794/1115 4924/1046 4923/1047
-f 2549/1439 2702/1370 2866/1371 2767/1354
-f 2549/1439 2770/1362 4932/1369 2702/1370
-f 4860/1548 4861/1539 4841/1540 4840/1549
-f 2550/1550 2775/1551 2822/1050 2611/1051
-f 2550/1550 2765/1534 2904/1535 2775/1551
-f 2550/1550 2771/1140 5040/1142 2765/1534
-f 2550/1550 2611/1051 2823/1052 2771/1140
-f 2551/1552 2777/1553 2866/1371 2709/1372
-f 2551/1552 2780/1555 2863/1554 2777/1553
-f 2551/1552 2626/1082 2829/1083 2780/1555
-f 2551/1552 2709/1372 2867/1081 2626/1082
-f 2552/1556 2627/1086 2868/1087 2711/1381
-f 2552/1556 2781/1557 2830/1085 2627/1086
-f 2552/1556 2778/1559 2864/1558 2781/1557
-f 2552/1556 2711/1381 2869/1382 2778/1559
-f 2553/1560 2778/1561 2869/1389 2712/1390
-f 2553/1560 2782/1563 2864/1562 2778/1561
-f 2553/1560 2628/1565 2831/1564 2782/1563
-f 2553/1560 2712/1390 2870/1391 2628/1565
-f 2554/1566 2628/1565 2870/1391 2713/1396
-f 2554/1566 2783/1567 2831/1564 2628/1565
-f 2554/1566 2779/1569 2861/1568 2783/1567
-f 2554/1566 2713/1396 2871/1397 2779/1569
-f 2555/1570 2779/1569 2871/1397 2714/1402
-f 2555/1570 2692/1571 2861/1568 2779/1569
-f 2555/1570 2784/1573 2828/1572 2692/1571
-f 2555/1570 2714/1402 2872/1403 2784/1573
-f 2556/1574 2717/1409 2865/1410 2776/1575
-f 2556/1574 2732/1576 2873/1408 2717/1409
-f 2556/1574 2786/1578 4997/1577 2732/1576
-f 2556/1574 2776/1575 2862/1579 2786/1578
-f 2557/1580 2787/1583 2877/1582 2715/1581
-f 2557/1580 2786/1578 2862/1579 2787/1583
-f 2557/1580 2722/1584 4997/1577 2786/1578
-f 2557/1580 2715/1581 2879/1585 2722/1584
-f 2558/1586 2788/1588 2828/1572 2785/1587
-f 2558/1586 2715/1581 2877/1582 2788/1588
-f 2558/1586 2725/1589 2879/1585 2715/1581
-f 2558/1586 2785/1587 5002/1590 2725/1589
-f 2559/1591 2716/1436 2876/1437 2727/1592
-f 2559/1591 2784/1573 2872/1403 2716/1436
-f 2559/1591 2785/1587 2828/1572 2784/1573
-f 2559/1591 2727/1592 5002/1590 2785/1587
-f 2560/1351 2776/1575 2865/1410 2768/1342
-f 2560/1351 2790/1442 2862/1579 2776/1575
-f 4860/1548 4840/1549 4837/1594 4859/1593
-f 2561/1357 2754/1358 2903/1596 2791/1595
-f 2561/1357 2791/1595 2862/1579 2790/1442
-f 2562/1443 2789/1364 2863/1554 2792/1597
-f 2562/1443 2792/1597 2903/1596 2754/1358
-f 4868/1524 4853/1525 4851/1518 4867/1519
-f 4858/1486 4859/1593 4837/1594 4836/1489
-f 2563/1353 2777/1553 2863/1554 2789/1364
-f 2563/1353 2767/1354 2866/1371 2777/1553
-f 2575/993 2570/994 2801/1599 2805/1598
-f 2579/983 2810/984 2797/1121 2479/1123
-f 2477/1600 4928/1074 4927/1075 2634/1601
-f 2580/971 2581/972 2794/1115 2567/1122
-f 4854/1602 4795/1605 4800/1604 2572/1603
-f 2566/1117 4935/1606 2834/1135 4798/1136
-f 2566/1117 2800/1118 4936/1607 4935/1606
-f 2567/1122 4923/1047 4922/1040 2797/1121
-f 4801/1544 4802/1609 4782/1608 4780/1545
-f 2565/1139 2632/1141 2902/1142 5039/1140
-f 2568/1610 4937/1611 4936/1607 2800/1118
-f 2568/1610 2801/1599 4938/1612 4937/1611
-f 2574/1613 2805/1598 2801/1599 2568/1610
-f 4794/1546 4799/1547 4800/1604 4795/1605
-f 4901/1614 5005/1615 2874/1430 4872/1431
-f 4901/1614 2799/1091 5004/1092 5005/1615
-f 2570/994 4939/1616 4938/1612 2801/1599
-f 2570/994 2802/995 4940/1617 4939/1616
-f 4900/1618 4993/1447 2875/1060 4820/1127
-f 4854/1602 2572/1603 4782/1608 4802/1609
-f 4904/1619 4821/1622 4818/1621 4817/1620
-f 2577/975 2808/968 2652/1130 2480/1128
-f 2578/965 2809/969 2653/1124 2548/1543
-f 2571/1016 4941/1623 4940/1617 2802/995
-f 2571/1016 2635/1017 2839/1433 4941/1623
-f 4902/1624 2796/1132 2833/1133 5041/1625
-f 4902/1624 5041/1625 5042/1094 2798/1095
-f 2573/1116 4797/1628 4945/1627 4946/1626
-f 2573/1116 4946/1626 4947/1629 2804/1119
-f 2574/1613 2804/1119 4947/1629 4948/1630
-f 2574/1613 4948/1630 4949/1631 2805/1598
-f 2575/993 2805/1598 4949/1631 4950/1632
-f 2575/993 4950/1632 4951/1633 2806/996
-f 2576/1015 2806/996 4951/1633 4952/1634
-f 2576/1015 4952/1634 4953/1635 2807/1018
-f 2573/1116 2566/1117 4798/1136 4797/1628
-f 4900/1618 2634/1601 4927/1075 4993/1447
-f 2477/1600 2758/1129 4918/1027 4928/1074
-f 2576/1015 2571/1016 2802/995 2806/996
-f 2579/983 2479/1123 2653/1124 2809/969
-f 4792/1636 4874/1637 4818/1621 4821/1622
-f 2574/1613 2568/1610 2800/1118 2804/1119
-f 2577/975 2480/1128 2758/1129 2582/978
-f 4903/1149 4784/1639 2840/1638 2803/1152
-f 4904/1619 4817/1620 2844/1641 4791/1640
-f 4792/1636 4793/1147 2651/1148 4874/1637
-f 2578/965 2548/1543 2652/1130 2808/968
-f 2583/1642 2766/1533 2824/1056 2617/1531
-f 2583/1642 2775/1551 2904/1535 2766/1533
-f 2583/1642 2616/1068 2822/1050 2775/1551
-f 2583/1642 2617/1531 2817/1065 2616/1068
-f 2905/1729 2927/1732 2933/1731 2914/1730
-f 2905/1729 2920/1734 2932/1733 2927/1732
-f 2906/1743 2924/1746 2930/1745 2915/1744
-f 2906/1743 2916/1748 2937/1747 2924/1746
-f 2912/1749 2921/1752 2931/1751 2926/1750
-f 2907/1763 2922/1766 2935/1765 2917/1764
-f 2907/1763 2918/1768 2936/1767 2922/1766
-f 2908/1769 2928/1772 2934/1771 2919/1770
-f 2908/1769 2914/1730 2933/1731 2928/1772
-f 2909/1781 2915/1744 2930/1745 2925/1782
-f 2910/1783 2923/1784 2937/1747 2916/1748
-f 2910/1783 2917/1786 2935/1785 2923/1784
-f 2911/1793 2929/1794 2936/1767 2918/1768
-f 2911/1793 2919/1770 2934/1771 2929/1794
-f 2912/1749 2926/1750 2932/1733 2920/1734
-f 2909/1781 2925/1782 2931/1751 2921/1752
-f 2938/2003 5103/2006 5102/2005 5090/2004
-f 3000/2007 5091/2009 2978/2008
-f 3000/2007 2955/2010 5091/2009
-f 2939/2011 2983/2014 2984/2013 2940/2012
-f 5094/2015 2982/2017 5101/2016
-f 2941/2018 2939/2011 2940/2012 2942/2019
-f 2940/2012 5104/2021 2961/2020 2942/2019
-f 2944/2022 2942/2019 2961/2020 2964/2023
-f 2943/2024 2941/2018 2942/2019 2944/2022
-f 2946/2025 2944/2022 2964/2023 2967/2026
-f 2945/2027 2943/2024 2944/2022 2946/2025
-f 2948/2028 2946/2025 2967/2026 2970/2029
-f 2947/2030 2945/2027 2946/2025 2948/2028
-f 2950/2031 2948/2028 2970/2029 2973/2032
-f 2949/2033 2947/2030 2948/2028 2950/2031
-f 2952/2034 2950/2031 2973/2032 2976/2035
-f 2951/2036 2949/2033 2950/2031 2952/2034
-f 5093/2037 2982/2017 5094/2015
-f 5095/2038 2982/2017 5093/2037
-f 5096/2039 2982/2017 5095/2038
-f 5097/2040 2982/2017 5096/2039
-f 5098/2041 2982/2017 5097/2040
-f 5100/2042 2982/2017 5099/2043
-f 5099/2043 2982/2017 5098/2041
-f 2981/2044 2952/2034 2976/2035 3006/2045
-f 2980/2046 2951/2036 2952/2034 2981/2044
-f 5104/2021 2940/2012 2953/2047
-f 2940/2012 2984/2013 2953/2047
-f 2938/2003 5092/2049 2958/2048 5103/2006
-f 2954/2050 5105/2053 5116/2052 5117/2051
-f 3000/2007 3001/2055 5106/2054
-f 3000/2007 5106/2054 2955/2010
-f 2956/2056 2957/2059 3009/2058 3008/2057
-f 5108/2060 5115/2062 3007/2061
-f 2959/2063 2960/2064 2957/2059 2956/2056
-f 2957/2059 2960/2064 2961/2020 5104/2021
-f 2963/2065 2964/2023 2961/2020 2960/2064
-f 2962/2066 2963/2065 2960/2064 2959/2063
-f 2966/2067 2967/2026 2964/2023 2963/2065
-f 2965/2068 2966/2067 2963/2065 2962/2066
-f 2969/2069 2970/2029 2967/2026 2966/2067
-f 2968/2070 2969/2069 2966/2067 2965/2068
-f 2972/2071 2973/2032 2970/2029 2969/2069
-f 2971/2072 2972/2071 2969/2069 2968/2070
-f 2975/2073 2976/2035 2973/2032 2972/2071
-f 2974/2074 2975/2073 2972/2071 2971/2072
-f 5107/2075 5108/2060 3007/2061
-f 5109/2076 5107/2075 3007/2061
-f 5110/2077 5109/2076 3007/2061
-f 5111/2078 5110/2077 3007/2061
-f 5112/2079 5111/2078 3007/2061
-f 5114/2080 5113/2081 3007/2061
-f 5113/2081 5112/2079 3007/2061
-f 3005/2082 3006/2045 2976/2035 2975/2073
-f 3004/2083 3005/2082 2975/2073 2974/2074
-f 5104/2021 2977/2084 2957/2059
-f 2957/2059 2977/2084 3009/2058
-f 2954/2050 5117/2051 2958/2086 5092/2085
-f 2979/2087 5090/2004 5102/2005 5127/2088
-f 3000/2007 2978/2008 5118/2089
-f 3000/2007 5118/2089 3003/2090
-f 2985/2091 2986/2094 2984/2093 2983/2092
-f 5121/2095 5101/2016 2982/2017
-f 2987/2096 2988/2097 2986/2094 2985/2091
-f 2986/2094 2988/2097 3015/2099 5128/2098
-f 2990/2100 3018/2101 3015/2099 2988/2097
-f 2989/2102 2990/2100 2988/2097 2987/2096
-f 2992/2103 3021/2104 3018/2101 2990/2100
-f 2991/2105 2992/2103 2990/2100 2989/2102
-f 2994/2106 3024/2107 3021/2104 2992/2103
-f 2993/2108 2994/2106 2992/2103 2991/2105
-f 2996/2109 3027/2110 3024/2107 2994/2106
-f 2995/2111 2996/2109 2994/2106 2993/2108
-f 2998/2112 3030/2113 3027/2110 2996/2109
-f 2997/2114 2998/2112 2996/2109 2995/2111
-f 5120/2115 5121/2095 2982/2017
-f 5122/2116 5120/2115 2982/2017
-f 5123/2117 5122/2116 2982/2017
-f 5124/2118 5123/2117 2982/2017
-f 5125/2119 5124/2118 2982/2017
-f 5100/2042 5126/2120 2982/2017
-f 5126/2120 5125/2119 2982/2017
-f 2981/2044 3006/2045 3030/2113 2998/2112
-f 2980/2046 2981/2044 2998/2112 2997/2114
-f 5128/2098 2999/2121 2986/2094
-f 2986/2094 2999/2121 2984/2093
-f 2979/2087 5127/2088 3012/2123 5119/2122
-f 3002/2124 5137/2125 5116/2052 5105/2053
-f 3000/2007 5129/2126 3001/2055
-f 3000/2007 3003/2090 5129/2126
-f 3010/2127 3008/2130 3009/2129 3011/2128
-f 5131/2131 3007/2061 5115/2062
-f 3013/2132 3010/2127 3011/2128 3014/2133
-f 3011/2128 5128/2098 3015/2099 3014/2133
-f 3017/2134 3014/2133 3015/2099 3018/2101
-f 3016/2135 3013/2132 3014/2133 3017/2134
-f 3020/2136 3017/2134 3018/2101 3021/2104
-f 3019/2137 3016/2135 3017/2134 3020/2136
-f 3023/2138 3020/2136 3021/2104 3024/2107
-f 3022/2139 3019/2137 3020/2136 3023/2138
-f 3026/2140 3023/2138 3024/2107 3027/2110
-f 3025/2141 3022/2139 3023/2138 3026/2140
-f 3029/2142 3026/2140 3027/2110 3030/2113
-f 3028/2143 3025/2141 3026/2140 3029/2142
-f 5130/2144 3007/2061 5131/2131
-f 5132/2145 3007/2061 5130/2144
-f 5133/2146 3007/2061 5132/2145
-f 5134/2147 3007/2061 5133/2146
-f 5135/2148 3007/2061 5134/2147
-f 5114/2080 3007/2061 5136/2149
-f 5136/2149 3007/2061 5135/2148
-f 3005/2082 3029/2142 3030/2113 3006/2045
-f 3004/2083 3028/2143 3029/2142 3005/2082
-f 5128/2098 3011/2128 3031/2150
-f 3011/2128 3009/2129 3031/2150
-f 3002/2124 5119/2122 3012/2123 5137/2125
-f 3032/2151 5151/2154 5150/2153 5138/2152
-f 3094/2155 5139/2157 3072/2156
-f 3094/2155 3049/2158 5139/2157
-f 3033/2159 3077/2162 3078/2161 3034/2160
-f 5142/2163 3076/2165 5149/2164
-f 3035/2166 3033/2159 3034/2160 3036/2167
-f 3034/2160 5152/2169 3055/2168 3036/2167
-f 3038/2170 3036/2167 3055/2168 3058/2171
-f 3037/2172 3035/2166 3036/2167 3038/2170
-f 3040/2173 3038/2170 3058/2171 3061/2174
-f 3039/2175 3037/2172 3038/2170 3040/2173
-f 3042/2176 3040/2173 3061/2174 3064/2177
-f 3041/2178 3039/2175 3040/2173 3042/2176
-f 3044/2179 3042/2176 3064/2177 3067/2180
-f 3043/2181 3041/2178 3042/2176 3044/2179
-f 3046/2182 3044/2179 3067/2180 3070/2183
-f 3045/2184 3043/2181 3044/2179 3046/2182
-f 5141/2185 3076/2165 5142/2163
-f 5143/2186 3076/2165 5141/2185
-f 5144/2187 3076/2165 5143/2186
-f 5145/2188 3076/2165 5144/2187
-f 5146/2189 3076/2165 5145/2188
-f 5148/2190 3076/2165 5147/2191
-f 5147/2191 3076/2165 5146/2189
-f 3075/2192 3046/2182 3070/2183 3100/2193
-f 3074/2194 3045/2184 3046/2182 3075/2192
-f 5152/2169 3034/2160 3047/2195
-f 3034/2160 3078/2161 3047/2195
-f 3032/2151 5140/2197 3052/2196 5151/2154
-f 3048/2198 5153/2201 5164/2200 5165/2199
-f 3094/2155 3095/2203 5154/2202
-f 3094/2155 5154/2202 3049/2158
-f 3050/2204 3051/2207 3103/2206 3102/2205
-f 5156/2208 5163/2210 3101/2209
-f 3053/2211 3054/2212 3051/2207 3050/2204
-f 3051/2207 3054/2212 3055/2168 5152/2169
-f 3057/2213 3058/2171 3055/2168 3054/2212
-f 3056/2214 3057/2213 3054/2212 3053/2211
-f 3060/2215 3061/2174 3058/2171 3057/2213
-f 3059/2216 3060/2215 3057/2213 3056/2214
-f 3063/2217 3064/2177 3061/2174 3060/2215
-f 3062/2218 3063/2217 3060/2215 3059/2216
-f 3066/2219 3067/2180 3064/2177 3063/2217
-f 3065/2220 3066/2219 3063/2217 3062/2218
-f 3069/2221 3070/2183 3067/2180 3066/2219
-f 3068/2222 3069/2221 3066/2219 3065/2220
-f 5155/2223 5156/2208 3101/2209
-f 5157/2224 5155/2223 3101/2209
-f 5158/2225 5157/2224 3101/2209
-f 5159/2226 5158/2225 3101/2209
-f 5160/2227 5159/2226 3101/2209
-f 5162/2228 5161/2229 3101/2209
-f 5161/2229 5160/2227 3101/2209
-f 3099/2230 3100/2193 3070/2183 3069/2221
-f 3098/2231 3099/2230 3069/2221 3068/2222
-f 5152/2169 3071/2232 3051/2207
-f 3051/2207 3071/2232 3103/2206
-f 3048/2198 5165/2199 3052/2234 5140/2233
-f 3073/2235 5138/2152 5150/2153 5175/2236
-f 3094/2155 3072/2156 5166/2237
-f 3094/2155 5166/2237 3097/2238
-f 3079/2239 3080/2242 3078/2241 3077/2240
-f 5169/2243 5149/2164 3076/2165
-f 3081/2244 3082/2245 3080/2242 3079/2239
-f 3080/2242 3082/2245 3109/2247 5176/2246
-f 3084/2248 3112/2249 3109/2247 3082/2245
-f 3083/2250 3084/2248 3082/2245 3081/2244
-f 3086/2251 3115/2252 3112/2249 3084/2248
-f 3085/2253 3086/2251 3084/2248 3083/2250
-f 3088/2254 3118/2255 3115/2252 3086/2251
-f 3087/2256 3088/2254 3086/2251 3085/2253
-f 3090/2257 3121/2258 3118/2255 3088/2254
-f 3089/2259 3090/2257 3088/2254 3087/2256
-f 3092/2260 3124/2261 3121/2258 3090/2257
-f 3091/2262 3092/2260 3090/2257 3089/2259
-f 5168/2263 5169/2243 3076/2165
-f 5170/2264 5168/2263 3076/2165
-f 5171/2265 5170/2264 3076/2165
-f 5172/2266 5171/2265 3076/2165
-f 5173/2267 5172/2266 3076/2165
-f 5148/2190 5174/2268 3076/2165
-f 5174/2268 5173/2267 3076/2165
-f 3075/2192 3100/2193 3124/2261 3092/2260
-f 3074/2194 3075/2192 3092/2260 3091/2262
-f 5176/2246 3093/2269 3080/2242
-f 3080/2242 3093/2269 3078/2241
-f 3073/2235 5175/2236 3106/2271 5167/2270
-f 3096/2272 5185/2273 5164/2200 5153/2201
-f 3094/2155 5177/2274 3095/2203
-f 3094/2155 3097/2238 5177/2274
-f 3104/2275 3102/2278 3103/2277 3105/2276
-f 5179/2279 3101/2209 5163/2210
-f 3107/2280 3104/2275 3105/2276 3108/2281
-f 3105/2276 5176/2246 3109/2247 3108/2281
-f 3111/2282 3108/2281 3109/2247 3112/2249
-f 3110/2283 3107/2280 3108/2281 3111/2282
-f 3114/2284 3111/2282 3112/2249 3115/2252
-f 3113/2285 3110/2283 3111/2282 3114/2284
-f 3117/2286 3114/2284 3115/2252 3118/2255
-f 3116/2287 3113/2285 3114/2284 3117/2286
-f 3120/2288 3117/2286 3118/2255 3121/2258
-f 3119/2289 3116/2287 3117/2286 3120/2288
-f 3123/2290 3120/2288 3121/2258 3124/2261
-f 3122/2291 3119/2289 3120/2288 3123/2290
-f 5178/2292 3101/2209 5179/2279
-f 5180/2293 3101/2209 5178/2292
-f 5181/2294 3101/2209 5180/2293
-f 5182/2295 3101/2209 5181/2294
-f 5183/2296 3101/2209 5182/2295
-f 5162/2228 3101/2209 5184/2297
-f 5184/2297 3101/2209 5183/2296
-f 3099/2230 3123/2290 3124/2261 3100/2193
-f 3098/2231 3122/2291 3123/2290 3099/2230
-f 5176/2246 3105/2276 3125/2298
-f 3105/2276 3103/2277 3125/2298
-f 3096/2272 5167/2270 3106/2271 5185/2273
-f 3126/2299 5199/2302 5198/2301 5186/2300
-f 3188/2303 5187/2305 3166/2304
-f 3188/2303 3143/2306 5187/2305
-f 3127/2307 3171/2310 3172/2309 3128/2308
-f 5190/2311 3170/2313 5197/2312
-f 3129/2314 3127/2307 3128/2308 3130/2315
-f 3128/2308 5200/2317 3149/2316 3130/2315
-f 3132/2318 3130/2315 3149/2316 3152/2319
-f 3131/2320 3129/2314 3130/2315 3132/2318
-f 3134/2321 3132/2318 3152/2319 3155/2322
-f 3133/2323 3131/2320 3132/2318 3134/2321
-f 3136/2324 3134/2321 3155/2322 3158/2325
-f 3135/2326 3133/2323 3134/2321 3136/2324
-f 3138/2327 3136/2324 3158/2325 3161/2328
-f 3137/2329 3135/2326 3136/2324 3138/2327
-f 3140/2330 3138/2327 3161/2328 3164/2331
-f 3139/2332 3137/2329 3138/2327 3140/2330
-f 5189/2333 3170/2313 5190/2311
-f 5191/2334 3170/2313 5189/2333
-f 5192/2335 3170/2313 5191/2334
-f 5193/2336 3170/2313 5192/2335
-f 5194/2337 3170/2313 5193/2336
-f 5196/2338 3170/2313 5195/2339
-f 5195/2339 3170/2313 5194/2337
-f 3169/2340 3140/2330 3164/2331 3194/2341
-f 3168/2342 3139/2332 3140/2330 3169/2340
-f 5200/2317 3128/2308 3141/2343
-f 3128/2308 3172/2309 3141/2343
-f 3126/2299 5188/2345 3146/2344 5199/2302
-f 3142/2346 5201/2349 5212/2348 5213/2347
-f 3188/2303 3189/2351 5202/2350
-f 3188/2303 5202/2350 3143/2306
-f 3144/2352 3145/2355 3197/2354 3196/2353
-f 5204/2356 5211/2358 3195/2357
-f 3147/2359 3148/2360 3145/2355 3144/2352
-f 3145/2355 3148/2360 3149/2316 5200/2317
-f 3151/2361 3152/2319 3149/2316 3148/2360
-f 3150/2362 3151/2361 3148/2360 3147/2359
-f 3154/2363 3155/2322 3152/2319 3151/2361
-f 3153/2364 3154/2363 3151/2361 3150/2362
-f 3157/2365 3158/2325 3155/2322 3154/2363
-f 3156/2366 3157/2365 3154/2363 3153/2364
-f 3160/2367 3161/2328 3158/2325 3157/2365
-f 3159/2368 3160/2367 3157/2365 3156/2366
-f 3163/2369 3164/2331 3161/2328 3160/2367
-f 3162/2370 3163/2369 3160/2367 3159/2368
-f 5203/2371 5204/2356 3195/2357
-f 5205/2372 5203/2371 3195/2357
-f 5206/2373 5205/2372 3195/2357
-f 5207/2374 5206/2373 3195/2357
-f 5208/2375 5207/2374 3195/2357
-f 5210/2376 5209/2377 3195/2357
-f 5209/2377 5208/2375 3195/2357
-f 3193/2378 3194/2341 3164/2331 3163/2369
-f 3192/2379 3193/2378 3163/2369 3162/2370
-f 5200/2317 3165/2380 3145/2355
-f 3145/2355 3165/2380 3197/2354
-f 3142/2346 5213/2347 3146/2382 5188/2381
-f 3167/2383 5186/2300 5198/2301 5223/2384
-f 3188/2303 3166/2304 5214/2385
-f 3188/2303 5214/2385 3191/2386
-f 3173/2387 3174/2390 3172/2389 3171/2388
-f 5217/2391 5197/2312 3170/2313
-f 3175/2392 3176/2393 3174/2390 3173/2387
-f 3174/2390 3176/2393 3203/2395 5224/2394
-f 3178/2396 3206/2397 3203/2395 3176/2393
-f 3177/2398 3178/2396 3176/2393 3175/2392
-f 3180/2399 3209/2400 3206/2397 3178/2396
-f 3179/2401 3180/2399 3178/2396 3177/2398
-f 3182/2402 3212/2403 3209/2400 3180/2399
-f 3181/2404 3182/2402 3180/2399 3179/2401
-f 3184/2405 3215/2406 3212/2403 3182/2402
-f 3183/2407 3184/2405 3182/2402 3181/2404
-f 3186/2408 3218/2409 3215/2406 3184/2405
-f 3185/2410 3186/2408 3184/2405 3183/2407
-f 5216/2411 5217/2391 3170/2313
-f 5218/2412 5216/2411 3170/2313
-f 5219/2413 5218/2412 3170/2313
-f 5220/2414 5219/2413 3170/2313
-f 5221/2415 5220/2414 3170/2313
-f 5196/2338 5222/2416 3170/2313
-f 5222/2416 5221/2415 3170/2313
-f 3169/2340 3194/2341 3218/2409 3186/2408
-f 3168/2342 3169/2340 3186/2408 3185/2410
-f 5224/2394 3187/2417 3174/2390
-f 3174/2390 3187/2417 3172/2389
-f 3167/2383 5223/2384 3200/2419 5215/2418
-f 3190/2420 5233/2421 5212/2348 5201/2349
-f 3188/2303 5225/2422 3189/2351
-f 3188/2303 3191/2386 5225/2422
-f 3198/2423 3196/2426 3197/2425 3199/2424
-f 5227/2427 3195/2357 5211/2358
-f 3201/2428 3198/2423 3199/2424 3202/2429
-f 3199/2424 5224/2394 3203/2395 3202/2429
-f 3205/2430 3202/2429 3203/2395 3206/2397
-f 3204/2431 3201/2428 3202/2429 3205/2430
-f 3208/2432 3205/2430 3206/2397 3209/2400
-f 3207/2433 3204/2431 3205/2430 3208/2432
-f 3211/2434 3208/2432 3209/2400 3212/2403
-f 3210/2435 3207/2433 3208/2432 3211/2434
-f 3214/2436 3211/2434 3212/2403 3215/2406
-f 3213/2437 3210/2435 3211/2434 3214/2436
-f 3217/2438 3214/2436 3215/2406 3218/2409
-f 3216/2439 3213/2437 3214/2436 3217/2438
-f 5226/2440 3195/2357 5227/2427
-f 5228/2441 3195/2357 5226/2440
-f 5229/2442 3195/2357 5228/2441
-f 5230/2443 3195/2357 5229/2442
-f 5231/2444 3195/2357 5230/2443
-f 5210/2376 3195/2357 5232/2445
-f 5232/2445 3195/2357 5231/2444
-f 3193/2378 3217/2438 3218/2409 3194/2341
-f 3192/2379 3216/2439 3217/2438 3193/2378
-f 5224/2394 3199/2424 3219/2446
-f 3199/2424 3197/2425 3219/2446
-f 3190/2420 5215/2418 3200/2419 5233/2421
-f 3220/2447 5247/2450 5246/2449 5234/2448
-f 3282/2451 5235/2453 3260/2452
-f 3282/2451 3237/2454 5235/2453
-f 3221/2455 3265/2458 3266/2457 3222/2456
-f 5238/2459 3264/2461 5245/2460
-f 3223/2462 3221/2455 3222/2456 3224/2463
-f 3222/2456 5248/2465 3243/2464 3224/2463
-f 3226/2466 3224/2463 3243/2464 3246/2467
-f 3225/2468 3223/2462 3224/2463 3226/2466
-f 3228/2469 3226/2466 3246/2467 3249/2470
-f 3227/2471 3225/2468 3226/2466 3228/2469
-f 3230/2472 3228/2469 3249/2470 3252/2473
-f 3229/2474 3227/2471 3228/2469 3230/2472
-f 3232/2475 3230/2472 3252/2473 3255/2476
-f 3231/2477 3229/2474 3230/2472 3232/2475
-f 3234/2478 3232/2475 3255/2476 3258/2479
-f 3233/2480 3231/2477 3232/2475 3234/2478
-f 5237/2481 3264/2461 5238/2459
-f 5239/2482 3264/2461 5237/2481
-f 5240/2483 3264/2461 5239/2482
-f 5241/2484 3264/2461 5240/2483
-f 5242/2485 3264/2461 5241/2484
-f 5244/2486 3264/2461 5243/2487
-f 5243/2487 3264/2461 5242/2485
-f 3263/2488 3234/2478 3258/2479 3288/2489
-f 3262/2490 3233/2480 3234/2478 3263/2488
-f 5248/2465 3222/2456 3235/2491
-f 3222/2456 3266/2457 3235/2491
-f 3220/2447 5236/2493 3240/2492 5247/2450
-f 3236/2494 5249/2497 5260/2496 5261/2495
-f 3282/2451 3283/2499 5250/2498
-f 3282/2451 5250/2498 3237/2454
-f 3238/2500 3239/2503 3291/2502 3290/2501
-f 5252/2504 5259/2506 3289/2505
-f 3241/2507 3242/2508 3239/2503 3238/2500
-f 3239/2503 3242/2508 3243/2464 5248/2465
-f 3245/2509 3246/2467 3243/2464 3242/2508
-f 3244/2510 3245/2509 3242/2508 3241/2507
-f 3248/2511 3249/2470 3246/2467 3245/2509
-f 3247/2512 3248/2511 3245/2509 3244/2510
-f 3251/2513 3252/2473 3249/2470 3248/2511
-f 3250/2514 3251/2513 3248/2511 3247/2512
-f 3254/2515 3255/2476 3252/2473 3251/2513
-f 3253/2516 3254/2515 3251/2513 3250/2514
-f 3257/2517 3258/2479 3255/2476 3254/2515
-f 3256/2518 3257/2517 3254/2515 3253/2516
-f 5251/2519 5252/2504 3289/2505
-f 5253/2520 5251/2519 3289/2505
-f 5254/2521 5253/2520 3289/2505
-f 5255/2522 5254/2521 3289/2505
-f 5256/2523 5255/2522 3289/2505
-f 5258/2524 5257/2525 3289/2505
-f 5257/2525 5256/2523 3289/2505
-f 3287/2526 3288/2489 3258/2479 3257/2517
-f 3286/2527 3287/2526 3257/2517 3256/2518
-f 5248/2465 3259/2528 3239/2503
-f 3239/2503 3259/2528 3291/2502
-f 3236/2494 5261/2495 3240/2530 5236/2529
-f 3261/2531 5234/2448 5246/2449 5271/2532
-f 3282/2451 3260/2452 5262/2533
-f 3282/2451 5262/2533 3285/2534
-f 3267/2535 3268/2538 3266/2537 3265/2536
-f 5265/2539 5245/2460 3264/2461
-f 3269/2540 3270/2541 3268/2538 3267/2535
-f 3268/2538 3270/2541 3297/2543 5272/2542
-f 3272/2544 3300/2545 3297/2543 3270/2541
-f 3271/2546 3272/2544 3270/2541 3269/2540
-f 3274/2547 3303/2548 3300/2545 3272/2544
-f 3273/2549 3274/2547 3272/2544 3271/2546
-f 3276/2550 3306/2551 3303/2548 3274/2547
-f 3275/2552 3276/2550 3274/2547 3273/2549
-f 3278/2553 3309/2554 3306/2551 3276/2550
-f 3277/2555 3278/2553 3276/2550 3275/2552
-f 3280/2556 3312/2557 3309/2554 3278/2553
-f 3279/2558 3280/2556 3278/2553 3277/2555
-f 5264/2559 5265/2539 3264/2461
-f 5266/2560 5264/2559 3264/2461
-f 5267/2561 5266/2560 3264/2461
-f 5268/2562 5267/2561 3264/2461
-f 5269/2563 5268/2562 3264/2461
-f 5244/2486 5270/2564 3264/2461
-f 5270/2564 5269/2563 3264/2461
-f 3263/2488 3288/2489 3312/2557 3280/2556
-f 3262/2490 3263/2488 3280/2556 3279/2558
-f 5272/2542 3281/2565 3268/2538
-f 3268/2538 3281/2565 3266/2537
-f 3261/2531 5271/2532 3294/2567 5263/2566
-f 3284/2568 5281/2569 5260/2496 5249/2497
-f 3282/2451 5273/2570 3283/2499
-f 3282/2451 3285/2534 5273/2570
-f 3292/2571 3290/2574 3291/2573 3293/2572
-f 5275/2575 3289/2505 5259/2506
-f 3295/2576 3292/2571 3293/2572 3296/2577
-f 3293/2572 5272/2542 3297/2543 3296/2577
-f 3299/2578 3296/2577 3297/2543 3300/2545
-f 3298/2579 3295/2576 3296/2577 3299/2578
-f 3302/2580 3299/2578 3300/2545 3303/2548
-f 3301/2581 3298/2579 3299/2578 3302/2580
-f 3305/2582 3302/2580 3303/2548 3306/2551
-f 3304/2583 3301/2581 3302/2580 3305/2582
-f 3308/2584 3305/2582 3306/2551 3309/2554
-f 3307/2585 3304/2583 3305/2582 3308/2584
-f 3311/2586 3308/2584 3309/2554 3312/2557
-f 3310/2587 3307/2585 3308/2584 3311/2586
-f 5274/2588 3289/2505 5275/2575
-f 5276/2589 3289/2505 5274/2588
-f 5277/2590 3289/2505 5276/2589
-f 5278/2591 3289/2505 5277/2590
-f 5279/2592 3289/2505 5278/2591
-f 5258/2524 3289/2505 5280/2593
-f 5280/2593 3289/2505 5279/2592
-f 3287/2526 3311/2586 3312/2557 3288/2489
-f 3286/2527 3310/2587 3311/2586 3287/2526
-f 5272/2542 3293/2572 3313/2594
-f 3293/2572 3291/2573 3313/2594
-f 3284/2568 5263/2566 3294/2567 5281/2569
-f 2913/2595 5087/2597 5088/2596
-f 2913/2595 5088/2596 5085/2598
-f 2913/2595 5083/2600 5084/2599
-f 2913/2595 5084/2599 5081/2601
-f 2913/2595 5085/2598 5086/2602
-f 2913/2595 5086/2602 5083/2600
-f 2913/2595 5077/2604 5078/2603
-f 2913/2595 5078/2603 5076/2605
-f 2913/2595 5074/2607 5089/2606
-f 2913/2595 5089/2606 5087/2597
-f 2913/2595 5075/2608 5074/2607
-f 2913/2595 5076/2605 5075/2608
-f 2913/2595 5081/2601 5082/2609
-f 2913/2595 5082/2609 5079/2610
-f 2913/2595 5079/2610 5080/2611
-f 2913/2595 5080/2611 5077/2604
-f 2584/2612 5058/2614 5046/2613
-f 2584/2612 5056/2615 5058/2614
-f 2584/2612 5045/2617 4931/2616
-f 2584/2612 5046/2613 5045/2617
-f 2584/2612 4930/2619 4929/2618
-f 2584/2612 4931/2616 4930/2619
-f 2584/2612 5053/2621 5054/2620
-f 2584/2612 5052/2622 5053/2621
-f 2584/2612 5048/2624 5047/2623
-f 2584/2612 4929/2618 5048/2624
-f 2584/2612 5055/2625 5052/2622
-f 2584/2612 4990/2626 5055/2625
-f 2584/2612 5050/2628 5049/2627
-f 2584/2612 5047/2623 5050/2628
-f 2584/2612 4991/2629 4990/2626
-f 2584/2612 4992/2630 4991/2629
-f 2584/2612 5051/2631 4992/2630
-f 2584/2612 5049/2627 5051/2631
-f 2584/2612 5057/2632 5056/2615
-f 2584/2612 5054/2620 5057/2632
-f 4813/2633 4879/2636 4878/2635 4814/2634
-f 4967/2637 4814/2640 4878/2639 4877/2638
-f 4810/2641 4762/2644 4763/2643 4812/2642
-f 4807/2645 4881/2648 4880/2647 4809/2646
-f 4815/2649 4970/2652 4876/2651 4875/2650
-f 4813/2633 4809/2646 4880/2647 4879/2636
-f 4810/2641 4811/2654 4761/2653 4762/2644
-f 4819/2655 4764/2658 4765/2657 4966/2656
-f 5038/2659 4759/2660 4761/2653 4811/2654
-f 4815/2649 4875/2650 4760/2662 4816/2661
-f 5038/2659 4816/2661 4760/2662 4759/2660
-f 4819/2655 4812/2642 4763/2643 4764/2658
-f 4967/2637 4877/2638 4876/2651 4970/2652
-f 4965/2663 4883/2666 4882/2665 4808/2664
-f 4965/2663 4966/2656 4765/2657 4883/2666
-f 4807/2645 4808/2664 4882/2665 4881/2648
-f 2272/3012 2356/3000 4669/3014 4673/3015
-f 2249/893 2379/890 4678/2670 4686/2669
-f 2211/750 2321/751 4634/2671 2402/754
-f 2237/3001 4676/3016 4668/3017 2357/2999
-f 2251/3004 2294/2970 4622/3018 2401/3005
-f 2197/2965 2293/2964 4624/3019 4623/3020
-f 2196/2963 2292/2962 4616/3021 4625/3022
-f 2209/747 2320/748 4636/2680 4637/2679
-f 2236/2998 2357/2999 4668/3017 4667/3023
-f 2250/895 4684/2683 4682/2682 2377/888
-f 2272/3012 4673/3015 4622/3018 2400/2969
-f 2210/749 4635/2684 4636/2680 2320/748
-f 2236/2998 4667/3023 4669/3014 2356/3000
-f 2210/749 2317/743 4630/2685 4635/2684
-f 2273/3013 4620/3024 4615/3025 2291/2961
-f 2238/3003 4674/3026 4675/3027 2358/3002
-f 2237/3001 2358/3002 4675/3027 4676/3016
-f 2226/2977 4664/3028 4661/3029 4715/2978
-f 2207/739 2342/740 4631/2693 4629/2692
-f 2194/2957 2289/2958 4618/3030 4617/3031
-f 2196/2963 4625/3022 4624/3019 2293/2964
-f 2247/884 2377/888 4682/2682 4680/2696
-f 2209/747 4637/2679 4628/2697 2319/745
-f 2226/2977 2340/2959 4619/3032 4664/3028
-f 2208/744 4626/2700 4627/2699 2318/746
-f 2266/3010 4740/3011 4706/3033 4709/3034
-f 2247/884 4680/2696 4681/2703 2397/887
-f 2198/2966 2400/2969 4622/3018 2294/2970
-f 2238/3003 2354/2997 4672/3035 4674/3026
-f 2224/779 2290/780 4662/778 4658/775
-f 2249/893 4686/2669 4685/2705 2380/894
-f 2235/2995 4670/3036 4672/3035 2354/2997
-f 2273/3013 2401/3005 4622/3018 4620/3024
-f 2271/934 2403/935 4634/2671 2321/751
-f 2195/2960 4614/3037 4616/3021 2292/2962
-f 2275/940 2318/746 4627/2699 4632/2708
-f 2194/2957 4617/3031 4619/3032 2340/2959
-f 2248/889 2378/892 4679/2710 4677/2709
-f 2268/825 2397/887 4681/2703 4710/828
-f 2235/2995 2395/2996 4671/3038 4670/3036
-f 2275/940 4632/2708 4634/2671 2403/935
-f 2228/797 4665/903 4631/2693 2342/740
-f 2248/889 4677/2709 4678/2670 2379/890
-f 2195/2960 2291/2961 4615/3025 4614/3037
-f 2208/744 2319/745 4628/2697 4626/2700
-f 4708/922 4704/916 4707/917 2355/923
-f 2250/895 2380/894 4685/2705 4684/2683
-f 2207/739 4629/2692 4630/2685 2317/743
-f 2197/2965 4623/3020 4618/3030 2289/2958
-f 2266/3010 4709/3034 4671/3038 2395/2996
-f 2274/939 2402/754 4634/2671 4683/2712
-f 2274/939 4683/2712 4679/2710 2378/892
-f 3319/2713 3314/2716 3315/2715 3320/2714
-f 3322/2717 3317/2720 3318/2719 3323/2718
-f 3321/2721 3316/2722 3317/2720 3322/2717
-f 3320/2714 3315/2715 3316/2722 3321/2721
-f 3326/2723 3321/2721 3322/2717 3327/2724
-f 3325/2725 3320/2714 3321/2721 3326/2723
-f 3324/2726 3319/2713 3320/2714 3325/2725
-f 3327/2724 3322/2717 3323/2718 3328/2727
-f 3331/2728 3326/2723 3327/2724 3332/2729
-f 3330/2730 3325/2725 3326/2723 3331/2728
-f 3329/2731 3324/2726 3325/2725 3330/2730
-f 3332/2729 3327/2724 3328/2727 3333/2732
-f 3336/2733 3331/2728 3332/2729 3337/2734
-f 3335/2735 3330/2730 3331/2728 3336/2733
-f 3334/2736 3329/2731 3330/2730 3335/2735
-f 3337/2734 3332/2729 3333/2732 3338/2737
-f 3341/2738 3336/2733 3337/2734 3342/2739
-f 3340/2740 3335/2735 3336/2733 3341/2738
-f 3339/2741 3334/2736 3335/2735 3340/2740
-f 3342/2739 3337/2734 3338/2737 3343/2742
-f 3346/2743 3341/2738 3342/2739 3347/2744
-f 3345/2745 3340/2740 3341/2738 3346/2743
-f 3344/2746 3339/2741 3340/2740 3345/2745
-f 3347/2744 3342/2739 3343/2742 3348/2747
-f 3351/2748 3346/2743 3347/2744 3352/2749
-f 3350/2750 3345/2745 3346/2743 3351/2748
-f 3349/2751 3344/2746 3345/2745 3350/2750
-f 3352/2749 3347/2744 3348/2747 3353/2752
-f 3356/2753 3351/2748 3352/2749 3357/2754
-f 3355/2755 3350/2750 3351/2748 3356/2753
-f 3354/2756 3349/2751 3350/2750 3355/2755
-f 3357/2754 3352/2749 3353/2752 3358/2757
-f 3361/2758 3356/2753 3357/2754 3362/2759
-f 3360/2760 3355/2755 3356/2753 3361/2758
-f 3359/2761 3354/2756 3355/2755 3360/2760
-f 3362/2759 3357/2754 3358/2757 3363/2762
-f 3366/2763 3361/2758 3362/2759 3367/2764
-f 3365/2765 3360/2760 3361/2758 3366/2763
-f 3364/2766 3359/2761 3360/2760 3365/2765
-f 3367/2764 3362/2759 3363/2762 3368/2767
-f 4733/738 4734/734 5312/2769 5313/2768
-f 4734/734 4735/735 5311/2770 5312/2769
-f 5310/2771 5311/2770 4735/735 4756/881
-f 5309/2772 5310/2771 4756/881 4755/882
-f 5285/2773 5283/2775 4699/899 4697/2774
-f 4697/2774 4652/2777 5286/2776 5285/2773
-f 5287/2778 5286/2776 4652/2777 4651/2779
-f 4651/2779 4654/862 5288/2780 5287/2778
-f 4732/742 4733/738 5313/2768 3371/2781
-f 4731/741 4732/742 3371/2781 3370/2782
-f 3370/2782 3369/2783 4737/798 4731/741
-f 3369/2783 5288/2780 4654/862 4737/798
-f 3374/2784 5316/2787 5314/2786 5307/2785
-f 3374/2784 3373/2789 5318/2788 5316/2787
-f 3373/2789 3372/2791 5317/2790 5318/2788
-f 5317/2790 3372/2791 5290/2793 5289/2792
-f 3374/2784 5307/2785 5305/2795 5303/2794
-f 3372/2791 5295/2797 5293/2796 5290/2793
-f 3373/2789 3374/2784 5303/2794 5301/2798
-f 3372/2791 3373/2789 5297/2799 5295/2797
-f 3373/2789 5301/2798 5299/2800 5297/2799
-f 3377/2801 3380/2804 5306/2803 5308/2802
-f 3377/2801 3376/2806 3379/2805 3380/2804
-f 3376/2806 3375/2808 3378/2807 3379/2805
-f 5284/2809 5291/2810 3378/2807 3375/2808
-f 5294/2811 3378/2807 5291/2810 5292/2812
-f 5306/2803 3380/2804 5302/2814 5304/2813
-f 3380/2804 3379/2805 5300/2815 5302/2814
-f 3379/2805 3378/2807 5294/2811 5296/2816
-f 5300/2815 3379/2805 5296/2816 5298/2817
-f 5315/2818 5309/2772 4755/882 4754/885
-f 5320/2819 5315/2818 4754/885 4753/886
-f 4753/886 4758/898 5319/2820 5320/2819
-f 4758/898 4699/899 5283/2775 5319/2820
-f 5071/1735 4186/1738 4187/1737 5066/1736
-f 5062/1739 4184/1742 4185/1741 5063/1740
-f 5072/1753 5067/1756 4173/1755 4174/1754
-f 5070/1757 4182/1760 4183/1759 5064/1758
-f 5065/1761 5066/1736 4187/1737 4188/1762
-f 5071/1735 5063/1740 4185/1741 4186/1738
-f 5068/1787 5069/1790 4175/1789 4176/1788
-f 5059/1795 4178/1798 4179/1797 5060/1796
-f 5059/1795 5061/1816 4177/1815 4178/1798
-f 5073/1817 4180/1820 4181/1819 5282/1818
-f 5073/1817 5060/1796 4179/1797 4180/1820
-f 5068/1787 4176/1788 4177/1815 5061/1816
-f 5070/1757 5282/1818 4181/1819 4182/1760
-f 5072/1753 4174/1754 4175/1789 5069/1790
-f 5062/1739 5064/1758 4183/1759 4184/1742
-f 5065/1761 4188/1762 4173/1755 5067/1756
-o WID.Arrow
-v 0.061591 0.000000 -0.029204
-v 0.062184 0.000000 -0.056582
-v 0.062910 0.000000 -0.080311
-v 0.052586 0.000000 -0.167307
-v 0.028299 0.000000 -0.194326
-v 0.008428 0.000000 -0.216432
-v 0.063966 0.000000 -0.109514
-v 0.064672 0.000000 -0.115011
-v 0.066262 0.000000 -0.116901
-v 0.087912 0.000000 -0.128007
-v 0.094027 0.000000 -0.120616
-v 0.094711 0.000000 -0.118096
-v 0.074390 0.000000 -0.117242
-v 0.080487 0.000000 -0.117498
-v 0.086583 0.000000 -0.117755
-v 0.000000 -0.086583 -0.117755
-v 0.000000 -0.080487 -0.117498
-v 0.000000 -0.074390 -0.117242
-v 0.000000 -0.094711 -0.118096
-v 0.000000 -0.094027 -0.120616
-v 0.000000 -0.087912 -0.128007
-v 0.000000 -0.066262 -0.116901
-v 0.000000 -0.064672 -0.115011
-v 0.000000 -0.063966 -0.109514
-v 0.000000 -0.008428 -0.216432
-v 0.000000 -0.028299 -0.194326
-v 0.000000 -0.052586 -0.167307
-v 0.000000 -0.062910 -0.080311
-v 0.000000 -0.062184 -0.056582
-v 0.000000 -0.061591 -0.029204
-v -0.061591 0.000000 -0.029204
-v -0.062184 0.000000 -0.056582
-v -0.062910 0.000000 -0.080311
-v -0.052586 0.000000 -0.167307
-v -0.028299 0.000000 -0.194326
-v -0.008428 0.000000 -0.216432
-v -0.063966 0.000000 -0.109514
-v -0.064672 0.000000 -0.115011
-v -0.066262 0.000000 -0.116901
-v -0.087912 0.000000 -0.128007
-v -0.094027 0.000000 -0.120616
-v -0.094711 0.000000 -0.118096
-v -0.074390 0.000000 -0.117242
-v -0.080487 0.000000 -0.117498
-v -0.086583 0.000000 -0.117755
-v 0.061591 0.000000 0.029204
-v 0.062184 0.000000 0.056582
-v 0.062910 0.000000 0.080311
-v 0.052586 0.000000 0.167307
-v 0.028299 0.000000 0.194326
-v 0.008428 0.000000 0.216432
-v 0.063966 0.000000 0.109514
-v 0.064672 0.000000 0.115011
-v 0.066262 0.000000 0.116901
-v 0.087912 0.000000 0.128007
-v 0.094027 0.000000 0.120616
-v 0.094711 0.000000 0.118096
-v 0.074390 0.000000 0.117242
-v 0.080487 0.000000 0.117498
-v 0.086583 0.000000 0.117755
-v 0.000000 -0.086583 0.117755
-v 0.000000 -0.080487 0.117498
-v 0.000000 -0.074390 0.117242
-v 0.000000 -0.094711 0.118096
-v 0.000000 -0.094027 0.120616
-v 0.000000 -0.087912 0.128007
-v 0.000000 -0.066262 0.116901
-v 0.000000 -0.064672 0.115011
-v 0.000000 -0.063966 0.109514
-v 0.000000 -0.008428 0.216432
-v 0.000000 -0.028299 0.194326
-v 0.000000 -0.052586 0.167307
-v 0.000000 -0.062910 0.080311
-v 0.000000 -0.062184 0.056582
-v 0.000000 -0.061591 0.029204
-v -0.061591 0.000000 0.029204
-v -0.062184 0.000000 0.056582
-v -0.062910 0.000000 0.080311
-v -0.052586 0.000000 0.167307
-v -0.028299 0.000000 0.194326
-v -0.008428 0.000000 0.216432
-v -0.063966 0.000000 0.109514
-v -0.064672 0.000000 0.115011
-v -0.066262 0.000000 0.116901
-v -0.087912 0.000000 0.128007
-v -0.094027 0.000000 0.120616
-v -0.094711 0.000000 0.118096
-v -0.074390 0.000000 0.117242
-v -0.080487 0.000000 0.117498
-v -0.086583 0.000000 0.117755
-v 0.000000 0.086583 -0.117755
-v 0.000000 0.080487 -0.117498
-v 0.000000 0.074390 -0.117242
-v 0.000000 0.094711 -0.118096
-v 0.000000 0.094027 -0.120616
-v 0.000000 0.087912 -0.128007
-v 0.000000 0.066262 -0.116901
-v 0.000000 0.064672 -0.115011
-v 0.000000 0.063966 -0.109514
-v 0.000000 0.008428 -0.216432
-v 0.000000 0.028299 -0.194326
-v 0.000000 0.052586 -0.167307
-v 0.000000 0.062910 -0.080311
-v 0.000000 0.062184 -0.056582
-v 0.000000 0.061591 -0.029204
-v 0.000000 0.086583 0.117755
-v 0.000000 0.080487 0.117498
-v 0.000000 0.074390 0.117242
-v 0.000000 0.094711 0.118096
-v 0.000000 0.094027 0.120616
-v 0.000000 0.087912 0.128007
-v 0.000000 0.066262 0.116901
-v 0.000000 0.064672 0.115011
-v 0.000000 0.063966 0.109514
-v 0.000000 0.008428 0.216432
-v 0.000000 0.028299 0.194326
-v 0.000000 0.052586 0.167307
-v 0.000000 0.062910 0.080311
-v 0.000000 0.062184 0.056582
-v 0.000000 0.061591 0.029204
-v 0.000000 -0.091663 -0.117968
-v 0.000000 -0.069310 -0.117029
-v 0.000000 0.000403 -0.226257
-v 0.000000 -0.074665 -0.142744
-v 0.000000 -0.063570 -0.098563
-v 0.000000 -0.091663 0.117968
-v 0.000000 -0.069310 0.117029
-v 0.000000 0.000403 0.226257
-v 0.000000 -0.074665 0.142744
-v 0.000000 -0.063570 0.098563
-v 0.000000 -0.061327 0.000000
-v 0.063570 0.000000 -0.098563
-v 0.074665 0.000000 -0.142744
-v -0.000403 0.000000 -0.226257
-v 0.069310 0.000000 -0.117029
-v 0.091663 0.000000 -0.117968
-v -0.063570 0.000000 -0.098563
-v -0.074665 0.000000 -0.142744
-v 0.000403 0.000000 -0.226257
-v -0.069310 0.000000 -0.117029
-v -0.091663 0.000000 -0.117968
-v 0.000000 0.091663 -0.117968
-v 0.000000 0.069310 -0.117029
-v 0.000000 -0.000403 -0.226257
-v 0.000000 0.074665 -0.142744
-v 0.000000 0.063570 -0.098563
-v 0.061327 0.000000 0.000000
-v 0.063570 0.000000 0.098563
-v 0.074665 0.000000 0.142744
-v -0.000403 0.000000 0.226257
-v 0.069310 0.000000 0.117029
-v 0.091663 0.000000 0.117968
-v -0.061327 0.000000 0.000000
-v -0.063570 0.000000 0.098563
-v -0.074665 0.000000 0.142744
-v 0.000403 0.000000 0.226257
-v -0.069310 0.000000 0.117029
-v -0.091663 0.000000 0.117968
-v 0.000000 0.091663 0.117968
-v 0.000000 0.069310 0.117029
-v 0.000000 -0.000403 0.226257
-v 0.000000 0.074665 0.142744
-v 0.000000 0.063570 0.098563
-v 0.000000 0.061327 0.000000
-l 5467 5321
-l 5321 5322
-l 5322 5323
-l 5323 5452
-l 5453 5324
-l 5324 5325
-l 5325 5326
-l 5326 5454
-l 5452 5327
-l 5327 5328
-l 5328 5329
-l 5329 5455
-l 5453 5330
-l 5330 5331
-l 5331 5332
-l 5332 5456
-l 5455 5333
-l 5333 5334
-l 5334 5335
-l 5335 5456
-l 5441 5336
-l 5336 5337
-l 5337 5338
-l 5338 5442
-l 5441 5339
-l 5339 5340
-l 5340 5341
-l 5341 5444
-l 5442 5342
-l 5342 5343
-l 5343 5344
-l 5344 5445
-l 5443 5345
-l 5345 5346
-l 5346 5347
-l 5347 5444
-l 5445 5348
-l 5348 5349
-l 5349 5350
-l 5350 5451
-l 5473 5351
-l 5351 5352
-l 5352 5353
-l 5353 5457
-l 5458 5354
-l 5354 5355
-l 5355 5356
-l 5356 5459
-l 5457 5357
-l 5357 5358
-l 5358 5359
-l 5359 5460
-l 5458 5360
-l 5360 5361
-l 5361 5362
-l 5362 5461
-l 5460 5363
-l 5363 5364
-l 5364 5365
-l 5365 5461
-l 5467 5366
-l 5366 5367
-l 5367 5368
-l 5368 5468
-l 5469 5369
-l 5369 5370
-l 5370 5371
-l 5371 5470
-l 5468 5372
-l 5372 5373
-l 5373 5374
-l 5374 5471
-l 5469 5375
-l 5375 5376
-l 5376 5377
-l 5377 5472
-l 5471 5378
-l 5378 5379
-l 5379 5380
-l 5380 5472
-l 5446 5381
-l 5381 5382
-l 5382 5383
-l 5383 5447
-l 5446 5384
-l 5384 5385
-l 5385 5386
-l 5386 5449
-l 5447 5387
-l 5387 5388
-l 5388 5389
-l 5389 5450
-l 5448 5390
-l 5390 5391
-l 5391 5392
-l 5392 5449
-l 5450 5393
-l 5393 5394
-l 5394 5395
-l 5395 5451
-l 5473 5396
-l 5396 5397
-l 5397 5398
-l 5398 5474
-l 5475 5399
-l 5399 5400
-l 5400 5401
-l 5401 5476
-l 5474 5402
-l 5402 5403
-l 5403 5404
-l 5404 5477
-l 5475 5405
-l 5405 5406
-l 5406 5407
-l 5407 5478
-l 5477 5408
-l 5408 5409
-l 5409 5410
-l 5410 5478
-l 5462 5411
-l 5411 5412
-l 5412 5413
-l 5413 5463
-l 5462 5414
-l 5414 5415
-l 5415 5416
-l 5416 5465
-l 5463 5417
-l 5417 5418
-l 5418 5419
-l 5419 5466
-l 5464 5420
-l 5420 5421
-l 5421 5422
-l 5422 5465
-l 5466 5423
-l 5423 5424
-l 5424 5425
-l 5425 5484
-l 5479 5426
-l 5426 5427
-l 5427 5428
-l 5428 5480
-l 5479 5429
-l 5429 5430
-l 5430 5431
-l 5431 5482
-l 5480 5432
-l 5432 5433
-l 5433 5434
-l 5434 5483
-l 5481 5435
-l 5435 5436
-l 5436 5437
-l 5437 5482
-l 5483 5438
-l 5438 5439
-l 5439 5440
-l 5440 5484
diff --git a/contrib/model_viewer/assets/models/Tree_01.mtl b/contrib/model_viewer/assets/models/Tree_01.mtl
deleted file mode 100644
index 9301eba731..0000000000
--- a/contrib/model_viewer/assets/models/Tree_01.mtl
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-## Alias OBJ Material File
-# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
-
-newmtl Leafs
-Ka 0.000000 0.000000 0.000000
-Kd 0.270588 0.407843 0.400000
-Ks 0.330000 0.330000 0.330000
-
-newmtl Wood
-Ka 0.000000 0.000000 0.000000
-Kd 0.666667 0.545098 0.356863
-Ks 0.330000 0.330000 0.330000
diff --git a/contrib/model_viewer/assets/models/Tree_01.obj b/contrib/model_viewer/assets/models/Tree_01.obj
deleted file mode 100644
index 396c008163..0000000000
--- a/contrib/model_viewer/assets/models/Tree_01.obj
+++ /dev/null
@@ -1,228 +0,0 @@
-# Alias OBJ Model File
-# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
-# File units = meters
-
-mtllib Tree_01.mtl
-
-g Mesh1 Tree Model
-
-usemtl Leafs
-v 0 0 -1.2957
-vt -3.67031e-018 -0.258226
-vn -5.60096e-018 0.438447 -0.898757
-v 0.177 0.6 -1.003
-vt -0.0804545 0.0452234
-v 1.003 0.6 -1.003
-vt -0.455909 0.0452234
-v 1.18 0 -1.2957
-vt -0.536364 -0.258226
-f 1/1/1 2/2/1 3/3/1 4/4/1
-
-v 0.177 0.6 -0.177
-vt -0.0804545 0.284347
-vn -0.959136 0.282945 7.971e-018
-vt -0.455909 0.284347
-vt -0.588956 1.3849e-018
-v 0 0 -0
-vt 0 0
-f 5/5/2 2/6/2 1/7/2 6/8/2
-
-vt -0.0804545 0.0804545
-vn 0 -1 -0
-v -0.0969352 0.6 -0.0826
-vt 0.0440615 0.0375455
-vt -0.0804545 0.455909
-f 5/9/3 7/10/3 2/11/3
-
-v 1.0974 0.6 -0.0826
-vt -0.498818 0.0375455
-f 7/10/3 5/9/3 8/12/3
-
-v 1.003 0.6 -0.177
-vt -0.455909 0.0804545
-f 8/12/3 5/9/3 9/13/3
-
-v 1.18 0 -0
-vt 0.536364 -1.26083e-018
-vn 7.96848e-018 0.282945 0.959136
-vt 0.455909 0.284347
-vt 0.0804545 0.284347
-f 10/14/4 9/15/4 5/16/4 6/8/4
-
-vt 8.91502e-019 -0.151761
-vn 0.959136 0.282945 1.5942e-018
-vt 0.588956 -0.151761
-vt 0.455909 0.132585
-vt 0.0804545 0.132585
-f 10/17/5 4/18/5 3/19/5 9/20/5
-
-vt -0.536364 0
-v 0.786697 0 -0.393303
-vt -0.35759 0.178774
-vt -0.536364 0.588956
-f 10/21/3 11/22/3 4/23/3
-
-v 0.393303 0 -0.393303
-vt -0.178774 0.178774
-f 10/21/3 12/24/3 11/22/3
-
-f 6/8/3 12/24/3 10/21/3
-
-v 0.393303 0 -0.786697
-vt -0.178774 0.35759
-f 12/24/3 6/8/3 13/25/3
-
-vt 0 0.588956
-f 1/26/3 13/25/3 6/8/3
-
-f 13/25/3 1/26/3 4/23/3
-
-v 0.786697 0 -0.786697
-vt -0.35759 0.35759
-f 13/25/3 4/23/3 14/27/3
-
-f 14/27/3 4/23/3 11/22/3
-
-usemtl Wood
-v 0.837838 -0.495868 -0.342162
-vt 0.155528 -0.263275
-vn 0.994724 0.102591 6.0893e-019
-v 0.837838 -0.495868 -0.837838
-vt 0.380836 -0.263275
-vt 0.35759 -0.0366853
-vt 0.178774 -0.0366853
-f 15/28/6 16/29/6 14/30/6 11/31/6
-
-v 0.342162 -0.495868 -0.342162
-vt -0.155528 0.155528
-v 0.342162 -0.495868 -0.837838
-vt -0.155528 0.380836
-vt -0.380836 0.380836
-vt -0.380836 0.155528
-f 17/32/3 18/33/3 16/34/3 15/35/3
-
-vt -0.178774 0.0183405
-vn -0.994724 0.102591 -5.80807e-018
-vt -0.35759 0.0183405
-vt -0.380836 -0.208249
-vt -0.155528 -0.208249
-f 12/36/7 13/37/7 18/38/7 17/39/7
-
-usemtl Leafs
-f 12/24/3 13/25/3 14/27/3 11/22/3
-
-usemtl Wood
-vt -0.155528 -0.263275
-vn 9.37084e-019 0.102591 -0.994724
-vt -0.178774 -0.0366853
-vt -0.35759 -0.0366853
-vt -0.380836 -0.263275
-f 18/40/8 13/41/8 14/42/8 16/43/8
-
-vt 0.380836 -0.208249
-vn 7.35408e-018 0.102591 0.994724
-vt 0.35759 0.0183405
-vt 0.178774 0.0183405
-vt 0.155528 -0.208249
-f 15/44/9 11/45/9 12/46/9 17/47/9
-
-usemtl Leafs
-vt -0.455909 0.455909
-v 1.0974 0.6 -1.0974
-vt -0.498818 0.498818
-f 3/48/3 19/49/3 9/13/3
-
-f 2/11/3 19/49/3 3/48/3
-
-v -0.0969352 0.6 -1.0974
-vt 0.0440615 0.498818
-f 2/11/3 20/50/3 19/49/3
-
-f 20/50/3 2/11/3 7/10/3
-
-v 0.23482 1.34304 -0.23482
-vt -0.106736 0.60095
-vn -0.913119 0.407693 2.16966e-017
-v 0.23482 1.34304 -0.94518
-vt -0.429627 0.60095
-vt -0.498818 0.231069
-vt -0.0375455 0.231069
-f 21/51/10 22/52/10 20/53/10 7/54/10
-
-vt -0.106736 0.106736
-v 0.153636 1.34304 -0.153636
-vt -0.0698345 0.0698345
-vt -0.106736 0.429627
-f 21/55/3 23/56/3 22/57/3
-
-v 1.14207 1.34304 -0.153636
-vt -0.519121 0.0698345
-f 23/56/3 21/55/3 24/58/3
-
-v 0.94518 1.34304 -0.23482
-vt -0.429627 0.106736
-f 24/58/3 21/55/3 25/59/3
-
-vt 0.498818 0.274714
-vn 5.19277e-018 0.200693 0.979654
-vt 0.429627 0.619473
-vt 0.106736 0.619473
-vt -0.0440615 0.274714
-f 8/60/11 25/61/11 21/62/11 7/63/11
-
-vt 0.0375455 0.167069
-vn 0.979654 0.200693 -1.44372e-018
-vt 0.498818 0.167069
-v 0.94518 1.34304 -0.94518
-vt 0.429627 0.511829
-vt 0.106736 0.511829
-f 8/64/12 19/65/12 26/66/12 25/67/12
-
-f 8/12/3 9/13/3 19/49/3
-
-vt 0.0440615 0.167069
-vn -2.59638e-018 0.200693 -0.979654
-vt -0.106736 0.511829
-vt -0.429627 0.511829
-vt -0.498818 0.167069
-f 20/68/13 22/69/13 26/70/13 19/71/13
-
-v 1.14207 1.34304 -1.02636
-vt -0.519121 0.466529
-vt -0.429627 0.429627
-f 22/57/3 27/72/3 26/73/3
-
-v 0.153636 1.34304 -1.02636
-vt -0.0698345 0.466529
-f 22/57/3 28/74/3 27/72/3
-
-f 28/74/3 22/57/3 23/56/3
-
-v 0.383388 3.21676 -0.59
-vt -0.268182 1.4725
-vn -0.992566 0.121707 7.00107e-018
-vt -0.466529 0.614434
-vt -0.0698345 0.614434
-f 29/75/14 28/76/14 23/77/14
-
-vt -0.174267 1.36323
-vn 1.92555e-017 0.226817 -0.973937
-vt -0.519121 0.488746
-vt -0.0698345 0.488746
-f 29/78/15 27/79/15 28/80/15
-
-vt 0.466529 0.371018
-vn 0.926901 0.375307 -4.48545e-017
-vt 0.268182 1.28988
-vt 0.0698345 0.371018
-f 27/81/16 29/82/16 24/83/16
-
-vt 0.519121 0.610402
-vn -3.8511e-017 0.226817 0.973937
-vt 0.174267 1.48488
-vt 0.0698345 0.610402
-f 24/84/17 29/85/17 23/86/17
-
-f 24/58/3 25/59/3 27/72/3
-
-f 26/73/3 27/72/3 25/59/3
diff --git a/contrib/model_viewer/assets/models/textures/Turret-Bump.jpg b/contrib/model_viewer/assets/models/textures/Turret-Bump.jpg
deleted file mode 100644
index bdfbd336d2..0000000000
Binary files a/contrib/model_viewer/assets/models/textures/Turret-Bump.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/models/textures/Turret-Diffuse.jpg b/contrib/model_viewer/assets/models/textures/Turret-Diffuse.jpg
deleted file mode 100644
index a2af03e81c..0000000000
Binary files a/contrib/model_viewer/assets/models/textures/Turret-Diffuse.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/models/textures/Turret-Emission.jpg b/contrib/model_viewer/assets/models/textures/Turret-Emission.jpg
deleted file mode 100644
index 01342963fd..0000000000
Binary files a/contrib/model_viewer/assets/models/textures/Turret-Emission.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/models/textures/Turret-Normal.jpg b/contrib/model_viewer/assets/models/textures/Turret-Normal.jpg
deleted file mode 100644
index 629b6622d2..0000000000
Binary files a/contrib/model_viewer/assets/models/textures/Turret-Normal.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/models/textures/Turret-Specular.jpg b/contrib/model_viewer/assets/models/textures/Turret-Specular.jpg
deleted file mode 100644
index 2a1f21ac14..0000000000
Binary files a/contrib/model_viewer/assets/models/textures/Turret-Specular.jpg and /dev/null differ
diff --git a/contrib/model_viewer/assets/splash.png b/contrib/model_viewer/assets/splash.png
deleted file mode 100644
index 88387a5ab3..0000000000
Binary files a/contrib/model_viewer/assets/splash.png and /dev/null differ
diff --git a/contrib/model_viewer/assets/ui/next.png b/contrib/model_viewer/assets/ui/next.png
deleted file mode 100644
index 32380f4cff..0000000000
Binary files a/contrib/model_viewer/assets/ui/next.png and /dev/null differ
diff --git a/contrib/model_viewer/assets/ui/prev.png b/contrib/model_viewer/assets/ui/prev.png
deleted file mode 100644
index 9d35ace76b..0000000000
Binary files a/contrib/model_viewer/assets/ui/prev.png and /dev/null differ
diff --git a/contrib/model_viewer/bin/.gitignore b/contrib/model_viewer/bin/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/model_viewer/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/model_viewer/libs/.gitignore b/contrib/model_viewer/libs/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/model_viewer/libs/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/model_viewer/org.nitlanguage.model_viewer.txt b/contrib/model_viewer/org.nitlanguage.model_viewer.txt
deleted file mode 100644
index 2061bba860..0000000000
--- a/contrib/model_viewer/org.nitlanguage.model_viewer.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/model_viewer/
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Display 3D models with the gamnit depth framework.
-Description:
-Sample portable application implemented with the gamnit depth API.
-.
diff --git a/contrib/model_viewer/package.ini b/contrib/model_viewer/package.ini
deleted file mode 100644
index 397fc2a41f..0000000000
--- a/contrib/model_viewer/package.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name=model_viewer
-tags=example
-maintainer=Alexis Laferrière
-license=Apache-2.0
-desc=Sample portable 3D app implemented with the gamnit depth framework
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/model_viewer/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/model_viewer/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/model_viewer.apk
diff --git a/contrib/model_viewer/res/.gitignore b/contrib/model_viewer/res/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/model_viewer/res/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/model_viewer/src/globe.nit b/contrib/model_viewer/src/globe.nit
deleted file mode 100644
index be54bcedf5..0000000000
--- a/contrib/model_viewer/src/globe.nit
+++ /dev/null
@@ -1,349 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Intro a custom model, material and graphics program to draw a globe
-module globe
-
-intrude import gamnit::depth # To access `Mesh::indices_c`
-
-# Number of vertices to create parallels, meridians are double of this
-#
-# The minimum should be 3 for an octahedron planet.
-fun n_parallels: Int do return 25
-
-redef class App
-
- # Program for the graphic card
- private var globe_program = new GlobeProgram
-
- # Texture of the reflexive surface of the earth (with the seas in white)
- private var texture_seas = new Texture("globe/seas.jpg")
-
- # Texture of the surface of the earth
- private var texture_earth = new Texture("globe/earth.jpg")
-
- # Texture of the lights at night on earth
- private var texture_night = new Texture("globe/lights.jpg")
-
- # Elevation map of earth
- private var texture_elevation = new Texture("globe/elevation.jpg")
-
- # Texture of the clouds above the earth
- private var texture_clouds = new Texture("globe/clouds.png")
-
- redef fun on_create
- do
- super
-
- # Compile globe_program
- var program = app.globe_program
- program.compile_and_link
-
- # Catch any errors
- var gamnit_error = program.error
- assert gamnit_error == null else print_error gamnit_error
- end
-end
-
-# Full model of a globe, with a surface, clouds layer and atmosphere
-class GlobeModel
- super CompositeModel
-
- redef fun load
- do
- leaves.add new LeafModel(
- new UVSphere(1.0, 2*n_parallels, n_parallels),
- new GlobeMaterial.surface)
- leaves.add new LeafModel(
- new UVSphere(1.1, 2*n_parallels, n_parallels),
- new GlobeMaterial.clouds)
- leaves.add new LeafModel(
- new UVSphere(1.2, 2*n_parallels, n_parallels),
- new GlobeMaterial.atmo)
- end
-end
-
-# Parameterizable material to draw the 3 layers of the globe
-class GlobeMaterial
- super Material
-
- # Id of the texture for diffuse colors, if any
- var texture_id: nullable Int
-
- # Draw as a surface, using the elevation map and the night lights
- var is_surface: Bool
-
- # Ambient color
- var color: Array[Float]
-
- # Create and configure a material for the earth surface
- init surface do init(0, true, [1.0, 1.0, 1.0, 1.0])
-
- # Create and configure a material for the cloud layer
- init clouds do init(4, false, [1.0*clouds_a, 1.0*clouds_a, 1.0*clouds_a, clouds_a])
- private var clouds_a = 0.5
-
- # Create and configure a material for the visible atmosphere
- init atmo do init(null, false, [0.0, 0.8*atmo_a, 1.0*atmo_a, atmo_a])
- private var atmo_a = 0.05
-
- redef fun draw(actor, model, camera)
- do
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print gl_error
-
- var mesh = model.mesh
-
- var program = app.globe_program
- program.use
-
- # Bind textures
- glActiveTexture gl_TEXTURE0
- glBindTexture(gl_TEXTURE_2D, app.texture_earth.gl_texture)
-
- glActiveTexture gl_TEXTURE1
- glBindTexture(gl_TEXTURE_2D, app.texture_seas.gl_texture)
-
- glActiveTexture gl_TEXTURE2
- glBindTexture(gl_TEXTURE_2D, app.texture_night.gl_texture)
-
- glActiveTexture gl_TEXTURE3
- glBindTexture(gl_TEXTURE_2D, app.texture_elevation.gl_texture)
-
- glActiveTexture gl_TEXTURE4
- glBindTexture(gl_TEXTURE_2D, app.texture_clouds.gl_texture)
-
- # Set samplers
- program.tex_specular.uniform 1
- program.tex_night.uniform 2
- program.tex_displace.uniform 3
-
- # Update camera view and light
- var p = app.world_camera.position
- program.camera.uniform(p.x, p.y, p.z)
- program.mvp.uniform camera.mvp_matrix
- program.light_center.uniform(app.light.position.x, app.light.position.y, app.light.position.z)
-
- # Set attributes
- program.coord.array_enabled = true
- program.coord.array(mesh.vertices, 3)
-
- program.tex_coord.array_enabled = true
- program.tex_coord.array(mesh.texture_coords, 2)
-
- program.normal.array_enabled = true
- program.normal.array(mesh.normals, 3)
-
- # Set uniforms
- program.scale.uniform 1.0
- program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
- program.translation.uniform(actor.center.x, -actor.center.y, actor.center.z, 0.0)
- program.color.uniform(color[0], color[1], color[2], color[3])
- program.is_surface.uniform is_surface
-
- # Set the color texture?
- var tex = texture_id
- if tex == null then
- program.use_texture.uniform false
- else
- program.use_texture.uniform true
- program.tex.uniform tex
- end
-
- # Execute draw, support only meshes with `indices`
- glDrawElements(gl_TRIANGLES, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array)
-
- # Catch any errors
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print gl_error
- end
-end
-
-# Graphical program to draw a planet with Phong lighting
-class GlobeProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Vertex coordinates
- attribute vec4 coord;
-
- // Vertex color tint
- uniform vec4 color;
-
- // Vertex translation
- uniform vec4 translation;
-
- // Vertex scaling
- uniform float scale;
-
- // Vertex coordinates on textures
- attribute vec2 tex_coord;
-
- // Vertex normal
- attribute vec3 normal;
-
- // Model view projection matrix
- uniform mat4 mvp;
-
- // Model rotation
- uniform mat4 rotation;
-
- // Lights config
- uniform vec3 light_center;
-
- // Texture of surface elevation to displace vertices
- uniform sampler2D tex_displace;
-
- // Draw this as a planet surface?
- uniform bool is_surface;
-
- // Output for the fragment shader
- varying vec4 v_color;
- varying vec2 v_tex_coord;
- varying vec3 v_normal;
- varying vec4 v_light_center;
-
- void main()
- {
- v_color = color;
- v_tex_coord = tex_coord;
- v_normal = normalize(vec4(normal, 0.0) * rotation * mvp).xyz;
- v_light_center = vec4(light_center, 0.0) * mvp;
-
- // Apply displacement map
- float s = scale;
- if (is_surface)
- s += 0.05 * texture2D(tex_displace, tex_coord).r;
-
- gl_Position = (vec4(coord.xyz * s, 1.0) * rotation + translation) * mvp;
- }
- """ @ glsl_vertex_shader
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Input from the vertex shader
- varying vec4 v_color;
- varying vec2 v_tex_coord;
- varying vec3 v_normal;
- varying vec4 v_light_center;
-
- // Coordinates of the camera
- uniform vec3 camera;
-
- // Does this object use a texture?
- uniform bool use_texture;
-
- // Texture to apply on this object
- uniform sampler2D tex;
-
- // Reflection map to apply to the Phong logic
- uniform sampler2D tex_specular;
-
- // Texture for the dark side of the earth
- uniform sampler2D tex_night;
-
- // Draw this as a planet surface?
- uniform bool is_surface;
-
- // Colors config
- vec4 ambient_color = vec4(0.2, 0.2, 0.2, 1.0);
- vec4 diffuse_color = vec4(1.0, 1.0, 1.0, 1.0);
- vec4 specular_color = vec4(1.0, 1.0, 1.0, 1.0);
-
- void main()
- {
- // Lambert diffusion
- vec3 to_light = normalize(v_light_center.xyz);
- float lambert = max(dot(to_light, v_normal), 0.0);
-
- // Phong specular
- float specular = 0.0;
- if (lambert > 0.0) {
- vec3 to_camera = normalize(camera);
- vec3 normal = normalize(v_normal);
- vec3 light_reflect = reflect(to_light, normal);
- float spec_angle = max(dot(light_reflect, to_camera), 0.0);
- specular = pow(spec_angle, 16.0);
-
- if (is_surface)
- specular *= texture2D(tex_specular, v_tex_coord).x;
- else specular *= 0.2;
- }
-
- if(use_texture) {
- gl_FragColor = v_color * texture2D(tex, v_tex_coord);
- } else {
- gl_FragColor = v_color;
- }
-
- gl_FragColor *= ambient_color + lambert * diffuse_color;
- gl_FragColor += specular * specular_color;
-
- if (is_surface && lambert < 0.2) {
- // Show city lights at night
- float p_night = (0.2 - lambert) * 5.0;
- gl_FragColor += p_night*texture2D(tex_night, v_tex_coord);
- }
- }
- """ @ glsl_fragment_shader
-
- # Vertices coordinates
- var coord = attributes["coord"].as(AttributeVec4) is lazy
-
- # Color tint per vertex
- var color = uniforms["color"].as(UniformVec4) is lazy
-
- # Scaling per vertex
- var scale = uniforms["scale"].as(UniformFloat) is lazy
-
- # Coordinates on the textures, per vertex
- var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy
-
- # Normal per vertex
- var normal = attributes["normal"].as(AttributeVec3) is lazy
-
- # Model view projection matrix
- var mvp = uniforms["mvp"].as(UniformMat4) is lazy
-
- # Should this program use the texture `tex`?
- var use_texture = uniforms["use_texture"].as(UniformBool) is lazy
-
- # Main visible texture unit
- var tex = uniforms["tex"].as(UniformSampler2D) is lazy
-
- # Texture unit for reflection effect
- var tex_specular = uniforms["tex_specular"].as(UniformSampler2D) is lazy
-
- # Texture of the earth at night
- var tex_night = uniforms["tex_night"].as(UniformSampler2D) is lazy
-
- # Texture with elevation data
- var tex_displace = uniforms["tex_displace"].as(UniformSampler2D) is lazy
-
- # Position of the camera
- var camera = uniforms["camera"].as(UniformVec3) is lazy
-
- # Execute this program to draw a planet surface?
- var is_surface = uniforms["is_surface"].as(UniformBool) is lazy
-
- # Translation applied to each vertex
- var translation = uniforms["translation"].as(UniformVec4) is lazy
-
- # Rotation matrix
- var rotation = uniforms["rotation"].as(UniformMat4) is lazy
-
- # Center position of the light
- var light_center = uniforms["light_center"].as(UniformVec3) is lazy
-end
diff --git a/contrib/model_viewer/src/model_viewer.nit b/contrib/model_viewer/src/model_viewer.nit
deleted file mode 100644
index a38de3259e..0000000000
--- a/contrib/model_viewer/src/model_viewer.nit
+++ /dev/null
@@ -1,158 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Portable game to destroy asteroids
-module model_viewer is
- app_name "Model Viewer"
- app_namespace "org.nitlanguage.model_viewer"
- app_version(1, 0, git_revision)
-end
-
-import gamnit::depth
-import gamnit::landscape
-
-import globe
-
-redef class App
-
- # All available models
- var models: Array[Model] = [
- new LeafModel(new Cube, new Material),
- new LeafModel(new UVSphere(4.0, 32, 16), new Material),
- new LeafModel(new UVSphere(4.0, 32, 16), new NormalsMaterial),
- new Model("models/Tree_01.obj"),
- new Model("models/Oak_Fall_01.obj"),
- new Model("models/Quandtum_BA-2_v1_1.obj"),
- new GlobeModel]
-
- # Index of the current model in `models`
- var model_index = 0
-
- # Texture "Previous model"
- var ui_prev = new Texture("ui/prev.png")
-
- # Texture "Next model"
- var ui_next = new Texture("ui/next.png")
-
- redef fun on_create
- do
- super
-
- # Show splash screen
- var logo = new Texture("splash.png")
- show_splash_screen logo
-
- # Load all models passed as command line argument
- for arg in args.to_a.reversed do
- # Force an absolute path, this only works on desktop, but so does command args
- arg = getcwd / arg
-
- var model = new Model(arg)
- models.unshift model
- end
-
- world_camera.near = 0.1
- world_camera.far = 100.0
-
- for model in models do
- model.load
- if model.errors.not_empty then print_error model.errors.join("\n")
- end
-
- # Display the first model
- model = models[model_index]
-
- # Setup UI
- # Use 800 px in height as screen reference
- ui_camera.reset_height 800.0
-
- var prev_sprite = new Sprite(ui_prev,
- ui_camera.bottom_left.offset(200, 40, 0))
- prev_sprite.scale = 0.5
- ui_sprites.add prev_sprite
-
- var next_sprite = new Sprite(ui_next,
- ui_camera.bottom_right.offset(-165, 40, 0))
- next_sprite.scale = 0.5
- ui_sprites.add next_sprite
- end
-
- # Set the currently displayed model
- fun model=(model: Model)
- do
- if model isa ModelAsset then print "Model: {model.path}"
-
- var actor = new Actor(model, new Point3d[Float](0.0, 0.0, 0.0))
-
- # Align on Y only
- actor.center.y -= model.center.y
-
- # Fit in viewport
- var height = model.dimensions.x
- height = height.max(model.dimensions.y)
- height = height.max(model.dimensions.z)
- world_camera.reset_height(height * 1.5)
-
- actors.clear
- actors.add actor
- end
-
- # Cycle to the next or previous model, changing the index by `d`
- fun cycle_model(d: Int)
- do
- model_index = (model_index + d + models.length) % models.length
- model = models[model_index]
- end
-
- redef fun accept_event(event)
- do
- var display = display
- if display == null then return super
-
- if event isa QuitEvent then
- exit 0
- else if event isa KeyEvent and event.is_down then
- if event.is_arrow_right then
- cycle_model 1
- else if event.is_arrow_left then
- cycle_model -1
- end
- else if event isa PointerEvent and not event.is_move and event.depressed then
- if event.x.to_i > display.width / 2 then
- cycle_model 1
- else cycle_model -1
- end
-
- return super
- end
-
- private var clock = new Clock
-
- redef fun update(dt)
- do
- super
-
- var t = clock.total.to_f
-
- # Rotate the model
- actors.first.yaw = t
-
- # Move the light source
- var dist_to_light = 20.0
- t *= 1.33
- light.position.x = dist_to_light * t.cos
- light.position.y = 4.0
- light.position.z = dist_to_light * t.sin
- end
-end
diff --git a/contrib/tinks/.gitignore b/contrib/tinks/.gitignore
deleted file mode 100644
index 337d1e3a48..0000000000
--- a/contrib/tinks/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-src/*/*_serialize.nit
-config.json
diff --git a/contrib/tinks/Makefile b/contrib/tinks/Makefile
deleted file mode 100644
index ab9f82f255..0000000000
--- a/contrib/tinks/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-all: bin/server bin/tinks3d
-
-pre-build: src/server/server_serialize.nit
-
-# Client
-bin/tinks3d: $(shell nitls -M src/client/client3d.nit -m linux)
- nitserial -o src/client/client_serialize.nit src/client/client3d.nit
- nitc -o bin/tinks3d src/client/client3d.nit \
- -m src/client/client_serialize.nit -m linux
-
-# Server
-bin/server: src/server/server_serialize.nit $(shell nitls -M src/server/dedicated.nit)
- nitc -o bin/server src/server/dedicated.nit -m src/server/server_serialize.nit
-
-src/server/server_serialize.nit: $(shell nitls -M src/server/dedicated.nit)
- nitserial -o src/server/server_serialize.nit src/server/dedicated.nit
-
-# Android
-android/res/: art/icon.svg
- ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
diff --git a/contrib/tinks/README.md b/contrib/tinks/README.md
deleted file mode 100644
index 99e2ac17ef..0000000000
--- a/contrib/tinks/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-Tinks! a multiplayer crossplatform action game with destructible procedurally generated worlds
-
-# Project description
-
-Each player controls a tank, opens fire from the turret and navigates between the terrain features.
-Explosions from turret fire and tank destruction have different forces and destroy the terrain.
-Each tank needs 4 hits to be destroyed.
-Destroyed tanks drop health powerups which can repair other tanks.
-
-The game is optimized for the multiplayer mode but one can play alone to practice.
-Upon launch, a client searches for server by broadcasting a UDP socket.
-A server may respond with its TCP connection port.
-If there is no answer, the client starts its own server which will accept other clients.
-
-The game logic is mostly event based.
-Only the events are passed to the clients at each frame, by serializing them to binary.
-So both the clients and the server keep the game knowledge.
-
-The world is different in each game, it is procedurally generated with an "unlimited" size.
-Each world feature is discovered only as needed by either the server or the clients.
-The server discovers the features affected by possible collisions and by explosions.
-The clients discover the features visible on screen.
-The clients and servers share the seed for the noise generator, so they discover the same features.
-Only the destroyed features and new powerups are passed to the clients by the server as events.
-
-# Modifications
-
-This game was developed quickly while aiming to keep it simple.
-It should be easy to add features as refinements on both the client and the server.
-
-# Clients and server
-
-Tinks! has a client and a dedicated server.
-The whole project is modular, these software share mostly the same code.
-
-* The 3D client at `bin/tinks3d` uses `gamnit` and OpenGL ES 2.0 for an immersive world.
-
- Despite the different graphics, both client are fully compatible for multiplayer.
-
- ![Screenshot of the 3D client](doc/tinks3d.png)
-
-* The dedicated server at `bin/server` acts as a headless server for clients on the same local network.
-
-# Usage
-
-Compile with: `make`
-
-Launch with: `bin/tinks` or `bin/tinks3d`
-
-Compile for Android with: `make bin/tinks.apk`
-
-Launch a server with: `bin/server [server_port]`
-
-Connect to a precise server with: `bin/tinks server_address [server_port]`
-
-# Configuration on desktop for the 2D client
-
-You can configure the client by modifying the file `./config.json` created when you first launch the game.
-The fields `res_x` and `res_y` specify the resolution of the window.
-The field `play_sounds` should be clear enough.
-
-# Artwork
-
-* Trees and rocks models created by Kenney.nl, shared under CC0
-* Ground texture created by Duion, shared under CC0
-* Health model created by Alexis Laferrière, shared under CC0
-* Tank original model created by Sapen, shared under CC-BY-SA 3.0
- * Derivatives from this model were created by Alexis Laferrière, shared under CC-BY-SA 3.0
diff --git a/contrib/tinks/android/.gitignore b/contrib/tinks/android/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/tinks/android/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/tinks/art/drawing.svg b/contrib/tinks/art/drawing.svg
deleted file mode 100644
index 47d648a01b..0000000000
--- a/contrib/tinks/art/drawing.svg
+++ /dev/null
@@ -1,1727 +0,0 @@
-
-
-
-
diff --git a/contrib/tinks/art/icon.svg b/contrib/tinks/art/icon.svg
deleted file mode 100644
index 32229e4543..0000000000
--- a/contrib/tinks/art/icon.svg
+++ /dev/null
@@ -1,406 +0,0 @@
-
-
-
-
diff --git a/contrib/tinks/art/tank.blend b/contrib/tinks/art/tank.blend
deleted file mode 100644
index 02b5be3647..0000000000
Binary files a/contrib/tinks/art/tank.blend and /dev/null differ
diff --git a/contrib/tinks/assets/images/.gitignore b/contrib/tinks/assets/images/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/tinks/assets/images/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/tinks/assets/models/Large_Oak_Dark_01.mtl b/contrib/tinks/assets/models/Large_Oak_Dark_01.mtl
deleted file mode 100644
index 661d7fc528..0000000000
--- a/contrib/tinks/assets/models/Large_Oak_Dark_01.mtl
+++ /dev/null
@@ -1,20 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 2
-
-newmtl Leafs
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.216470 0.326274 0.320000
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl Wood
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.533334 0.436078 0.285490
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Large_Oak_Dark_01.obj b/contrib/tinks/assets/models/Large_Oak_Dark_01.obj
deleted file mode 100644
index 8e6ab92908..0000000000
--- a/contrib/tinks/assets/models/Large_Oak_Dark_01.obj
+++ /dev/null
@@ -1,205 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Large_Oak_Dark_01.mtl
-o Mesh1_Large_Oak_Dark_Model
-v -0.254685 0.000000 0.256772
-v -0.154205 0.971550 0.156282
-v -0.154205 0.971550 -0.193338
-v -0.254685 0.000000 -0.293818
-v 0.295895 0.000000 0.256772
-v 0.195415 0.971550 0.156282
-v 0.295895 0.000000 -0.293818
-v 0.195415 0.971550 -0.193338
-v 0.609505 0.971550 -1.038527
-v -0.568295 0.971550 -1.038527
-v -0.568295 0.971550 1.001478
-v -1.157195 0.971550 -0.018528
-v -0.734395 1.591550 1.289173
-v -1.489395 1.591550 -0.018528
-v 0.609505 0.971550 1.001478
-v 0.775605 1.591550 1.289173
-v 1.198405 0.971550 -0.018528
-v 0.775605 1.591550 -1.326228
-v 1.530605 1.591550 -0.018528
-v 0.601955 3.771550 -1.025457
-v 1.183305 3.771550 -0.018528
-v -0.734395 1.591550 -1.326228
-v -0.560745 3.771550 -1.025457
-v -1.142095 3.771550 -0.018528
-v 0.020605 4.601550 -0.018527
-v -0.560745 3.771550 0.988402
-v 0.601955 3.771550 0.988402
-vt -0.606904 0.673868
-vt -0.954045 1.058050
-vt -0.765823 0.673868
-vt -0.418682 1.058050
-vt -0.418682 0.130770
-vt -0.151000 0.594408
-vt -0.439273 0.220447
-vt 0.096091 0.220447
-vt 0.171591 0.531128
-vt 0.418682 0.345545
-vt 0.954045 0.345545
-vt 1.029550 0.656225
-vt -0.606904 0.514949
-vt -0.954045 0.130770
-vt -0.765823 0.514949
-vt -1.221730 0.594408
-vt 0.514773 1.281710
-vt -0.171591 1.281710
-vt -0.096091 0.971033
-vt 0.514773 0.513544
-vt 0.435841 1.513840
-vt -0.092659 1.513840
-vt -0.422114 1.554460
-vt -0.950614 1.554460
-vt -1.029550 0.554164
-vt -1.122200 1.676320
-vt -1.201140 0.676023
-vt -0.514773 0.676023
-vt -0.593705 0.966577
-vt -0.857955 1.559720
-vt -1.122200 0.966577
-vt 0.092659 1.425250
-vt -0.171591 2.018390
-vt -0.435841 1.425250
-vt 0.950614 1.195910
-vt 0.686364 1.789060
-vt 0.422114 1.195910
-vt 1.122200 0.507906
-vt 0.857955 1.101050
-vt 0.593705 0.507906
-vt 0.435841 0.049236
-vt 0.171591 0.642379
-vt -0.092659 0.049236
-vt -0.686364 0.871714
-vt -0.950614 0.278571
-vt -0.422114 0.278571
-vt 0.514773 0.594783
-vt 1.201140 0.594783
-vt 1.122200 1.595080
-vt 0.514773 1.031520
-vt 0.590273 0.720838
-vt 1.125640 0.720838
-vt 0.950614 1.716940
-vt 0.422114 1.716940
-vt 0.343182 0.716643
-vt -0.435841 1.757560
-vt -0.514773 0.757263
-vt 0.171591 0.757263
-vt -0.590273 0.470642
-vt -0.514773 0.781323
-vt -1.201140 0.781323
-vt -0.954045 0.845935
-vt -0.418682 0.845935
-vt -0.343182 1.156620
-vt -0.514773 0.531128
-vt 0.343182 0.656225
-vt 0.439273 0.971033
-vt -0.171591 0.513544
-vt -0.343182 0.554164
-vt -0.593705 1.676320
-vt 0.593705 1.595080
-vt 1.201140 1.031520
-vt 1.029550 0.716643
-vt 0.092659 1.757560
-vt -1.125640 0.470642
-vt -1.029550 1.156620
-vt -0.469275 0.057737
-vt -0.514949 0.501706
-vt -0.673868 0.501706
-vt 0.561230 0.048277
-vt 0.811497 0.048277
-vt 0.765823 0.492246
-vt 0.469275 -0.083484
-vt 0.719542 -0.083484
-vt 0.673868 0.360486
-vt -0.561230 0.719542
-vt -0.811497 0.719542
-vt -0.811497 0.469275
-vt -0.606904 0.369946
-vt -0.765823 0.369946
-vt -0.811497 -0.074024
-vt -0.719542 0.057737
-vt 0.606904 0.492246
-vt 0.514949 0.360486
-vt -0.561230 0.469275
-vt -0.561230 -0.074024
-vn 0.000000 -1.000000 -0.000000
-vn -0.785600 -0.420900 0.453500
-vn 0.000000 -0.420900 0.907100
-vn 0.785600 -0.420900 -0.453500
-vn 0.857900 0.136700 -0.495300
-vn 0.000000 0.136700 -0.990600
-vn -0.857900 0.136700 -0.495300
-vn -0.550800 0.771600 -0.318000
-vn -0.550800 0.771600 0.318000
-vn 0.000000 0.771600 0.636100
-vn 0.550800 0.771600 0.318000
-vn 0.550800 0.771600 -0.318000
-vn 0.000000 0.771600 -0.636100
-vn 0.857900 0.136700 0.495300
-vn 0.785600 -0.420900 0.453500
-vn 0.000000 0.136700 0.990600
-vn -0.857900 0.136700 0.495300
-vn -0.785600 -0.420900 -0.453500
-vn 0.000000 -0.420900 -0.907100
-vn 0.785600 -0.420900 -0.453600
-vn -0.785600 -0.420900 -0.453600
-vn -0.994700 0.102900 0.000000
-vn 0.000000 0.102900 0.994700
-vn 0.994700 0.102900 0.000000
-vn 0.000000 0.102900 -0.994700
-usemtl Leafs
-s off
-f 3/1/1 9/2/1 8/3/1
-f 3/1/1 10/4/1 9/2/1
-f 11/5/1 10/4/1 3/1/1
-f 10/4/1 11/5/1 12/6/1
-f 12/7/2 11/8/2 13/9/2
-f 11/10/3 15/11/3 16/12/3
-f 11/5/1 2/13/1 15/14/1
-f 2/13/1 11/5/1 3/1/1
-f 15/14/1 2/13/1 6/15/1
-f 15/14/1 6/15/1 9/2/1
-f 8/3/1 9/2/1 6/15/1
-f 15/14/1 9/2/1 17/16/1
-f 18/17/4 19/18/4 17/19/4
-f 18/20/5 20/21/5 21/22/5
-f 23/23/6 20/24/6 18/25/6
-f 23/26/7 22/27/7 14/28/7
-f 24/29/8 25/30/8 23/31/8
-f 26/32/9 25/33/9 24/34/9
-f 27/35/10 25/36/10 26/37/10
-f 21/38/11 25/39/11 27/40/11
-f 20/41/12 25/42/12 21/43/12
-f 25/44/13 20/45/13 23/46/13
-f 16/47/14 19/48/14 21/49/14
-f 16/50/15 15/51/15 17/52/15
-f 27/53/16 26/54/16 13/55/16
-f 24/56/17 14/57/17 13/58/17
-f 12/59/18 14/60/18 22/61/18
-f 9/62/19 10/63/19 22/64/19
-f 14/65/2 12/7/2 13/9/2
-f 13/66/3 11/10/3 16/12/3
-f 9/67/20 18/17/20 17/19/20
-f 19/68/5 18/20/5 21/22/5
-f 22/69/6 23/23/6 18/25/6
-f 24/70/7 23/26/7 14/28/7
-f 27/71/14 16/47/14 21/49/14
-f 19/72/15 16/50/15 17/52/15
-f 16/73/16 27/53/16 13/55/16
-f 26/74/17 24/56/17 13/58/17
-f 10/75/21 12/59/21 22/61/21
-f 18/76/19 9/62/19 22/64/19
-usemtl Wood
-f 1/77/22 2/78/22 3/79/22
-f 1/80/23 5/81/23 6/82/23
-f 5/83/24 7/84/24 8/85/24
-f 4/86/1 7/87/1 5/88/1
-f 3/89/25 8/90/25 7/91/25
-f 4/92/22 1/77/22 3/79/22
-f 2/93/23 1/80/23 6/82/23
-f 6/94/24 5/83/24 8/85/24
-f 1/95/1 4/86/1 5/88/1
-f 4/96/25 3/89/25 7/91/25
diff --git a/contrib/tinks/assets/models/Large_Oak_Green_01.mtl b/contrib/tinks/assets/models/Large_Oak_Green_01.mtl
deleted file mode 100644
index 3f4b549782..0000000000
--- a/contrib/tinks/assets/models/Large_Oak_Green_01.mtl
+++ /dev/null
@@ -1,20 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 2
-
-newmtl Green_leafs
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.238431 0.423530 0.341961
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl Wood.001
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.533334 0.436078 0.285490
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Large_Oak_Green_01.obj b/contrib/tinks/assets/models/Large_Oak_Green_01.obj
deleted file mode 100644
index a7ec38c94b..0000000000
--- a/contrib/tinks/assets/models/Large_Oak_Green_01.obj
+++ /dev/null
@@ -1,205 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Large_Oak_Green_01.mtl
-o Mesh1_Large_Oak_Green_Model
-v -0.291125 0.000000 0.266832
-v -0.190645 0.971550 0.166342
-v -0.190645 0.971550 -0.183278
-v -0.291125 0.000000 -0.283758
-v 0.259455 0.000000 0.266832
-v 0.158975 0.971550 0.166342
-v 0.259455 0.000000 -0.283758
-v 0.158975 0.971550 -0.183278
-v 0.573065 0.971550 -1.028468
-v -0.604735 0.971550 -1.028468
-v -0.604735 0.971550 1.011538
-v -1.193635 0.971550 -0.008468
-v -0.770835 1.591550 1.299232
-v -1.525835 1.591550 -0.008468
-v 0.573065 0.971550 1.011538
-v 0.739165 1.591550 1.299232
-v 1.161965 0.971550 -0.008468
-v 0.739165 1.591550 -1.316168
-v 1.494165 1.591550 -0.008468
-v 0.565515 3.771550 -1.015398
-v 1.146865 3.771550 -0.008468
-v -0.770835 1.591550 -1.316168
-v -0.597185 3.771550 -1.015398
-v -1.178535 3.771550 -0.008468
-v -0.015835 4.601550 -0.008468
-v -0.597185 3.771550 0.998461
-v 0.565515 3.771550 0.998461
-vt -0.469275 0.057737
-vt -0.514949 0.501706
-vt -0.673868 0.501706
-vt 0.561230 0.048277
-vt 0.811497 0.048277
-vt 0.765823 0.492246
-vt 0.469275 -0.083484
-vt 0.719542 -0.083484
-vt 0.673868 0.360486
-vt -0.561230 0.719542
-vt -0.811497 0.719542
-vt -0.811497 0.469275
-vt -0.606904 0.369946
-vt -0.765823 0.369946
-vt -0.811497 -0.074024
-vt -0.719542 0.057737
-vt 0.606904 0.492246
-vt 0.514949 0.360486
-vt -0.561230 0.469275
-vt -0.561230 -0.074024
-vt -0.606904 0.673868
-vt -0.954045 1.058050
-vt -0.765823 0.673868
-vt -0.418682 1.058050
-vt -0.418682 0.130770
-vt -0.151000 0.594408
-vt -0.439273 0.220447
-vt 0.096091 0.220447
-vt 0.171591 0.531128
-vt 0.418682 0.345545
-vt 0.954045 0.345545
-vt 1.029550 0.656225
-vt -0.606904 0.514949
-vt -0.954045 0.130770
-vt -0.765823 0.514949
-vt -1.221730 0.594408
-vt 0.514773 1.281710
-vt -0.171591 1.281710
-vt -0.096091 0.971033
-vt 0.514773 0.513544
-vt 0.435841 1.513840
-vt -0.092659 1.513840
-vt -0.422114 1.554460
-vt -0.950614 1.554460
-vt -1.029550 0.554164
-vt -1.122200 1.676320
-vt -1.201140 0.676023
-vt -0.514773 0.676023
-vt -0.593705 0.966577
-vt -0.857955 1.559720
-vt -1.122200 0.966577
-vt 0.092659 1.425250
-vt -0.171591 2.018390
-vt -0.435841 1.425250
-vt 0.950614 1.195910
-vt 0.686364 1.789060
-vt 0.422114 1.195910
-vt 1.122200 0.507906
-vt 0.857955 1.101050
-vt 0.593705 0.507906
-vt 0.435841 0.049236
-vt 0.171591 0.642379
-vt -0.092659 0.049236
-vt -0.686364 0.871714
-vt -0.950614 0.278571
-vt -0.422114 0.278571
-vt 0.514773 0.594783
-vt 1.201140 0.594783
-vt 1.122200 1.595080
-vt 0.514773 1.031520
-vt 0.590273 0.720838
-vt 1.125640 0.720838
-vt 0.950614 1.716940
-vt 0.422114 1.716940
-vt 0.343182 0.716643
-vt -0.435841 1.757560
-vt -0.514773 0.757263
-vt 0.171591 0.757263
-vt -0.590273 0.470642
-vt -0.514773 0.781323
-vt -1.201140 0.781323
-vt -0.954045 0.845935
-vt -0.418682 0.845935
-vt -0.343182 1.156620
-vt -0.514773 0.531128
-vt 0.343182 0.656225
-vt 0.439273 0.971033
-vt -0.171591 0.513544
-vt -0.343182 0.554164
-vt -0.593705 1.676320
-vt 0.593705 1.595080
-vt 1.201140 1.031520
-vt 1.029550 0.716643
-vt 0.092659 1.757560
-vt -1.125640 0.470642
-vt -1.029550 1.156620
-vn -0.994700 0.102900 0.000000
-vn 0.000000 0.102900 0.994700
-vn 0.994700 0.102900 0.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 0.102900 -0.994700
-vn -0.785600 -0.420900 0.453500
-vn 0.000000 -0.420900 0.907100
-vn 0.785600 -0.420900 -0.453500
-vn 0.857900 0.136700 -0.495300
-vn 0.000000 0.136700 -0.990600
-vn -0.857900 0.136700 -0.495300
-vn -0.550800 0.771600 -0.318000
-vn -0.550800 0.771600 0.318000
-vn 0.000000 0.771600 0.636100
-vn 0.550800 0.771600 0.318000
-vn 0.550800 0.771600 -0.318000
-vn 0.000000 0.771600 -0.636100
-vn 0.857900 0.136700 0.495300
-vn 0.785600 -0.420900 0.453500
-vn 0.000000 0.136700 0.990600
-vn -0.857900 0.136700 0.495300
-vn -0.785600 -0.420900 -0.453500
-vn 0.000000 -0.420900 -0.907100
-vn 0.785600 -0.420900 -0.453600
-vn -0.785600 -0.420900 -0.453600
-usemtl Wood.001
-s off
-f 1/1/1 2/2/1 3/3/1
-f 1/4/2 5/5/2 6/6/2
-f 5/7/3 7/8/3 8/9/3
-f 4/10/4 7/11/4 5/12/4
-f 3/13/5 8/14/5 7/15/5
-f 4/16/1 1/1/1 3/3/1
-f 2/17/2 1/4/2 6/6/2
-f 6/18/3 5/7/3 8/9/3
-f 1/19/4 4/10/4 5/12/4
-f 4/20/5 3/13/5 7/15/5
-usemtl Green_leafs
-f 3/21/4 9/22/4 8/23/4
-f 3/21/4 10/24/4 9/22/4
-f 11/25/4 10/24/4 3/21/4
-f 10/24/4 11/25/4 12/26/4
-f 12/27/6 11/28/6 13/29/6
-f 11/30/7 15/31/7 16/32/7
-f 11/25/4 2/33/4 15/34/4
-f 2/33/4 11/25/4 3/21/4
-f 15/34/4 2/33/4 6/35/4
-f 15/34/4 6/35/4 9/22/4
-f 8/23/4 9/22/4 6/35/4
-f 15/34/4 9/22/4 17/36/4
-f 18/37/8 19/38/8 17/39/8
-f 18/40/9 20/41/9 21/42/9
-f 23/43/10 20/44/10 18/45/10
-f 23/46/11 22/47/11 14/48/11
-f 24/49/12 25/50/12 23/51/12
-f 26/52/13 25/53/13 24/54/13
-f 27/55/14 25/56/14 26/57/14
-f 21/58/15 25/59/15 27/60/15
-f 20/61/16 25/62/16 21/63/16
-f 25/64/17 20/65/17 23/66/17
-f 16/67/18 19/68/18 21/69/18
-f 16/70/19 15/71/19 17/72/19
-f 27/73/20 26/74/20 13/75/20
-f 24/76/21 14/77/21 13/78/21
-f 12/79/22 14/80/22 22/81/22
-f 9/82/23 10/83/23 22/84/23
-f 14/85/6 12/27/6 13/29/6
-f 13/86/7 11/30/7 16/32/7
-f 9/87/24 18/37/24 17/39/24
-f 19/88/9 18/40/9 21/42/9
-f 22/89/10 23/43/10 18/45/10
-f 24/90/11 23/46/11 14/48/11
-f 27/91/18 16/67/18 21/69/18
-f 19/92/19 16/70/19 17/72/19
-f 16/93/20 27/73/20 13/75/20
-f 26/94/21 24/76/21 13/78/21
-f 10/95/25 12/79/25 22/81/25
-f 18/96/23 9/82/23 22/84/23
diff --git a/contrib/tinks/assets/models/Oak_Dark_01.mtl b/contrib/tinks/assets/models/Oak_Dark_01.mtl
deleted file mode 100644
index 51e9d7cfa0..0000000000
--- a/contrib/tinks/assets/models/Oak_Dark_01.mtl
+++ /dev/null
@@ -1,20 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 2
-
-newmtl Leafs.001
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.216470 0.326274 0.320000
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl Wood.002
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.533334 0.436078 0.285490
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Oak_Dark_01.obj b/contrib/tinks/assets/models/Oak_Dark_01.obj
deleted file mode 100644
index 4af44dd79a..0000000000
--- a/contrib/tinks/assets/models/Oak_Dark_01.obj
+++ /dev/null
@@ -1,247 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Oak_Dark_01.mtl
-o Mesh1_Oak_Dark_Model
-v 0.788482 1.533500 -0.461880
-v 0.000395 1.533500 -0.916880
-v 0.000395 2.817000 -0.916880
-v 0.788482 2.817000 -0.461880
-v 0.000395 1.270000 -0.516480
-v 0.441722 1.270000 -0.261680
-v -0.440931 1.270000 -0.261680
-v -0.787688 1.533500 -0.461880
-v -0.787688 1.533500 0.448120
-v -0.440931 1.270000 0.247920
-v -0.787688 2.817000 0.448120
-v -0.787688 2.817000 -0.461880
-v 0.000395 1.533500 0.903120
-v 0.000395 2.817000 0.903120
-v 0.000395 1.270000 0.502720
-v 0.441722 1.270000 0.247920
-v 0.788482 1.533500 0.448120
-v 0.114651 1.270000 0.107376
-v -0.113861 1.270000 0.107376
-v -0.113861 1.270000 -0.121140
-v 0.114651 1.270000 -0.121140
-v 0.180326 0.000000 0.173050
-v 0.180326 0.000000 -0.186810
-v -0.179535 0.000000 0.173050
-v -0.179535 0.000000 -0.186810
-v 0.788482 2.817000 0.448120
-v 0.457482 4.508500 -0.270780
-v 0.457482 4.508500 0.257020
-v 0.000395 4.508500 -0.534680
-v -0.456693 4.508500 -0.270780
-v -0.456693 4.508500 0.257020
-v 0.000395 4.933500 -0.006880
-v 0.000395 4.508500 0.520920
-vt 0.103409 0.697045
-vt 0.103409 1.280450
-vt -0.310227 1.280450
-vt -0.310227 1.134770
-vt -0.219227 0.936811
-vt 0.012409 0.936811
-vt -0.310227 0.849557
-vt -0.723864 0.849557
-vt -0.632864 0.651596
-vt -0.620455 0.421735
-vt -0.529455 0.223774
-vt -0.297818 0.223774
-vt -0.206818 0.697045
-vt -0.206818 1.280450
-vt -0.620455 1.280450
-vt 0.310227 0.697045
-vt 0.310227 1.280450
-vt -0.103409 1.280450
-vt 0.219227 0.081167
-vt 0.310227 0.279128
-vt -0.103409 0.279128
-vt 0.723864 0.564342
-vt 0.310227 0.564342
-vt 0.401227 0.366382
-vt 0.206818 0.992165
-vt 0.297818 0.794204
-vt 0.529455 0.794204
-vt -0.558823 0.297818
-vt -0.410154 0.361702
-vt -0.558823 0.529455
-vt -0.358220 0.182000
-vt -0.306285 0.361702
-vt -0.157617 0.297818
-vt -0.306285 0.465571
-vt -0.358220 0.645273
-vt -0.157617 0.529455
-vt -0.410154 0.465571
-vt 0.620455 0.697045
-vt 0.620455 1.280450
-vt 0.206818 1.280450
-vt 0.620455 1.119040
-vt 0.533591 1.902480
-vt 0.293682 1.902480
-vt 0.016546 1.868090
-vt -0.223364 1.868090
-vt -0.310227 1.084640
-vt -0.397091 1.936880
-vt -0.637000 1.936880
-vt -0.723864 1.153430
-vt -0.533591 2.040070
-vt -0.620455 1.256620
-vt -0.206818 1.256620
-vt -0.293682 1.505630
-vt -0.413636 1.789330
-vt -0.533591 1.505630
-vt 0.223364 1.636800
-vt 0.103409 1.920500
-vt -0.016546 1.636800
-vt 0.517045 1.658160
-vt 0.397091 1.374460
-vt 0.637000 1.374460
-vt 0.723864 1.222230
-vt 0.637000 2.005670
-vt 0.397091 2.005670
-vt 0.223364 2.074460
-vt -0.016546 2.074460
-vt -0.103409 1.291020
-vt 0.723864 0.697045
-vt 0.723864 1.280450
-vt 0.533591 0.980952
-vt 0.413636 1.264650
-vt 0.293682 0.980952
-vt 0.016546 0.849782
-vt -0.103409 1.133480
-vt -0.223364 0.849782
-vt -0.397091 1.112120
-vt -0.517045 1.395820
-vt -0.637000 1.112120
-vt -0.310227 0.697045
-vt -0.723864 1.280450
-vt 0.103409 1.134770
-vt -0.401227 0.651596
-vt -0.206818 0.421735
-vt -0.620455 0.697045
-vt -0.103409 0.697045
-vt -0.012409 0.081167
-vt 0.632864 0.366382
-vt 0.620455 0.992165
-vt 0.206818 0.697045
-vt 0.206818 1.119040
-vt 0.103409 1.084640
-vt -0.310227 1.153430
-vt -0.293682 2.040070
-vt 0.310227 1.222230
-vt 0.310227 1.291020
-vt -0.723864 0.697045
-vt 0.331850 -0.022723
-vt 0.495423 -0.022723
-vt 0.465571 0.555321
-vt -0.276433 0.495423
-vt -0.440006 0.495423
-vt -0.440006 0.331850
-vt -0.331850 0.014276
-vt -0.361702 0.592320
-vt -0.465571 0.592320
-vt 0.410154 0.595182
-vt 0.306285 0.595182
-vt 0.276433 0.017138
-vt -0.306285 0.552459
-vt -0.410154 0.552459
-vt -0.440006 -0.025585
-vt 0.361702 0.555321
-vt -0.276433 0.331850
-vt -0.495423 0.014276
-vt 0.440006 0.017138
-vt -0.276433 -0.025585
-vn 0.500000 0.000000 -0.866000
-vn 0.302500 -0.796200 -0.524000
-vn -0.302500 -0.796200 -0.524000
-vn -0.605000 -0.796200 0.000000
-vn -1.000000 0.000000 0.000000
-vn -0.500000 -0.000000 0.866000
-vn -0.302500 -0.796200 0.524000
-vn 0.302500 -0.796200 0.524000
-vn 0.605000 -0.796200 0.000000
-vn 0.000000 -1.000000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.981400 0.192000 0.000000
-vn 0.490700 0.192000 -0.849900
-vn -0.490700 0.192000 -0.849900
-vn -0.981400 0.192000 0.000000
-vn -0.680900 0.732300 0.000000
-vn -0.340500 0.732300 0.589700
-vn 0.340500 0.732300 0.589700
-vn 0.490700 0.192000 0.849900
-vn -0.490700 0.192000 0.849900
-vn 0.500000 -0.000000 0.866000
-vn 0.680900 0.732300 0.000000
-vn 0.340500 0.732300 -0.589700
-vn -0.340500 0.732300 -0.589700
-vn -0.500000 0.000000 -0.866000
-vn 0.998700 0.051600 0.000000
-vn -0.998700 0.051600 0.000000
-vn 0.000000 0.051600 0.998700
-vn 0.000000 0.051600 -0.998700
-usemtl Leafs.001
-s off
-f 2/1/1 3/2/1 4/3/1
-f 1/4/2 6/5/2 5/6/2
-f 8/7/3 2/8/3 5/9/3
-f 8/10/4 7/11/4 10/12/4
-f 9/13/5 11/14/5 12/15/5
-f 13/16/6 14/17/6 11/18/6
-f 15/19/7 13/20/7 9/21/7
-f 17/22/8 13/23/8 15/24/8
-f 17/25/9 16/26/9 6/27/9
-f 16/28/10 18/29/10 6/30/10
-f 15/31/10 18/29/10 16/28/10
-f 15/31/10 19/32/10 18/29/10
-f 10/33/10 19/32/10 15/31/10
-f 19/32/10 10/33/10 20/34/10
-f 10/33/10 5/35/10 20/34/10
-f 5/35/10 10/33/10 7/36/10
-f 20/34/10 5/35/10 21/37/10
-f 21/37/10 5/35/10 6/30/10
-f 21/37/10 6/30/10 18/29/10
-f 1/38/11 4/39/11 26/40/11
-f 4/41/12 27/42/12 28/43/12
-f 29/44/13 27/45/13 4/46/13
-f 30/47/14 29/48/14 3/49/14
-f 30/50/15 12/51/15 11/52/15
-f 31/53/16 32/54/16 30/55/16
-f 33/56/17 32/57/17 31/58/17
-f 32/59/18 33/60/18 28/61/18
-f 26/62/19 28/63/19 33/64/19
-f 33/65/20 31/66/20 11/67/20
-f 17/68/21 26/69/21 14/17/21
-f 27/70/22 32/71/22 28/72/22
-f 29/73/23 32/74/23 27/75/23
-f 30/76/24 32/77/24 29/78/24
-f 8/79/25 12/3/25 3/80/25
-f 1/79/1 2/1/1 4/3/1
-f 2/81/2 1/4/2 5/6/2
-f 7/82/3 8/7/3 5/9/3
-f 9/83/4 8/10/4 10/12/4
-f 8/84/5 9/13/5 12/15/5
-f 9/85/6 13/16/6 11/18/6
-f 10/86/7 15/19/7 9/21/7
-f 16/87/8 17/22/8 15/24/8
-f 1/88/9 17/25/9 6/27/9
-f 17/89/11 1/38/11 26/40/11
-f 26/90/12 4/41/12 28/43/12
-f 3/91/13 29/44/13 4/46/13
-f 12/92/14 30/47/14 3/49/14
-f 31/93/15 30/50/15 11/52/15
-f 14/94/19 26/62/19 33/64/19
-f 14/95/20 33/65/20 11/67/20
-f 13/16/21 17/68/21 14/17/21
-f 2/96/25 8/79/25 3/80/25
-usemtl Wood.002
-f 22/97/26 23/98/26 21/99/26
-f 25/100/10 23/101/10 22/102/10
-f 24/103/27 19/104/27 20/105/27
-f 18/106/28 19/107/28 24/108/28
-f 20/109/29 21/110/29 23/111/29
-f 18/112/26 22/97/26 21/99/26
-f 24/113/10 25/100/10 22/102/10
-f 25/114/27 24/103/27 20/105/27
-f 22/115/28 18/106/28 24/108/28
-f 25/116/29 20/109/29 23/111/29
diff --git a/contrib/tinks/assets/models/Oak_Green_01.mtl b/contrib/tinks/assets/models/Oak_Green_01.mtl
deleted file mode 100644
index a45a3d6f68..0000000000
--- a/contrib/tinks/assets/models/Oak_Green_01.mtl
+++ /dev/null
@@ -1,20 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 2
-
-newmtl Green_leafs.002
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.238431 0.423530 0.341961
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
-
-newmtl Wood.004
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.533334 0.436078 0.285490
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Oak_Green_01.obj b/contrib/tinks/assets/models/Oak_Green_01.obj
deleted file mode 100644
index 40cc0c24d8..0000000000
--- a/contrib/tinks/assets/models/Oak_Green_01.obj
+++ /dev/null
@@ -1,247 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Oak_Green_01.mtl
-o Mesh1_Oak_Green_Model.001
-v 0.805160 1.533500 -0.471659
-v 0.017074 1.533500 -0.926659
-v 0.017074 2.817000 -0.926659
-v 0.805160 2.817000 -0.471659
-v 0.017074 1.270000 -0.526259
-v 0.458401 1.270000 -0.271459
-v -0.424253 1.270000 -0.271459
-v -0.771010 1.533500 -0.471659
-v -0.771010 1.533500 0.438341
-v -0.424253 1.270000 0.238141
-v -0.771010 2.817000 0.438341
-v -0.771010 2.817000 -0.471659
-v 0.017074 1.533500 0.893341
-v 0.017074 2.817000 0.893341
-v 0.017074 1.270000 0.492941
-v 0.458401 1.270000 0.238141
-v 0.805160 1.533500 0.438341
-v 0.131329 1.270000 0.097597
-v -0.097183 1.270000 0.097597
-v -0.097183 1.270000 -0.130919
-v 0.131329 1.270000 -0.130919
-v 0.197004 0.000000 0.163271
-v 0.197004 0.000000 -0.196589
-v -0.162857 0.000000 0.163271
-v -0.162857 0.000000 -0.196589
-v 0.805160 2.817000 0.438341
-v 0.474160 4.508500 -0.280559
-v 0.474160 4.508500 0.247241
-v 0.017074 4.508500 -0.544459
-v -0.440015 4.508500 -0.280559
-v -0.440015 4.508500 0.247241
-v 0.017074 4.933500 -0.016659
-v 0.017074 4.508500 0.511141
-vt 0.331850 -0.022723
-vt 0.495423 -0.022723
-vt 0.465571 0.555321
-vt -0.276433 0.495423
-vt -0.440006 0.495423
-vt -0.440006 0.331850
-vt -0.331850 0.014276
-vt -0.361702 0.592320
-vt -0.465571 0.592320
-vt 0.440006 0.017138
-vt 0.410154 0.595182
-vt 0.306285 0.595182
-vt -0.306285 0.552459
-vt -0.410154 0.552459
-vt -0.440006 -0.025585
-vt 0.361702 0.555321
-vt -0.276433 0.331850
-vt -0.495423 0.014276
-vt 0.276433 0.017138
-vt -0.276433 -0.025585
-vt 0.103409 0.697045
-vt 0.103409 1.280450
-vt -0.310227 1.280450
-vt -0.310227 1.134770
-vt -0.219227 0.936811
-vt 0.012409 0.936811
-vt -0.310227 0.849557
-vt -0.723864 0.849557
-vt -0.632864 0.651596
-vt -0.206818 0.421735
-vt -0.620455 0.421735
-vt -0.529455 0.223774
-vt -0.206818 0.697045
-vt -0.206818 1.280450
-vt -0.620455 1.280450
-vt 0.310227 0.697045
-vt 0.310227 1.280450
-vt -0.103409 1.280450
-vt 0.310227 0.279128
-vt -0.103409 0.279128
-vt -0.012409 0.081167
-vt 0.723864 0.564342
-vt 0.310227 0.564342
-vt 0.401227 0.366382
-vt 0.206818 0.992165
-vt 0.297818 0.794204
-vt 0.529455 0.794204
-vt -0.558823 0.297818
-vt -0.410154 0.361702
-vt -0.558823 0.529455
-vt -0.358220 0.182000
-vt -0.306285 0.361702
-vt -0.157617 0.297818
-vt -0.306285 0.465571
-vt -0.358220 0.645273
-vt -0.157617 0.529455
-vt -0.410154 0.465571
-vt 0.620455 0.697045
-vt 0.620455 1.280450
-vt 0.206818 1.280450
-vt 0.620455 1.119040
-vt 0.533591 1.902480
-vt 0.293682 1.902480
-vt 0.016546 1.868090
-vt -0.223364 1.868090
-vt -0.310227 1.084640
-vt -0.397091 1.936880
-vt -0.637000 1.936880
-vt -0.723864 1.153430
-vt -0.533591 2.040070
-vt -0.620455 1.256620
-vt -0.206818 1.256620
-vt -0.293682 1.505630
-vt -0.413636 1.789330
-vt -0.533591 1.505630
-vt 0.223364 1.636800
-vt 0.103409 1.920500
-vt -0.016546 1.636800
-vt 0.517045 1.658160
-vt 0.397091 1.374460
-vt 0.637000 1.374460
-vt 0.723864 1.222230
-vt 0.637000 2.005670
-vt 0.397091 2.005670
-vt 0.223364 2.074460
-vt -0.016546 2.074460
-vt -0.103409 1.291020
-vt 0.723864 0.697045
-vt 0.723864 1.280450
-vt 0.533591 0.980952
-vt 0.413636 1.264650
-vt 0.293682 0.980952
-vt 0.016546 0.849782
-vt -0.103409 1.133480
-vt -0.223364 0.849782
-vt -0.397091 1.112120
-vt -0.517045 1.395820
-vt -0.637000 1.112120
-vt -0.310227 0.697045
-vt -0.723864 1.280450
-vt 0.103409 1.134770
-vt -0.401227 0.651596
-vt -0.297818 0.223774
-vt -0.620455 0.697045
-vt -0.103409 0.697045
-vt 0.219227 0.081167
-vt 0.632864 0.366382
-vt 0.620455 0.992165
-vt 0.206818 0.697045
-vt 0.206818 1.119040
-vt 0.103409 1.084640
-vt -0.310227 1.153430
-vt -0.293682 2.040070
-vt 0.310227 1.222230
-vt 0.310227 1.291020
-vt -0.723864 0.697045
-vn 0.998700 0.051600 0.000000
-vn 0.000000 -1.000000 -0.000000
-vn -0.998700 0.051600 0.000000
-vn 0.000000 0.051600 0.998700
-vn 0.000000 0.051600 -0.998700
-vn 0.500000 0.000000 -0.866000
-vn 0.302500 -0.796200 -0.524000
-vn -0.302500 -0.796200 -0.524000
-vn -0.605000 -0.796200 -0.000000
-vn -1.000000 0.000000 0.000000
-vn -0.500000 -0.000000 0.866000
-vn -0.302500 -0.796200 0.524000
-vn 0.302500 -0.796200 0.524000
-vn 0.605000 -0.796200 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.981400 0.192000 0.000000
-vn 0.490700 0.192000 -0.849900
-vn -0.490700 0.192000 -0.849900
-vn -0.981400 0.192000 0.000000
-vn -0.680900 0.732300 0.000000
-vn -0.340500 0.732300 0.589700
-vn 0.340500 0.732300 0.589700
-vn 0.490700 0.192000 0.849900
-vn -0.490700 0.192000 0.849900
-vn 0.500000 -0.000000 0.866000
-vn 0.680900 0.732300 0.000000
-vn 0.340500 0.732300 -0.589700
-vn -0.340500 0.732300 -0.589700
-vn -0.500000 0.000000 -0.866000
-usemtl Wood.004
-s off
-f 22/1/1 23/2/1 21/3/1
-f 25/4/2 23/5/2 22/6/2
-f 24/7/3 19/8/3 20/9/3
-f 22/10/4 18/11/4 19/12/4
-f 20/13/5 21/14/5 23/15/5
-f 18/16/1 22/1/1 21/3/1
-f 24/17/2 25/4/2 22/6/2
-f 25/18/3 24/7/3 20/9/3
-f 24/19/4 22/10/4 19/12/4
-f 25/20/5 20/13/5 23/15/5
-usemtl Green_leafs.002
-f 2/21/6 3/22/6 4/23/6
-f 1/24/7 6/25/7 5/26/7
-f 8/27/8 2/28/8 5/29/8
-f 9/30/9 8/31/9 7/32/9
-f 9/33/10 11/34/10 12/35/10
-f 13/36/11 14/37/11 11/38/11
-f 13/39/12 9/40/12 10/41/12
-f 17/42/13 13/43/13 15/44/13
-f 17/45/14 16/46/14 6/47/14
-f 16/48/2 18/49/2 6/50/2
-f 15/51/2 18/49/2 16/48/2
-f 15/51/2 19/52/2 18/49/2
-f 10/53/2 19/52/2 15/51/2
-f 19/52/2 10/53/2 20/54/2
-f 10/53/2 5/55/2 20/54/2
-f 5/55/2 10/53/2 7/56/2
-f 20/54/2 5/55/2 21/57/2
-f 21/57/2 5/55/2 6/50/2
-f 21/57/2 6/50/2 18/49/2
-f 1/58/15 4/59/15 26/60/15
-f 4/61/16 27/62/16 28/63/16
-f 29/64/17 27/65/17 4/66/17
-f 30/67/18 29/68/18 3/69/18
-f 30/70/19 12/71/19 11/72/19
-f 31/73/20 32/74/20 30/75/20
-f 33/76/21 32/77/21 31/78/21
-f 32/79/22 33/80/22 28/81/22
-f 26/82/23 28/83/23 33/84/23
-f 33/85/24 31/86/24 11/87/24
-f 17/88/25 26/89/25 14/37/25
-f 27/90/26 32/91/26 28/92/26
-f 29/93/27 32/94/27 27/95/27
-f 30/96/28 32/97/28 29/98/28
-f 8/99/29 12/23/29 3/100/29
-f 1/99/6 2/21/6 4/23/6
-f 2/101/7 1/24/7 5/26/7
-f 7/102/8 8/27/8 5/29/8
-f 10/103/9 9/30/9 7/32/9
-f 8/104/10 9/33/10 12/35/10
-f 9/105/11 13/36/11 11/38/11
-f 15/106/12 13/39/12 10/41/12
-f 16/107/13 17/42/13 15/44/13
-f 1/108/14 17/45/14 6/47/14
-f 17/109/15 1/58/15 26/60/15
-f 26/110/16 4/61/16 28/63/16
-f 3/111/17 29/64/17 4/66/17
-f 12/112/18 30/67/18 3/69/18
-f 31/113/19 30/70/19 11/72/19
-f 14/114/23 26/82/23 33/84/23
-f 14/115/24 33/85/24 11/87/24
-f 13/36/25 17/88/25 14/37/25
-f 2/116/29 8/99/29 3/100/29
diff --git a/contrib/tinks/assets/models/Tall_Rock_1_01.mtl b/contrib/tinks/assets/models/Tall_Rock_1_01.mtl
deleted file mode 100644
index de6306b47e..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_1_01.mtl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Stone
-Ns 96.078431
-Ka 0.000000 0.000000 0.000000
-Kd 0.580392 0.602353 0.630588
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Tall_Rock_1_01.obj b/contrib/tinks/assets/models/Tall_Rock_1_01.obj
deleted file mode 100644
index 3e88707d18..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_1_01.obj
+++ /dev/null
@@ -1,146 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Tall_Rock_1_01.mtl
-o Mesh1_Tall_Rock_1_Model
-v 0.342046 1.590000 0.209427
-v 0.448116 0.740000 0.230549
-v 0.448116 0.740000 -0.035701
-v 0.601836 0.000000 0.319299
-v -0.013046 0.740000 0.496799
-v -0.013046 1.590000 0.414440
-v -0.368138 1.590000 0.209427
-v -0.474204 0.740000 0.230549
-v -0.368138 1.590000 0.004415
-v -0.474204 0.740000 -0.035701
-v -0.089681 1.590000 -0.137009
-v -0.112571 0.740000 -0.219368
-v -0.474204 0.740000 -0.301951
-v -0.013046 0.740000 -0.568201
-v -0.013046 0.000000 -0.745701
-v 0.448116 0.740000 -0.301951
-v 0.601836 0.000000 -0.390701
-v -0.627924 0.000000 0.319299
-v -0.627924 0.000000 -0.390701
-v 0.342046 1.590000 0.004415
-v -0.013046 0.000000 0.674299
-vt 18.302000 57.388100
-vt 17.470501 23.664000
-vt 27.952801 23.664000
-vt 48.917301 -2.461780
-vt 45.423199 27.294001
-vt 24.458700 27.294001
-vt 45.423199 28.525801
-vt 42.222599 62.108002
-vt 26.079901 62.108002
-vt 15.849200 64.132202
-vt -0.293488 64.132202
-vt -3.494090 30.549999
-vt -18.302000 63.383099
-vt -26.373400 63.383099
-vt -27.952801 29.659000
-vt -18.053699 26.816999
-vt -21.061701 60.443802
-vt -33.357399 60.443802
-vt -31.556999 25.716900
-vt -8.328640 25.716900
-vt -10.194500 59.298500
-vt -24.458700 22.370501
-vt -45.423199 22.370501
-vt -48.917301 -7.385330
-vt 3.494090 17.446899
-vt -17.470501 17.446899
-vt -20.964600 -12.308900
-vt 17.470501 32.217602
-vt -3.494090 32.217602
-vt -6.988190 2.461780
-vt 21.190701 31.941200
-vt 10.227800 26.373400
-vt 10.227800 18.302000
-vt 20.289499 35.183701
-vt 42.363602 27.952801
-vt 42.363602 38.435001
-vt 0.558980 0.161364
-vt 0.558980 0.484091
-vt 0.279490 0.645455
-vt -27.952801 29.755800
-vt -38.435001 29.755800
-vt -41.929100 -0.000000
-vt 27.952801 19.908701
-vt 17.470501 19.908701
-vt 13.976400 -9.847110
-vt 26.373400 57.388100
-vt 20.964600 -2.461780
-vt 24.458700 28.525801
-vt 17.470501 30.549999
-vt -17.470501 29.659000
-vt -34.022202 26.816999
-vt -28.080299 59.298500
-vt -20.964600 -7.385330
-vt 6.988190 -12.308900
-vt 20.964600 2.461780
-vt 24.207800 10.230700
-vt 38.187801 18.302000
-vt 38.187801 26.373400
-vt 6.051950 38.435001
-vt 6.051950 27.952801
-vt 24.207800 48.917301
-vt 0.000000 0.484091
-vt 0.000000 0.161364
-vt -17.470501 29.755800
-vt -13.976400 -0.000000
-vt 0.279490 0.000000
-vt 38.435001 19.908701
-vt 41.929100 -9.847110
-vn 0.992300 0.123800 0.000000
-vn 0.489500 0.203400 0.847900
-vn 0.498200 0.083600 0.863000
-vn -0.498200 0.083600 0.863000
-vn -0.992300 0.123800 0.000000
-vn -0.450600 0.098100 -0.887300
-vn 0.310200 0.083400 -0.947000
-vn -0.489500 0.203400 -0.847900
-vn 0.489500 0.203400 -0.847900
-vn -0.489500 0.203400 0.847900
-vn 0.000000 1.000000 0.000000
-vn -0.979100 0.203400 0.000000
-vn 0.979100 0.203400 0.000000
-usemtl Stone
-s off
-f 1/1/1 2/2/1 3/3/1
-f 4/4/2 2/5/2 5/6/2
-f 2/7/3 1/8/3 6/9/3
-f 6/10/4 7/11/4 8/12/4
-f 7/13/5 9/14/5 10/15/5
-f 10/16/6 9/17/6 11/18/6
-f 3/19/7 12/20/7 11/21/7
-f 13/22/8 14/23/8 15/24/8
-f 14/25/9 16/26/9 17/27/9
-f 5/28/10 8/29/10 18/30/10
-f 11/31/11 9/32/11 7/33/11
-f 12/34/11 3/35/11 16/36/11
-f 4/37/11 17/38/11 15/39/11
-f 10/40/12 13/41/12 19/42/12
-f 3/43/13 2/44/13 4/45/13
-f 20/46/1 1/1/1 3/3/1
-f 21/47/2 4/4/2 5/6/2
-f 5/48/3 2/7/3 6/9/3
-f 5/49/4 6/10/4 8/12/4
-f 8/50/5 7/13/5 10/15/5
-f 12/51/6 10/16/6 11/18/6
-f 20/52/7 3/19/7 11/21/7
-f 19/53/8 13/22/8 15/24/8
-f 15/54/9 14/25/9 17/27/9
-f 21/55/10 5/28/10 18/30/10
-f 6/56/11 1/57/11 11/31/11
-f 11/31/11 1/57/11 20/58/11
-f 6/56/11 11/31/11 7/33/11
-f 13/59/11 10/60/11 12/34/11
-f 13/59/11 12/34/11 14/61/11
-f 15/39/11 19/62/11 18/63/11
-f 8/64/12 10/40/12 18/65/12
-f 12/34/11 16/36/11 14/61/11
-f 4/37/11 15/39/11 21/66/11
-f 16/67/13 3/43/13 17/68/13
-f 15/39/11 18/63/11 21/66/11
-f 10/40/12 19/42/12 18/65/12
-f 3/43/13 4/45/13 17/68/13
diff --git a/contrib/tinks/assets/models/Tall_Rock_2_01.mtl b/contrib/tinks/assets/models/Tall_Rock_2_01.mtl
deleted file mode 100644
index cbb536a3ef..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_2_01.mtl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Stone.001
-Ns 92.156863
-Ka 0.000000 0.000000 0.000000
-Kd 0.464314 0.481882 0.504470
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Tall_Rock_2_01.obj b/contrib/tinks/assets/models/Tall_Rock_2_01.obj
deleted file mode 100644
index a5626ee2d4..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_2_01.obj
+++ /dev/null
@@ -1,194 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Tall_Rock_2_01.mtl
-o Mesh1_Tall_Rock_2_Model
-v 0.524807 1.060000 0.293341
-v 0.018354 1.060000 0.585741
-v 0.018354 0.000000 0.680941
-v 0.018354 0.000000 -0.679060
-v 0.018354 1.060000 -0.583859
-v 0.524807 1.060000 -0.291459
-v -0.488097 1.060000 -0.291459
-v -0.488097 1.060000 0.000941
-v -0.417194 1.480000 0.030156
-v -0.023658 1.480000 -0.113848
-v -0.417194 1.480000 0.281620
-v -0.177532 1.480000 0.419989
-v 0.453907 1.480000 0.281620
-v 0.018354 1.480000 0.533084
-v 0.524807 1.060000 0.000941
-v 0.453907 1.480000 0.030156
-v 0.003855 2.170000 -0.058858
-v 0.400231 2.170000 0.060664
-v 0.038726 2.170000 0.478095
-v -0.123860 2.170000 0.384226
-v 0.400231 2.170000 0.269380
-v -0.488097 1.060000 0.293341
-v -0.570543 0.000000 0.340941
-v -0.570543 0.000000 -0.339059
-v -0.030498 1.060000 -0.166505
-v 0.607247 0.000000 0.340941
-v 0.607247 0.000000 -0.339059
-vt 0.519273 0.472895
-vt 0.253455 0.472895
-vt 0.231818 -0.010379
-vt 0.077273 -0.051893
-vt 0.055636 0.431380
-vt -0.210182 0.431380
-vt -0.253455 0.452138
-vt -0.519273 0.452138
-vt -0.540909 -0.031136
-vt -0.141409 0.444240
-vt -0.167111 0.636596
-vt -0.357591 0.636596
-vt -0.181510 0.674944
-vt -0.295811 0.674944
-vt -0.309091 0.481334
-vt 0.069704 0.181510
-vt 0.178641 0.118615
-vt 0.248584 0.361268
-vt 0.519273 0.468601
-vt 0.494026 0.660632
-vt 0.265422 0.660632
-vt 0.309091 0.392217
-vt 0.295811 0.585827
-vt 0.181510 0.585827
-vt -0.133701 0.620445
-vt -0.360429 0.620445
-vt -0.387451 0.428270
-vt -0.152891 0.958611
-vt -0.341075 0.958611
-vt -0.360429 0.644317
-vt -0.395430 0.994078
-vt -0.415984 0.679871
-vt -0.163452 0.679871
-vt 0.193736 1.001150
-vt 0.108400 1.001150
-vt 0.095400 0.686412
-vt 0.475680 0.981739
-vt 0.285939 0.981739
-vt 0.265422 0.667642
-vt 0.295811 0.634589
-vt 0.281944 0.949173
-vt 0.187073 0.949173
-vt 0.210182 0.493652
-vt -0.055636 0.493652
-vt -0.077273 0.010379
-vt -0.309091 0.483273
-vt -0.442000 0.483273
-vt -0.463636 0.000000
-vt 0.095400 0.689526
-vt -0.030389 0.689526
-vt -0.055636 0.497495
-vt 0.245475 0.385203
-vt 0.497886 0.309091
-vt 0.497886 0.442000
-vt 0.441261 0.187073
-vt 0.441261 0.281944
-vt 0.261090 0.336272
-vt 0.309091 0.441759
-vt 0.176182 0.441759
-vt 0.154545 -0.041514
-vt -0.267681 0.618182
-vt -0.535361 0.463636
-vt -0.000000 0.463636
-vt 0.540909 -0.010379
-vt -0.231818 -0.051893
-vt -0.231818 -0.031136
-vt -0.362897 0.444240
-vt -0.176182 0.481334
-vt 0.069704 0.295811
-vt 0.253455 0.468601
-vt 0.176182 0.392217
-vt -0.123815 0.428270
-vt -0.133701 0.644317
-vt -0.185829 0.994078
-vt 0.198214 0.686412
-vt 0.494026 0.667642
-vt 0.181510 0.634589
-vt 0.231818 0.010379
-vt -0.154545 -0.000000
-vt -0.176182 0.483273
-vt 0.037475 0.442000
-vt 0.037475 0.309091
-vt 0.198214 0.689526
-vt 0.210182 0.497495
-vt 0.203038 0.134871
-vt 0.276940 0.092203
-vt 0.267681 0.574909
-vt 0.463636 -0.041514
-vt 0.442000 0.441759
-vt -0.535361 0.154545
-vt 0.000000 0.154545
-vt -0.267681 0.000000
-vn 0.498500 0.077500 0.863400
-vn 0.498500 0.077500 -0.863400
-vn -0.498500 0.077500 -0.863400
-vn -0.341100 0.122400 -0.932000
-vn -0.986000 0.166500 0.000000
-vn 0.000000 1.000000 0.000000
-vn 0.497100 0.107900 0.861000
-vn 0.986000 0.166500 0.000000
-vn 0.286800 0.114600 -0.951100
-vn 0.288100 0.064700 -0.955400
-vn -0.959100 0.060300 -0.276500
-vn -0.498300 0.083500 0.863000
-vn 0.499300 0.054200 0.864800
-vn 0.997000 0.077600 0.000000
-vn -0.498500 0.077500 0.863400
-vn -0.997000 0.077500 0.000000
-vn -0.497100 0.107900 0.861000
-vn 0.997000 0.077500 0.000000
-vn 0.000000 -1.000000 -0.000000
-usemtl Stone.001
-s off
-f 1/1/1 2/2/1 3/3/1
-f 4/4/2 5/5/2 6/6/2
-f 7/7/3 5/8/3 4/9/3
-f 8/10/4 9/11/4 10/12/4
-f 11/13/5 9/14/5 8/15/5
-f 11/16/6 12/17/6 10/18/6
-f 1/19/7 13/20/7 14/21/7
-f 15/22/8 16/23/8 13/24/8
-f 10/25/9 16/26/9 15/27/9
-f 17/28/10 18/29/10 16/30/10
-f 17/31/11 10/32/11 12/33/11
-f 19/34/12 20/35/12 12/36/12
-f 21/37/13 19/38/13 14/39/13
-f 16/40/14 18/41/14 21/42/14
-f 2/43/15 22/44/15 23/45/15
-f 8/46/16 7/47/16 24/48/16
-f 12/49/17 11/50/17 22/51/17
-f 25/52/6 15/53/6 6/54/6
-f 21/55/6 18/56/6 17/57/6
-f 15/58/18 1/59/18 26/60/18
-f 4/61/19 27/62/19 24/63/19
-f 26/64/1 1/1/1 3/3/1
-f 27/65/2 4/4/2 6/6/2
-f 24/66/3 7/7/3 4/9/3
-f 25/67/4 8/10/4 10/12/4
-f 22/68/5 11/13/5 8/15/5
-f 9/69/6 11/16/6 10/18/6
-f 2/70/7 1/19/7 14/21/7
-f 1/71/8 15/22/8 13/24/8
-f 25/72/9 10/25/9 15/27/9
-f 10/73/10 17/28/10 16/30/10
-f 20/74/11 17/31/11 12/33/11
-f 14/75/12 19/34/12 12/36/12
-f 13/76/13 21/37/13 14/39/13
-f 13/77/14 16/40/14 21/42/14
-f 3/78/15 2/43/15 23/45/15
-f 23/79/16 22/80/16 8/46/16
-f 23/79/16 8/46/16 24/48/16
-f 7/81/6 8/82/6 25/52/6
-f 14/83/17 12/49/17 2/84/17
-f 17/57/6 20/85/6 19/86/6
-f 12/49/17 22/51/17 2/84/17
-f 7/81/6 25/52/6 5/87/6
-f 27/88/18 6/89/18 15/58/18
-f 25/52/6 6/54/6 5/87/6
-f 19/86/6 21/55/6 17/57/6
-f 27/88/18 15/58/18 26/60/18
-f 26/90/19 23/91/19 27/62/19
-f 26/90/19 3/92/19 23/91/19
-f 27/62/19 23/91/19 24/63/19
diff --git a/contrib/tinks/assets/models/Tall_Rock_3_01.mtl b/contrib/tinks/assets/models/Tall_Rock_3_01.mtl
deleted file mode 100644
index 29575ee893..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_3_01.mtl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Stone.002
-Ns 92.156863
-Ka 0.000000 0.000000 0.000000
-Kd 0.464314 0.481882 0.504470
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Tall_Rock_3_01.obj b/contrib/tinks/assets/models/Tall_Rock_3_01.obj
deleted file mode 100644
index 88f7251dde..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_3_01.obj
+++ /dev/null
@@ -1,247 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Tall_Rock_3_01.mtl
-o Mesh1_Tall_Rock_3_Model
-v 0.807424 0.000000 0.405420
-v 0.648074 0.560000 0.313420
-v 0.010677 0.560000 0.681420
-v 0.807424 0.000000 -0.514580
-v 0.648074 0.560000 -0.422580
-v -0.786066 0.000000 -0.514580
-v -0.626717 0.560000 -0.422580
-v 0.010677 0.560000 -0.790580
-v -0.626717 0.560000 0.103486
-v -0.524734 0.920000 0.092916
-v -0.030574 0.920000 0.092916
-v -0.626717 0.560000 0.313420
-v -0.364111 1.970000 0.113083
-v -0.524734 0.920000 0.269260
-v 0.546084 0.920000 -0.030996
-v 0.385464 1.970000 0.026345
-v 0.385464 1.970000 0.236524
-v 0.278384 0.920000 -0.503540
-v 0.546084 0.920000 -0.348980
-v -0.104782 0.920000 -0.311940
-v 0.329374 0.560000 -0.606580
-v -0.044171 1.970000 -0.028616
-v 0.180995 1.970000 -0.132629
-v 0.253984 0.920000 -0.258100
-v -0.018198 1.970000 0.113083
-v -0.067678 0.920000 -0.109512
-v 0.546084 0.920000 0.269260
-v 0.010677 0.920000 0.578380
-v 0.010677 1.970000 0.452908
-v -0.364111 1.970000 0.236524
-v -0.786066 0.000000 0.405420
-v -0.126775 0.560000 -0.378480
-v 0.010677 0.000000 0.865420
-v 0.010677 0.000000 -0.974580
-v -0.038431 0.560000 0.103486
-vt 0.731818 -0.049559
-vt 0.690000 0.215091
-vt 0.355455 0.215091
-vt 0.627273 -0.198235
-vt 0.585455 0.066416
-vt 0.250909 0.066416
-vt -0.313636 -0.148676
-vt -0.355455 0.115974
-vt -0.690000 0.115974
-vt -0.072431 0.264601
-vt -0.118787 0.428308
-vt -0.343406 0.428308
-vt -0.351138 0.434726
-vt -0.346333 0.264650
-vt -0.250909 0.264650
-vt -0.341971 0.914160
-vt -0.351138 0.431336
-vt -0.270982 0.431336
-vt 0.407462 0.321808
-vt 0.381398 0.804633
-vt 0.285862 0.804633
-vt -0.107891 0.161345
-vt -0.248400 0.161345
-vt -0.271818 -0.010401
-vt -0.516326 0.346283
-vt -0.711054 0.346283
-vt -0.752732 0.179638
-vt -0.476559 0.874659
-vt -0.589299 0.874659
-vt -0.643336 0.395887
-vt -0.273440 0.898717
-vt -0.338921 0.898717
-vt -0.377016 0.421429
-vt -0.118787 0.411362
-vt -0.191798 0.888722
-vt -0.349031 0.888722
-vt -0.068572 0.801928
-vt -0.186299 0.801928
-vt -0.227940 0.320196
-vt 0.690000 0.220929
-vt 0.659891 0.389517
-vt 0.378873 0.389517
-vt 0.659891 0.408952
-vt 0.604102 0.888773
-vt 0.407389 0.888773
-vt 0.219884 0.926053
-vt 0.023171 0.926053
-vt -0.032618 0.446231
-vt 0.248400 0.476650
-vt -0.032618 0.476650
-vt -0.062727 0.308061
-vt 0.271818 0.314209
-vt -0.062727 0.314209
-vt -0.104545 0.049559
-vt 0.299678 0.565411
-vt 0.507019 0.669091
-vt 0.362156 0.752727
-vt -0.377016 0.428762
-vt -0.470561 0.428762
-vt -0.502115 0.265067
-vt 0.000000 0.627273
-vt 0.000000 0.209091
-vt 0.362156 0.000000
-vt 0.309674 0.535163
-vt 0.326540 0.443151
-vt 0.472752 0.510692
-vt -0.585455 0.264650
-vt -0.627273 0.000000
-vt 0.349031 0.341971
-vt 0.191798 0.341971
-vt 0.191798 0.285862
-vt 0.407462 0.237306
-vt 0.270982 0.237306
-vt 0.250909 0.067231
-vt -0.104545 0.016857
-vt -0.271818 0.016857
-vt -0.313636 -0.247793
-vt 0.313636 -0.049559
-vt 0.209091 -0.198235
-vt -0.731818 -0.148676
-vt -0.339834 0.264601
-vt -0.270982 0.434726
-vt -0.285862 0.914160
-vt 0.270982 0.321808
-vt -0.104545 -0.010401
-vt -0.520914 0.179638
-vt -0.482279 0.395887
-vt -0.283470 0.421429
-vt -0.343406 0.411362
-vt -0.059758 0.320196
-vt 0.355455 0.220929
-vt 0.378873 0.408952
-vt 0.248400 0.446231
-vt 0.271818 0.308061
-vt 0.313636 0.049559
-vt 0.072431 0.346333
-vt 0.339834 0.346333
-vt 0.072431 0.585455
-vt -0.283470 0.428762
-vt -0.279388 0.265067
-vt 0.362156 0.836364
-vt 0.724312 0.209091
-vt 0.724312 0.627273
-vt 0.605525 0.407462
-vt 0.605525 0.552000
-vt -0.209091 0.000000
-vt 0.483841 0.622255
-vt 0.439573 0.453659
-vt 0.532514 0.381398
-vt 0.337225 0.406380
-vt 0.532514 0.285862
-vt 0.362156 0.187506
-vt 0.552000 0.237306
-vt 0.585455 0.067231
-vt 0.062727 0.016857
-vt 0.104545 -0.247793
-vn 0.480900 0.273700 0.833000
-vn 0.961800 0.273700 0.000000
-vn -0.480900 0.273700 -0.833000
-vn 0.000000 -0.029300 -0.999600
-vn -0.962100 0.272600 0.000000
-vn -0.988500 0.151200 0.000000
-vn 0.988500 0.151200 0.000000
-vn 0.476400 0.303700 -0.825100
-vn -0.439200 0.189200 -0.878300
-vn -0.418000 0.079100 -0.905000
-vn -0.983600 0.008100 0.180300
-vn 0.000000 0.019200 -0.999800
-vn 0.608100 0.135700 -0.782200
-vn 0.485300 0.240600 0.840600
-vn 0.497300 0.102900 0.861400
-vn -0.497300 0.102900 0.861400
-vn -0.485300 0.240600 0.840600
-vn -0.480900 0.273700 0.833000
-vn 0.000000 1.000000 0.000000
-vn -0.983300 0.026800 0.180200
-vn -0.961800 0.273700 0.000000
-vn 0.962100 0.272600 0.000000
-vn 0.480900 0.273700 -0.833000
-vn 0.476400 0.303600 -0.825100
-usemtl Stone.002
-s off
-f 1/1/1 2/2/1 3/3/1
-f 4/4/2 5/5/2 2/6/2
-f 6/7/3 7/8/3 8/9/3
-f 9/10/4 10/11/4 11/12/4
-f 10/13/5 9/14/5 12/15/5
-f 13/16/6 10/17/6 14/18/6
-f 15/19/7 16/20/7 17/21/7
-f 18/22/8 19/23/8 5/24/8
-f 20/25/9 18/26/9 21/27/9
-f 22/28/10 23/29/10 24/30/10
-f 25/31/11 22/32/11 26/33/11
-f 10/34/12 13/35/12 25/36/12
-f 23/37/13 16/38/13 15/39/13
-f 2/40/14 27/41/14 28/42/14
-f 27/43/15 17/44/15 29/45/15
-f 29/46/16 30/47/16 14/48/16
-f 28/49/17 14/50/17 12/51/17
-f 3/52/18 12/53/18 31/54/18
-f 32/55/19 21/56/19 8/57/19
-f 26/58/20 20/59/20 32/60/20
-f 6/61/19 31/62/19 33/63/19
-f 20/64/19 26/65/19 24/66/19
-f 9/14/21 7/67/21 6/68/21
-f 25/69/19 13/70/19 30/71/19
-f 15/72/22 27/73/22 2/74/22
-f 21/75/23 5/76/23 4/77/23
-f 33/78/1 1/1/1 3/3/1
-f 1/79/2 4/4/2 2/6/2
-f 34/80/3 6/7/3 8/9/3
-f 35/81/4 9/10/4 11/12/4
-f 14/82/5 10/13/5 12/15/5
-f 30/83/6 13/16/6 14/18/6
-f 27/84/7 15/19/7 17/21/7
-f 21/85/24 18/22/24 5/24/24
-f 32/86/9 20/25/9 21/27/9
-f 26/87/10 22/28/10 24/30/10
-f 11/88/11 25/31/11 26/33/11
-f 11/89/12 10/34/12 25/36/12
-f 24/90/13 23/37/13 15/39/13
-f 3/91/14 2/40/14 28/42/14
-f 28/92/15 27/43/15 29/45/15
-f 28/93/16 29/46/16 14/48/16
-f 3/94/17 28/49/17 12/51/17
-f 33/95/18 3/52/18 31/54/18
-f 9/96/19 35/97/19 32/55/19
-f 9/96/19 32/55/19 7/98/19
-f 11/99/20 26/58/20 35/100/20
-f 6/61/19 33/63/19 34/101/19
-f 32/55/19 8/57/19 7/98/19
-f 33/63/19 1/102/19 4/103/19
-f 26/58/20 32/60/20 35/100/20
-f 24/66/19 15/104/19 19/105/19
-f 31/106/21 12/15/21 9/14/21
-f 33/63/19 4/103/19 34/101/19
-f 20/64/19 24/66/19 18/107/19
-f 31/106/21 9/14/21 6/68/21
-f 24/66/19 19/105/19 18/107/19
-f 23/108/19 25/69/19 16/109/19
-f 23/108/19 22/110/19 25/69/19
-f 17/111/19 25/69/19 29/112/19
-f 19/113/22 15/72/22 5/114/22
-f 8/115/23 21/75/23 34/116/23
-f 25/69/19 17/111/19 16/109/19
-f 25/69/19 30/71/19 29/112/19
-f 15/72/22 2/74/22 5/114/22
-f 21/75/23 4/77/23 34/116/23
diff --git a/contrib/tinks/assets/models/Tall_Rock_4_01.mtl b/contrib/tinks/assets/models/Tall_Rock_4_01.mtl
deleted file mode 100644
index 3b0df0900e..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_4_01.mtl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Stone.003
-Ns 92.156863
-Ka 0.000000 0.000000 0.000000
-Kd 0.464314 0.481882 0.504470
-Ks 0.165000 0.165000 0.165000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/Tall_Rock_4_01.obj b/contrib/tinks/assets/models/Tall_Rock_4_01.obj
deleted file mode 100644
index 4596d8a1b4..0000000000
--- a/contrib/tinks/assets/models/Tall_Rock_4_01.obj
+++ /dev/null
@@ -1,146 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib Tall_Rock_4_01.mtl
-o Mesh1_Tall_Rock_1_Model.001
-v 0.364834 1.590000 0.175706
-v 0.470904 0.740000 0.196828
-v 0.470904 0.740000 -0.069422
-v 0.624624 0.000000 0.285578
-v 0.009742 0.740000 0.463078
-v 0.009742 1.590000 0.380719
-v -0.345350 1.590000 0.175706
-v -0.451416 0.740000 0.196828
-v -0.345350 1.590000 -0.029306
-v -0.451416 0.740000 -0.069422
-v -0.066893 1.590000 -0.170730
-v -0.089783 0.740000 -0.253089
-v -0.451416 0.740000 -0.335672
-v 0.009742 0.740000 -0.601922
-v 0.009742 0.000000 -0.779422
-v 0.470904 0.740000 -0.335672
-v 0.624624 0.000000 -0.424422
-v -0.605136 0.000000 0.285578
-v -0.605136 0.000000 -0.424422
-v 0.364834 1.590000 -0.029306
-v 0.009742 0.000000 0.640578
-vt 18.302000 57.388100
-vt 17.470501 23.664000
-vt 27.952801 23.664000
-vt 48.917301 -2.461780
-vt 45.423199 27.294001
-vt 24.458700 27.294001
-vt 45.423199 28.525801
-vt 42.222599 62.108002
-vt 26.079901 62.108002
-vt 15.849200 64.132202
-vt -0.293488 64.132202
-vt -3.494090 30.549999
-vt -18.302000 63.383099
-vt -26.373400 63.383099
-vt -27.952801 29.659000
-vt -18.053699 26.816999
-vt -21.061701 60.443802
-vt -33.357399 60.443802
-vt -31.556999 25.716900
-vt -8.328640 25.716900
-vt -10.194500 59.298500
-vt -24.458700 22.370501
-vt -45.423199 22.370501
-vt -48.917301 -7.385330
-vt 3.494090 17.446899
-vt -17.470501 17.446899
-vt -20.964600 -12.308900
-vt 17.470501 32.217602
-vt -3.494090 32.217602
-vt -6.988190 2.461780
-vt 21.190701 31.941200
-vt 10.227800 26.373400
-vt 10.227800 18.302000
-vt 20.289499 35.183701
-vt 42.363602 27.952801
-vt 42.363602 38.435001
-vt 0.558980 0.161364
-vt 0.558980 0.484091
-vt 0.279490 0.645455
-vt -27.952801 29.755800
-vt -38.435001 29.755800
-vt -41.929100 -0.000000
-vt 27.952801 19.908701
-vt 17.470501 19.908701
-vt 13.976400 -9.847110
-vt 26.373400 57.388100
-vt 20.964600 -2.461780
-vt 24.458700 28.525801
-vt 17.470501 30.549999
-vt -17.470501 29.659000
-vt -34.022202 26.816999
-vt -28.080299 59.298500
-vt -20.964600 -7.385330
-vt 6.988190 -12.308900
-vt 20.964600 2.461780
-vt 24.207800 10.230700
-vt 38.187801 18.302000
-vt 38.187801 26.373400
-vt 6.051950 38.435001
-vt 6.051950 27.952801
-vt 24.207800 48.917301
-vt 0.000000 0.484091
-vt 0.000000 0.161364
-vt -17.470501 29.755800
-vt -13.976400 -0.000000
-vt 0.279490 0.000000
-vt 38.435001 19.908701
-vt 41.929100 -9.847110
-vn 0.992300 0.123800 0.000000
-vn 0.489500 0.203400 0.847900
-vn 0.498200 0.083600 0.863000
-vn -0.498200 0.083600 0.863000
-vn -0.992300 0.123800 0.000000
-vn -0.450600 0.098100 -0.887300
-vn 0.310200 0.083400 -0.947000
-vn -0.489500 0.203400 -0.847900
-vn 0.489500 0.203400 -0.847900
-vn -0.489500 0.203400 0.847900
-vn 0.000000 1.000000 0.000000
-vn -0.979100 0.203400 0.000000
-vn 0.979100 0.203400 0.000000
-usemtl Stone.003
-s off
-f 1/1/1 2/2/1 3/3/1
-f 4/4/2 2/5/2 5/6/2
-f 2/7/3 1/8/3 6/9/3
-f 6/10/4 7/11/4 8/12/4
-f 7/13/5 9/14/5 10/15/5
-f 10/16/6 9/17/6 11/18/6
-f 3/19/7 12/20/7 11/21/7
-f 13/22/8 14/23/8 15/24/8
-f 14/25/9 16/26/9 17/27/9
-f 5/28/10 8/29/10 18/30/10
-f 11/31/11 9/32/11 7/33/11
-f 12/34/11 3/35/11 16/36/11
-f 4/37/11 17/38/11 15/39/11
-f 10/40/12 13/41/12 19/42/12
-f 3/43/13 2/44/13 4/45/13
-f 20/46/1 1/1/1 3/3/1
-f 21/47/2 4/4/2 5/6/2
-f 5/48/3 2/7/3 6/9/3
-f 5/49/4 6/10/4 8/12/4
-f 8/50/5 7/13/5 10/15/5
-f 12/51/6 10/16/6 11/18/6
-f 20/52/7 3/19/7 11/21/7
-f 19/53/8 13/22/8 15/24/8
-f 15/54/9 14/25/9 17/27/9
-f 21/55/10 5/28/10 18/30/10
-f 6/56/11 1/57/11 11/31/11
-f 11/31/11 1/57/11 20/58/11
-f 6/56/11 11/31/11 7/33/11
-f 13/59/11 10/60/11 12/34/11
-f 13/59/11 12/34/11 14/61/11
-f 15/39/11 19/62/11 18/63/11
-f 8/64/12 10/40/12 18/65/12
-f 12/34/11 16/36/11 14/61/11
-f 4/37/11 15/39/11 21/66/11
-f 16/67/13 3/43/13 17/68/13
-f 15/39/11 18/63/11 21/66/11
-f 10/40/12 19/42/12 18/65/12
-f 3/43/13 4/45/13 17/68/13
diff --git a/contrib/tinks/assets/models/debris0.mtl b/contrib/tinks/assets/models/debris0.mtl
deleted file mode 100644
index bb6581a557..0000000000
--- a/contrib/tinks/assets/models/debris0.mtl
+++ /dev/null
@@ -1,12 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Tank
-Ns 178.431373
-Ka 0.000000 0.000000 0.000000
-Kd 0.400000 0.400000 0.400000
-Ks 0.287480 0.287480 0.287480
-Ni 1.000000
-d 1.000000
-illum 2
-map_Kd textures/tank.jpg
diff --git a/contrib/tinks/assets/models/debris0.obj b/contrib/tinks/assets/models/debris0.obj
deleted file mode 100644
index f3359b5edc..0000000000
--- a/contrib/tinks/assets/models/debris0.obj
+++ /dev/null
@@ -1,972 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib debris0.mtl
-o TurretGood
-v 0.470893 0.073518 -0.073744
-v 0.692344 0.207572 0.384128
-v 0.287519 -0.077312 0.729652
-v 0.054565 -0.269350 0.246712
-v -0.201806 -0.395096 -0.246076
-v 0.239754 -0.086354 -0.518349
-v -0.516324 1.346860 0.006630
-v -0.275497 1.529460 0.498690
-v 0.143914 1.483716 0.258498
-v -0.083027 1.345970 -0.210377
-v -0.319727 1.182612 -0.666017
-v -0.772206 1.206882 -0.491762
-v 0.323040 1.217346 0.319448
-v -0.035342 1.123394 0.723478
-v -0.187906 0.885521 -0.699393
-v -0.689399 0.698628 -0.580730
-v -0.351617 0.880568 0.075896
-v 0.095348 0.999402 -0.186959
-v 0.117652 0.747751 0.813809
-v -0.233825 0.547092 0.125432
-v -0.569440 0.301531 -0.556274
-v 0.473114 0.832446 0.392414
-v 0.352216 0.892719 0.488213
-v 0.130842 0.815826 0.760577
-v -0.216113 0.523627 -0.645052
-v -0.054729 0.489648 -0.660120
-v -0.538190 0.381336 -0.573491
-v 0.258644 1.156873 0.449805
-v -0.310200 0.787447 -0.684488
-v 0.034042 1.096085 0.722679
-v -0.638561 0.659275 -0.618512
-v 0.097972 1.117002 0.704905
-v 0.297393 1.161294 0.491456
-v -0.590219 0.670068 -0.667370
-v -0.317645 0.761869 -0.734949
-v 0.187576 0.866312 0.743936
-v -0.502329 0.418265 -0.631757
-v 0.388277 0.907335 0.522970
-v -0.222610 0.510606 -0.695156
-v 0.528056 0.855317 0.357871
-v 0.362008 1.228773 0.296643
-v -0.000126 0.512299 -0.695339
-v -0.149277 0.896728 -0.722874
-v 0.209858 0.685784 -0.142243
-v 0.125551 1.008434 -0.205047
-v 0.256035 0.706259 -0.172069
-v 0.497021 0.081466 -0.089435
-v 0.727238 0.217916 0.363720
-v 0.274309 -0.076231 -0.539435
-v 0.582729 0.520009 0.388271
-v 0.211389 0.340937 0.789285
-v -0.394427 -0.052500 -0.418730
-v 0.092513 0.201647 -0.589235
-v -0.089630 0.138871 0.186072
-v 0.627646 0.536616 0.360795
-v 0.137091 0.218034 -0.617386
-v 0.340376 0.379651 -0.107994
-v 0.376527 0.393862 -0.130752
-v -0.245052 1.324655 -0.122180
-v -0.240018 1.329151 -0.103890
-v -0.115058 1.367233 -0.121745
-v -0.133021 1.351193 -0.187007
-v -0.173789 1.329091 -0.238857
-v -0.256478 1.318461 -0.136712
-v -0.252740 1.427072 -0.231174
-v -0.278605 1.345921 -0.134559
-v -0.262145 1.356611 -0.101737
-v -0.194009 1.465213 -0.114063
-v -0.307779 1.484245 -0.063206
-v -0.294030 1.361945 -0.087483
-v -0.366510 1.446104 -0.180317
-v -0.310490 1.351255 -0.120305
-v -0.448457 1.375037 -0.116076
-v -0.333457 1.331338 -0.102301
-v -0.389726 1.413178 0.001036
-v -0.316997 1.342028 -0.069479
-v -0.391844 1.293644 0.041029
-v -0.317590 1.308527 -0.058270
-v -0.432612 1.271541 -0.010821
-v -0.329016 1.302332 -0.072802
-v -0.450575 1.255502 -0.076083
-v -0.334051 1.297837 -0.091092
-v -0.328373 1.338594 -0.084934
-v -0.303515 1.360151 -0.104422
-v -0.269002 1.354379 -0.119850
-v -0.330018 1.278747 -0.193924
-v -0.385950 1.264410 -0.157437
-v -0.385073 1.313923 -0.174002
-v -0.430583 1.254064 -0.120953
-v -0.428962 1.345552 -0.151562
-v -0.349561 1.314547 0.044164
-v -0.347940 1.406035 0.013554
-v -0.295611 1.330944 0.026257
-v -0.294734 1.380456 0.009692
-v -0.236407 1.347405 -0.003707
-v -0.260790 1.409893 -0.016918
-v -0.285221 1.460427 -0.035614
-v -0.366243 1.399944 -0.200730
-v -0.351129 1.343360 -0.200612
-v -0.304004 1.335477 -0.221678
-v -0.279167 1.385378 -0.239655
-v -0.198145 1.445861 -0.074539
-v -0.213665 1.402010 -0.037984
-v -0.180963 1.361425 -0.041166
-v -0.137718 1.370869 -0.080419
-v -0.218740 1.310387 -0.245535
-v -0.271302 1.294892 -0.224860
-vt 0.433371 0.806080
-vt 0.424622 0.869117
-vt 0.509902 0.922464
-vt 0.545851 0.806258
-vt 0.509959 0.690350
-vt 0.424693 0.743434
-vt 0.113790 0.805764
-vt 0.154589 0.936713
-vt 0.226463 0.884956
-vt 0.215608 0.805892
-vt 0.226652 0.726961
-vt 0.154952 0.674936
-vt 0.273567 0.889914
-vt 0.262430 0.987916
-vt 0.273698 0.722205
-vt 0.263070 0.624063
-vt 0.964354 0.742104
-vt 0.933621 0.646860
-vt 0.823034 0.646233
-vt 0.818713 0.741766
-vt 0.712842 0.636874
-vt 0.673636 0.728953
-vt 0.272324 0.805929
-vt 0.968115 0.821594
-vt 0.815622 0.810087
-vt 0.662714 0.807780
-vt 0.345541 1.000219
-vt 0.340573 0.902891
-vt 0.327537 0.923885
-vt 0.333952 0.988220
-vt 0.327957 0.688454
-vt 0.340944 0.709543
-vt 0.346258 0.612151
-vt 0.334621 0.624095
-vt 0.279125 0.915836
-vt 0.279401 0.696278
-vt 0.273806 0.979377
-vt 0.274408 0.632658
-vt 0.280636 0.967275
-vt 0.287673 0.924288
-vt 0.281180 0.644799
-vt 0.288004 0.687853
-vt 0.325261 0.975086
-vt 0.325876 0.637191
-vt 0.319422 0.931799
-vt 0.319860 0.680484
-vt 0.339491 0.893399
-vt 0.283073 0.882461
-vt 0.339823 0.719042
-vt 0.283161 0.729714
-vt 0.604639 0.655553
-vt 0.605846 0.593879
-vt 0.597852 0.593549
-vt 0.594009 0.654003
-vt 0.286541 0.806871
-vt 0.286457 0.804691
-vt 0.422362 0.806774
-vt 0.418935 0.865660
-vt 0.422413 0.805169
-vt 0.419038 0.746861
-vt 0.331541 0.809010
-vt 0.331303 0.803334
-vt 0.387115 0.891807
-vt 0.435622 0.977650
-vt 0.436094 0.635206
-vt 0.387479 0.720839
-vt 0.917112 0.975485
-vt 0.946527 0.898717
-vt 0.811839 0.893722
-vt 0.808056 0.977357
-vt 0.677251 0.886536
-vt 0.699615 0.965647
-vt 0.383817 0.884107
-vt 0.384186 0.728515
-vt 0.597093 0.777829
-vt 0.599721 0.716621
-vt 0.591524 0.715735
-vt 0.589038 0.777465
-vt 0.377020 0.809715
-vt 0.376913 0.803939
-vt 0.167670 0.807799
-vt 0.167670 0.807436
-vt 0.168033 0.807436
-vt 0.168033 0.807799
-usemtl Tank
-s off
-f 1/1 2/2 3/3 4/4
-f 1/1 4/4 5/5 6/6
-f 7/7 8/8 9/9 10/10
-f 11/11 12/12 7/7 10/10
-f 13/13 9/9 8/8 14/14
-f 12/12 11/11 15/15 16/16
-f 14/17 8/18 7/19 17/20
-f 7/19 12/21 16/22 17/20
-f 9/9 13/13 18/23 10/10
-f 18/23 15/15 11/11 10/10
-f 19/24 14/17 17/20 20/25
-f 17/20 16/22 21/26 20/25
-f 19/27 22/28 23/29 24/30
-f 25/31 26/32 21/33 27/34
-f 22/28 13/13 28/35 23/29
-f 29/36 15/15 26/32 25/31
-f 14/14 19/27 24/30 30/37
-f 27/34 21/33 16/16 31/38
-f 13/13 14/14 30/37 28/35
-f 31/38 16/16 15/15 29/36
-f 28/35 30/37 32/39 33/40
-f 34/41 31/38 29/36 35/42
-f 30/37 24/30 36/43 32/39
-f 37/44 27/34 31/38 34/41
-f 23/29 28/35 33/40 38/45
-f 35/42 29/36 25/31 39/46
-f 24/30 23/29 38/45 36/43
-f 39/46 25/31 27/34 37/44
-f 38/45 33/40 32/39 36/43
-f 34/41 35/42 39/46 37/44
-f 13/13 22/28 40/47 41/48
-f 42/49 26/32 15/15 43/50
-f 44/51 18/52 45/53 46/54
-f 18/23 13/13 41/48 45/55
-f 43/50 15/15 18/23 45/56
-f 2/2 1/1 47/57 48/58
-f 47/59 1/1 6/6 49/60
-f 41/48 40/47 46/61 45/55
-f 46/62 42/49 43/50 45/56
-f 2/2 50/63 51/64 3/3
-f 52/65 53/66 6/6 5/5
-f 50/63 22/28 19/27 51/64
-f 21/33 26/32 53/66 52/65
-f 3/67 51/68 54/69 4/70
-f 54/69 52/71 5/72 4/70
-f 51/68 19/24 20/25 54/69
-f 20/25 21/26 52/71 54/69
-f 22/28 50/63 55/73 40/47
-f 56/74 53/66 26/32 42/49
-f 50/63 2/2 48/58 55/73
-f 49/60 6/6 53/66 56/74
-f 1/75 57/76 58/77 47/78
-f 57/76 44/51 46/54 58/77
-f 47/57 58/79 55/73 48/58
-f 56/74 58/80 47/59 49/60
-f 58/79 46/61 40/47 55/73
-f 42/49 46/62 58/80 56/74
-f 59/81 60/82 61/83 62/84
-f 62/81 63/82 64/83 59/84
-f 63/81 65/82 66/83 64/84
-f 60/81 67/82 68/83 61/84
-f 69/81 68/82 67/83 70/84
-f 65/81 71/82 72/83 66/84
-f 71/81 73/82 74/83 72/84
-f 75/81 69/82 70/83 76/84
-f 77/81 75/82 76/83 78/84
-f 79/81 77/82 78/83 80/84
-f 81/81 79/82 80/83 82/84
-f 73/81 81/82 82/83 74/84
-s 1
-f 74/81 82/82 80/83 83/84
-f 83/81 80/82 78/83 76/84
-f 84/81 83/82 76/83 70/84
-f 72/81 74/82 83/83 84/84
-f 66/81 72/82 84/83 85/84
-f 85/81 84/82 70/83 67/84
-f 67/81 60/82 59/83 85/84
-f 64/81 66/82 85/83 59/84
-f 86/81 87/82 88/83
-f 88/81 87/82 89/83 90/84
-f 90/81 89/82 81/83 73/84
-f 75/81 77/82 91/83 92/84
-f 92/81 91/82 93/83 94/84
-f 94/81 93/82 95/83
-f 96/81 94/82 95/83
-f 97/81 92/82 94/83 96/84
-f 69/81 75/82 92/83 97/84
-f 98/81 90/82 73/83 71/84
-f 99/81 88/82 90/83 98/84
-f 86/81 88/82 99/83
-f 86/81 99/82 100/83
-f 100/81 99/82 98/83 101/84
-f 101/81 98/82 71/83 65/84
-f 68/81 69/82 97/83 102/84
-f 102/81 97/82 96/83 103/84
-f 103/81 96/82 95/83
-f 104/81 103/82 95/83
-f 105/81 102/82 103/83 104/84
-f 61/81 68/82 102/83 105/84
-f 106/81 101/82 65/83 63/84
-f 107/81 100/82 101/83 106/84
-f 86/81 100/82 107/83
-o GunGood
-v -0.445734 1.648296 -0.153553
-v -0.464936 1.639994 -0.163779
-v -0.473456 1.641217 -0.135737
-v -0.463693 1.645438 -0.130538
-v -0.432087 1.655694 -0.136198
-v -0.456754 1.649200 -0.121713
-v -0.426075 1.661063 -0.114353
-v -0.453696 1.651930 -0.110606
-v -0.428611 1.663585 -0.091345
-v -0.454986 1.653212 -0.098906
-v -0.439310 1.662876 -0.070675
-v -0.460426 1.652852 -0.088396
-v -0.456542 1.659044 -0.055493
-v -0.469188 1.650903 -0.080676
-v -0.477686 1.652673 -0.048107
-v -0.479939 1.647664 -0.076921
-v -0.499521 1.644732 -0.049643
-v -0.491042 1.643626 -0.077702
-v -0.518724 1.636430 -0.059867
-v -0.500806 1.639405 -0.082901
-v -0.532370 1.629032 -0.077223
-v -0.507744 1.635643 -0.091726
-v -0.538383 1.623663 -0.099068
-v -0.510802 1.632913 -0.102834
-v -0.535846 1.621141 -0.122077
-v -0.509512 1.631631 -0.114533
-v -0.525147 1.621850 -0.142746
-v -0.504072 1.631991 -0.125042
-v -0.507914 1.625682 -0.157929
-v -0.495309 1.633940 -0.132763
-v -0.486771 1.632053 -0.165315
-v -0.484559 1.637179 -0.136518
-v -0.775558 2.533129 -0.261935
-v -0.784374 2.529318 -0.266628
-v -0.782928 2.529119 -0.271404
-v -0.772505 2.533625 -0.265854
-v -0.769293 2.536526 -0.253967
-v -0.765098 2.537641 -0.256434
-v -0.766533 2.538990 -0.243938
-v -0.761835 2.540555 -0.244577
-v -0.767698 2.540148 -0.233374
-v -0.763211 2.541924 -0.232089
-v -0.772609 2.539823 -0.223885
-v -0.769018 2.541539 -0.220870
-v -0.780521 2.538064 -0.216914
-v -0.778372 2.539459 -0.212629
-v -0.790228 2.535139 -0.213524
-v -0.789848 2.536001 -0.208620
-v -0.800253 2.531493 -0.214229
-v -0.801700 2.531691 -0.209454
-v -0.809068 2.527681 -0.218923
-v -0.812122 2.527185 -0.215004
-v -0.815333 2.524285 -0.226891
-v -0.819529 2.523170 -0.224424
-v -0.818094 2.521820 -0.236920
-v -0.822792 2.520256 -0.236281
-v -0.816930 2.520662 -0.247483
-v -0.821416 2.518887 -0.248769
-v -0.812018 2.520988 -0.256973
-v -0.815609 2.519271 -0.259988
-v -0.804106 2.522747 -0.263943
-v -0.806255 2.521351 -0.268229
-v -0.794399 2.525672 -0.267334
-v -0.794779 2.524809 -0.272238
-v -0.798790 2.608039 -0.276908
-v -0.809213 2.603533 -0.282458
-v -0.807929 2.603357 -0.286696
-v -0.796080 2.608479 -0.280387
-v -0.791383 2.612055 -0.267488
-v -0.787660 2.613045 -0.269677
-v -0.788119 2.614969 -0.255631
-v -0.783949 2.616357 -0.256198
-v -0.789496 2.616338 -0.243143
-v -0.785514 2.617914 -0.242001
-v -0.795303 2.615953 -0.231924
-v -0.792116 2.617476 -0.229248
-v -0.804657 2.613873 -0.223683
-v -0.802749 2.615112 -0.219879
-v -0.816133 2.610415 -0.219674
-v -0.815796 2.611181 -0.215322
-v -0.827985 2.606105 -0.220508
-v -0.829269 2.606281 -0.216270
-v -0.838407 2.601599 -0.226058
-v -0.841117 2.601158 -0.222579
-v -0.845814 2.597583 -0.235478
-v -0.849538 2.596593 -0.233288
-v -0.849077 2.594669 -0.247335
-v -0.853248 2.593280 -0.246767
-v -0.847701 2.593300 -0.259823
-v -0.851683 2.591724 -0.260964
-v -0.841894 2.593685 -0.271042
-v -0.845081 2.592162 -0.273718
-v -0.832540 2.595765 -0.279283
-v -0.834447 2.594526 -0.283086
-v -0.821064 2.599223 -0.283291
-v -0.821401 2.598457 -0.287644
-v -0.804181 2.631415 -0.283794
-v -0.816030 2.626293 -0.290103
-v -0.818007 2.626564 -0.283577
-v -0.808354 2.630737 -0.278437
-v -0.795761 2.635980 -0.273084
-v -0.801495 2.634456 -0.269713
-v -0.792050 2.639293 -0.259605
-v -0.798472 2.637155 -0.258731
-v -0.793616 2.640849 -0.245408
-v -0.799747 2.638422 -0.247166
-v -0.800217 2.640412 -0.232655
-v -0.805125 2.638066 -0.236775
-v -0.810851 2.638047 -0.223286
-v -0.813788 2.636140 -0.229143
-v -0.823897 2.634116 -0.218729
-v -0.824416 2.632937 -0.225430
-v -0.837370 2.629216 -0.219677
-v -0.835393 2.628945 -0.226203
-v -0.849218 2.624094 -0.225986
-v -0.845045 2.624773 -0.231342
-v -0.857639 2.619529 -0.236695
-v -0.851905 2.621053 -0.240067
-v -0.861349 2.616216 -0.250174
-v -0.854928 2.618354 -0.251048
-v -0.859784 2.614660 -0.264371
-v -0.853653 2.617086 -0.262614
-v -0.853182 2.615097 -0.277125
-v -0.848275 2.617443 -0.273004
-v -0.842549 2.617462 -0.286493
-v -0.839612 2.619369 -0.280636
-v -0.829503 2.621393 -0.291051
-v -0.828983 2.622572 -0.284349
-v -0.862394 2.718464 -0.295205
-v -0.852648 2.722008 -0.294519
-v -0.851673 2.721875 -0.297735
-v -0.862650 2.717883 -0.298507
-v -0.844078 2.725713 -0.289955
-v -0.842021 2.726048 -0.292596
-v -0.837987 2.729015 -0.282209
-v -0.835161 2.729767 -0.283871
-v -0.835303 2.731411 -0.272459
-v -0.832138 2.732466 -0.272889
-v -0.836435 2.732538 -0.262189
-v -0.833413 2.733733 -0.261324
-v -0.841211 2.732221 -0.252964
-v -0.838791 2.733377 -0.250933
-v -0.848902 2.730511 -0.246187
-v -0.847454 2.731451 -0.243301
-v -0.858339 2.727667 -0.242891
-v -0.858083 2.728248 -0.239588
-v -0.868084 2.724123 -0.243577
-v -0.869059 2.724256 -0.240361
-v -0.876655 2.720417 -0.248141
-v -0.878712 2.720083 -0.245500
-v -0.882746 2.717115 -0.255887
-v -0.885572 2.716364 -0.254225
-v -0.885430 2.714719 -0.265637
-v -0.888594 2.713665 -0.265206
-v -0.884297 2.713593 -0.275906
-v -0.887319 2.712398 -0.276772
-v -0.879522 2.713910 -0.285132
-v -0.881941 2.712754 -0.287162
-v -0.871831 2.715620 -0.291908
-v -0.873278 2.714680 -0.294794
-v -0.421987 1.533305 -0.166296
-v -0.324868 1.258357 -0.125454
-v -0.353687 1.247876 -0.127482
-v -0.450806 1.522824 -0.168324
-v -0.381593 1.239467 -0.117733
-v -0.478712 1.514415 -0.158576
-v -0.404338 1.234409 -0.097694
-v -0.501457 1.509358 -0.138536
-v -0.418460 1.233474 -0.070414
-v -0.515579 1.508422 -0.111256
-v -0.421807 1.236803 -0.040045
-v -0.518926 1.511751 -0.080888
-v -0.413871 1.243889 -0.011213
-v -0.510990 1.518837 -0.052056
-v -0.395859 1.253654 0.011694
-v -0.492979 1.528602 -0.029149
-v -0.370515 1.264611 0.025189
-v -0.467634 1.539559 -0.015654
-v -0.341696 1.275091 0.027217
-v -0.438816 1.550039 -0.013626
-v -0.313790 1.283500 0.017468
-v -0.410909 1.558449 -0.023374
-v -0.291045 1.288558 -0.002571
-v -0.388164 1.563506 -0.043414
-v -0.276924 1.289493 -0.029852
-v -0.374043 1.564442 -0.070694
-v -0.273577 1.286165 -0.060220
-v -0.370696 1.561113 -0.101062
-v -0.281512 1.279079 -0.089052
-v -0.378631 1.554027 -0.129894
-v -0.299524 1.269314 -0.111959
-v -0.396643 1.544262 -0.152802
-v -0.436550 1.559633 -0.151841
-v -0.417348 1.567934 -0.141616
-v -0.403701 1.575333 -0.124261
-v -0.397689 1.580701 -0.102416
-v -0.400225 1.583223 -0.079407
-v -0.410924 1.582515 -0.058738
-v -0.428157 1.578683 -0.043555
-v -0.449300 1.572312 -0.036169
-v -0.471135 1.564371 -0.037706
-v -0.490338 1.556069 -0.047930
-v -0.503984 1.548671 -0.065286
-v -0.509997 1.543302 -0.087131
-v -0.507461 1.540780 -0.110140
-v -0.496762 1.541489 -0.130809
-v -0.479528 1.545321 -0.145992
-v -0.458385 1.551692 -0.153377
-v -0.814235 2.641227 -0.277405
-v -0.822805 2.637522 -0.281969
-v -0.808144 2.644529 -0.269659
-v -0.805460 2.646925 -0.259909
-v -0.806592 2.648051 -0.249639
-v -0.811368 2.647735 -0.240414
-v -0.819059 2.646025 -0.233637
-v -0.828496 2.643181 -0.230341
-v -0.838242 2.639637 -0.231027
-v -0.846813 2.635931 -0.235590
-v -0.852903 2.632629 -0.243337
-v -0.855587 2.630233 -0.253087
-v -0.854455 2.629107 -0.263356
-v -0.849680 2.629424 -0.272582
-v -0.841988 2.631134 -0.279358
-v -0.832551 2.633977 -0.282655
-vt 0.260991 0.501928
-vt 0.261641 0.508683
-vt 0.248339 0.510313
-vt 0.247924 0.503841
-vt 0.260086 0.495305
-vt 0.247449 0.497411
-vt 0.258992 0.488571
-vt 0.246040 0.491186
-vt 0.257446 0.481940
-vt 0.245548 0.485012
-vt 0.255462 0.475074
-vt 0.243979 0.479425
-vt 0.252332 0.467412
-vt 0.242318 0.474202
-vt 0.256867 0.569755
-vt 0.253996 0.576889
-vt 0.244661 0.570621
-vt 0.246005 0.565471
-vt 0.258847 0.562975
-vt 0.246864 0.559852
-vt 0.260156 0.556261
-vt 0.248200 0.554214
-vt 0.261175 0.549636
-vt 0.248423 0.548280
-vt 0.261754 0.542881
-vt 0.249068 0.542271
-vt 0.262200 0.536133
-vt 0.248505 0.536009
-vt 0.262332 0.529213
-vt 0.248753 0.529659
-vt 0.262290 0.522347
-vt 0.248785 0.523246
-vt 0.262066 0.515500
-vt 0.248637 0.516790
-vt 0.198081 0.505854
-vt 0.198124 0.511772
-vt 0.195630 0.511881
-vt 0.195417 0.505930
-vt 0.197665 0.500143
-vt 0.195394 0.500156
-vt 0.197993 0.494478
-vt 0.195373 0.494420
-vt 0.198001 0.488733
-vt 0.195583 0.488605
-vt 0.198166 0.483243
-vt 0.195930 0.483014
-vt 0.198935 0.478051
-vt 0.196639 0.477263
-vt 0.199776 0.565102
-vt 0.200514 0.570670
-vt 0.198077 0.571455
-vt 0.197428 0.565317
-vt 0.199662 0.559415
-vt 0.197147 0.559517
-vt 0.199748 0.553435
-vt 0.196995 0.553480
-vt 0.199419 0.547398
-vt 0.196995 0.547457
-vt 0.199466 0.541325
-vt 0.196683 0.541429
-vt 0.199041 0.535228
-vt 0.196484 0.535303
-vt 0.198653 0.529370
-vt 0.196320 0.529448
-vt 0.198693 0.523426
-vt 0.196005 0.523527
-vt 0.198195 0.517537
-vt 0.195889 0.517634
-vt 0.157570 0.505507
-vt 0.157789 0.511787
-vt 0.155594 0.511808
-vt 0.155544 0.505519
-vt 0.157405 0.499394
-vt 0.155514 0.499400
-vt 0.157610 0.493097
-vt 0.155393 0.493101
-vt 0.157517 0.486644
-vt 0.155409 0.486608
-vt 0.157600 0.480235
-vt 0.155535 0.480100
-vt 0.158289 0.473889
-vt 0.156257 0.473199
-vt 0.158575 0.568589
-vt 0.159268 0.575017
-vt 0.157229 0.575675
-vt 0.156459 0.568757
-vt 0.158485 0.561982
-vt 0.156188 0.562038
-vt 0.158202 0.555452
-vt 0.156113 0.555476
-vt 0.157971 0.549209
-vt 0.156081 0.549233
-vt 0.158024 0.543023
-vt 0.155976 0.543052
-vt 0.158113 0.536664
-vt 0.155897 0.536693
-vt 0.157878 0.530325
-vt 0.155843 0.530347
-vt 0.157655 0.524198
-vt 0.155796 0.524222
-vt 0.157705 0.518082
-vt 0.155679 0.518111
-vt 0.145192 0.505446
-vt 0.145357 0.511543
-vt 0.142141 0.511627
-vt 0.142197 0.505521
-vt 0.145097 0.499325
-vt 0.141809 0.499397
-vt 0.144950 0.492940
-vt 0.141386 0.493056
-vt 0.144617 0.486520
-vt 0.141445 0.486662
-vt 0.144326 0.480001
-vt 0.140842 0.480334
-vt 0.143508 0.472889
-vt 0.139891 0.474051
-vt 0.145084 0.568307
-vt 0.144180 0.575729
-vt 0.140490 0.574388
-vt 0.141473 0.568013
-vt 0.145365 0.561590
-vt 0.141965 0.561499
-vt 0.145450 0.555227
-vt 0.142335 0.555182
-vt 0.145626 0.548913
-vt 0.142142 0.548878
-vt 0.145563 0.542683
-vt 0.142519 0.542646
-vt 0.145602 0.536546
-vt 0.142373 0.536518
-vt 0.145545 0.530327
-vt 0.142235 0.530329
-vt 0.145510 0.524035
-vt 0.141965 0.524072
-vt 0.145421 0.517748
-vt 0.142115 0.517808
-vt 0.095760 0.518488
-vt 0.095539 0.512813
-vt 0.097353 0.512758
-vt 0.097472 0.518475
-vt 0.095515 0.507243
-vt 0.097070 0.507181
-vt 0.095158 0.501794
-vt 0.096842 0.501711
-vt 0.094679 0.496149
-vt 0.096508 0.496015
-vt 0.094323 0.490502
-vt 0.096009 0.490323
-vt 0.093766 0.485061
-vt 0.095371 0.484799
-vt 0.092760 0.479764
-vt 0.094246 0.479143
-vt 0.093081 0.568129
-vt 0.094102 0.562743
-vt 0.095831 0.562978
-vt 0.094766 0.568796
-vt 0.094704 0.557200
-vt 0.096372 0.557325
-vt 0.095162 0.551764
-vt 0.096713 0.551854
-vt 0.095299 0.546204
-vt 0.097083 0.546288
-vt 0.095688 0.540660
-vt 0.097238 0.540718
-vt 0.095770 0.535206
-vt 0.097429 0.535259
-vt 0.095835 0.529653
-vt 0.097517 0.529687
-vt 0.095839 0.524080
-vt 0.097529 0.524093
-vt 0.298357 0.506207
-vt 0.362847 0.505457
-vt 0.362976 0.514476
-vt 0.298749 0.514185
-vt 0.362977 0.523483
-vt 0.298954 0.522206
-vt 0.362849 0.532485
-vt 0.298773 0.530149
-vt 0.362594 0.541481
-vt 0.298587 0.538062
-vt 0.362211 0.550478
-vt 0.298180 0.546075
-vt 0.361700 0.559480
-vt 0.297572 0.554211
-vt 0.361068 0.568492
-vt 0.296555 0.562421
-vt 0.360332 0.577513
-vt 0.295291 0.570683
-vt 0.359512 0.586553
-vt 0.293662 0.579098
-vt 0.358668 0.595378
-vt 0.291567 0.587987
-vt 0.291327 0.455872
-vt 0.359726 0.450783
-vt 0.360491 0.459984
-vt 0.293375 0.465052
-vt 0.361172 0.469148
-vt 0.294857 0.473659
-vt 0.361755 0.478272
-vt 0.296208 0.482030
-vt 0.362230 0.487363
-vt 0.297097 0.490270
-vt 0.362595 0.496423
-vt 0.297746 0.498276
-vt 0.288460 0.506886
-vt 0.288033 0.499142
-vt 0.286990 0.491396
-vt 0.285743 0.483561
-vt 0.284654 0.475565
-vt 0.282800 0.467652
-vt 0.280563 0.459851
-vt 0.281450 0.583881
-vt 0.283667 0.576504
-vt 0.285196 0.568706
-vt 0.286380 0.560907
-vt 0.287198 0.553126
-vt 0.288084 0.545397
-vt 0.288668 0.537698
-vt 0.289054 0.530014
-vt 0.288781 0.522317
-vt 0.288738 0.514604
-vt 0.053888 0.509039
-vt 0.053675 0.503966
-vt 0.053404 0.498893
-vt 0.053081 0.493831
-vt 0.052707 0.488783
-vt 0.052282 0.483746
-vt 0.052726 0.559753
-vt 0.053117 0.554687
-vt 0.053452 0.549623
-vt 0.053724 0.544557
-vt 0.053934 0.539492
-vt 0.054080 0.534425
-vt 0.054163 0.529353
-vt 0.054183 0.524276
-vt 0.054142 0.519196
-vt 0.054043 0.514115
-usemtl Tank
-s off
-f 108/85 109/86 110/87 111/88
-f 112/89 108/85 111/88 113/90
-f 114/91 112/89 113/90 115/92
-f 116/93 114/91 115/92 117/94
-f 118/95 116/93 117/94 119/96
-f 120/97 118/95 119/96 121/98
-f 122/99 120/100 121/101 123/102
-f 124/103 122/99 123/102 125/104
-f 126/105 124/103 125/104 127/106
-f 128/107 126/105 127/106 129/108
-f 130/109 128/107 129/108 131/110
-f 132/111 130/109 131/110 133/112
-f 134/113 132/111 133/112 135/114
-f 136/115 134/113 135/114 137/116
-f 138/117 136/115 137/116 139/118
-f 109/86 138/117 139/118 110/87
-f 140/119 141/120 142/121 143/122
-f 144/123 140/119 143/122 145/124
-f 146/125 144/123 145/124 147/126
-f 148/127 146/125 147/126 149/128
-f 150/129 148/127 149/128 151/130
-f 152/131 150/129 151/130 153/132
-f 154/133 152/134 153/135 155/136
-f 156/137 154/133 155/136 157/138
-f 158/139 156/137 157/138 159/140
-f 160/141 158/139 159/140 161/142
-f 162/143 160/141 161/142 163/144
-f 164/145 162/143 163/144 165/146
-f 166/147 164/145 165/146 167/148
-f 168/149 166/147 167/148 169/150
-f 170/151 168/149 169/150 171/152
-f 141/120 170/151 171/152 142/121
-f 172/153 173/154 174/155 175/156
-f 176/157 172/153 175/156 177/158
-f 178/159 176/157 177/158 179/160
-f 180/161 178/159 179/160 181/162
-f 182/163 180/161 181/162 183/164
-f 184/165 182/163 183/164 185/166
-f 186/167 184/168 185/169 187/170
-f 188/171 186/167 187/170 189/172
-f 190/173 188/171 189/172 191/174
-f 192/175 190/173 191/174 193/176
-f 194/177 192/175 193/176 195/178
-f 196/179 194/177 195/178 197/180
-f 198/181 196/179 197/180 199/182
-f 200/183 198/181 199/182 201/184
-f 202/185 200/183 201/184 203/186
-f 173/154 202/185 203/186 174/155
-f 204/187 205/188 206/189 207/190
-f 208/191 204/187 207/190 209/192
-f 210/193 208/191 209/192 211/194
-f 212/195 210/193 211/194 213/196
-f 214/197 212/195 213/196 215/198
-f 216/199 214/197 215/198 217/200
-f 218/201 216/202 217/203 219/204
-f 220/205 218/201 219/204 221/206
-f 222/207 220/205 221/206 223/208
-f 224/209 222/207 223/208 225/210
-f 226/211 224/209 225/210 227/212
-f 228/213 226/211 227/212 229/214
-f 230/215 228/213 229/214 231/216
-f 232/217 230/215 231/216 233/218
-f 234/219 232/217 233/218 235/220
-f 205/188 234/219 235/220 206/189
-f 236/221 237/222 238/223 239/224
-f 237/222 240/225 241/226 238/223
-f 240/225 242/227 243/228 241/226
-f 242/227 244/229 245/230 243/228
-f 244/229 246/231 247/232 245/230
-f 246/231 248/233 249/234 247/232
-f 248/233 250/235 251/236 249/234
-f 250/237 252/238 253/239 251/240
-f 252/238 254/241 255/242 253/239
-f 254/241 256/243 257/244 255/242
-f 256/243 258/245 259/246 257/244
-f 258/245 260/247 261/248 259/246
-f 260/247 262/249 263/250 261/248
-f 262/249 264/251 265/252 263/250
-f 264/251 266/253 267/254 265/252
-f 266/253 236/221 239/224 267/254
-s 1
-f 268/255 269/256 270/257 271/258
-f 271/258 270/257 272/259 273/260
-f 273/260 272/259 274/261 275/262
-f 275/262 274/261 276/263 277/264
-f 277/264 276/263 278/265 279/266
-f 279/266 278/265 280/267 281/268
-f 281/268 280/267 282/269 283/270
-f 283/270 282/269 284/271 285/272
-f 285/272 284/271 286/273 287/274
-f 287/274 286/273 288/275 289/276
-f 289/277 288/278 290/279 291/280
-f 291/280 290/279 292/281 293/282
-f 293/282 292/281 294/283 295/284
-f 295/284 294/283 296/285 297/286
-f 297/286 296/285 298/287 299/288
-f 269/256 268/255 299/288 298/287
-f 299/288 268/255 300/289 301/290
-f 297/286 299/288 301/290 302/291
-f 295/284 297/286 302/291 303/292
-f 293/282 295/284 303/292 304/293
-f 291/280 293/282 304/293 305/294
-f 289/277 291/280 305/294 306/295
-f 287/274 289/276 306/296 307/297
-f 285/272 287/274 307/297 308/298
-f 283/270 285/272 308/298 309/299
-f 281/268 283/270 309/299 310/300
-f 279/266 281/268 310/300 311/301
-f 277/264 279/266 311/301 312/302
-f 275/262 277/264 312/302 313/303
-f 273/260 275/262 313/303 314/304
-f 271/258 273/260 314/304 315/305
-f 268/255 271/258 315/305 300/289
-f 300/289 315/305 138/117 109/86
-f 315/305 314/304 136/115 138/117
-f 314/304 313/303 134/113 136/115
-f 313/303 312/302 132/111 134/113
-f 312/302 311/301 130/109 132/111
-f 311/301 310/300 128/107 130/109
-f 310/300 309/299 126/105 128/107
-f 309/299 308/298 124/103 126/105
-f 308/298 307/297 122/99 124/103
-f 307/297 306/296 120/100 122/99
-f 306/295 305/294 118/95 120/97
-f 305/294 304/293 116/93 118/95
-f 304/293 303/292 114/91 116/93
-f 303/292 302/291 112/89 114/91
-f 108/85 112/89 302/291 301/290
-f 109/86 108/85 301/290 300/289
-f 110/87 139/118 170/151 141/120
-f 139/118 137/116 168/149 170/151
-f 137/116 135/114 166/147 168/149
-f 135/114 133/112 164/145 166/147
-f 133/112 131/110 162/143 164/145
-f 131/110 129/108 160/141 162/143
-f 129/108 127/106 158/139 160/141
-f 127/106 125/104 156/137 158/139
-f 125/104 123/102 154/133 156/137
-f 123/102 121/101 152/134 154/133
-f 121/98 119/96 150/129 152/131
-f 119/96 117/94 148/127 150/129
-f 117/94 115/92 146/125 148/127
-f 115/92 113/90 144/123 146/125
-f 113/90 111/88 140/119 144/123
-f 111/88 110/87 141/120 140/119
-f 142/121 171/152 202/185 173/154
-f 171/152 169/150 200/183 202/185
-f 169/150 167/148 198/181 200/183
-f 167/148 165/146 196/179 198/181
-f 165/146 163/144 194/177 196/179
-f 163/144 161/142 192/175 194/177
-f 161/142 159/140 190/173 192/175
-f 159/140 157/138 188/171 190/173
-f 157/138 155/136 186/167 188/171
-f 155/136 153/135 184/168 186/167
-f 153/132 151/130 182/163 184/165
-f 151/130 149/128 180/161 182/163
-f 149/128 147/126 178/159 180/161
-f 147/126 145/124 176/157 178/159
-f 145/124 143/122 172/153 176/157
-f 143/122 142/121 173/154 172/153
-f 174/155 203/186 234/219 205/188
-f 203/186 201/184 232/217 234/219
-f 201/184 199/182 230/215 232/217
-f 199/182 197/180 228/213 230/215
-f 197/180 195/178 226/211 228/213
-f 195/178 193/176 224/209 226/211
-f 193/176 191/174 222/207 224/209
-f 191/174 189/172 220/205 222/207
-f 189/172 187/170 218/201 220/205
-f 187/170 185/169 216/202 218/201
-f 185/166 183/164 214/197 216/199
-f 183/164 181/162 212/195 214/197
-f 181/162 179/160 210/193 212/195
-f 179/160 177/158 208/191 210/193
-f 177/158 175/156 204/187 208/191
-f 175/156 174/155 205/188 204/187
-f 206/189 235/220 239/224 238/223
-f 235/220 233/218 267/254 239/224
-f 233/218 231/216 265/252 267/254
-f 231/216 229/214 263/250 265/252
-f 229/214 227/212 261/248 263/250
-f 227/212 225/210 259/246 261/248
-f 225/210 223/208 257/244 259/246
-f 223/208 221/206 255/242 257/244
-f 221/206 219/204 253/239 255/242
-f 219/204 217/203 251/240 253/239
-f 217/200 215/198 249/234 251/236
-f 215/198 213/196 247/232 249/234
-f 213/196 211/194 245/230 247/232
-f 211/194 209/192 243/228 245/230
-f 209/192 207/190 241/226 243/228
-f 207/190 206/189 238/223 241/226
-f 316/222 317/222 237/225 240/306
-f 318/225 316/225 240/227 242/307
-f 319/227 318/227 242/229 244/308
-f 320/229 319/229 244/231 246/309
-f 321/231 320/231 246/233 248/310
-f 322/233 321/233 248/235 250/311
-f 323/237 322/237 250/238 252/312
-f 324/238 323/238 252/241 254/313
-f 325/241 324/241 254/243 256/314
-f 326/243 325/243 256/245 258/315
-f 327/245 326/245 258/247 260/316
-f 328/247 327/247 260/249 262/317
-f 329/249 328/249 262/251 264/318
-f 330/251 329/251 264/253 266/319
-f 331/253 330/253 266/221 236/320
-f 317/221 331/221 236/222 237/321
diff --git a/contrib/tinks/assets/models/debris1.mtl b/contrib/tinks/assets/models/debris1.mtl
deleted file mode 100644
index d8e32fcd76..0000000000
--- a/contrib/tinks/assets/models/debris1.mtl
+++ /dev/null
@@ -1,22 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 2
-
-newmtl Tank_TTread.jpg
-Ns 178.431373
-Ka 0.000000 0.000000 0.000000
-Kd 0.400000 0.400000 0.400000
-Ks 0.287480 0.287480 0.287480
-Ni 1.000000
-d 1.000000
-illum 2
-map_Kd textures/TTread.jpg
-
-newmtl Treads
-Ns 178.431373
-Ka 0.000000 0.000000 0.000000
-Kd 0.400000 0.400000 0.400000
-Ks 0.287480 0.287480 0.287480
-Ni 1.000000
-d 1.000000
-illum 2
-map_Kd textures/tread.jpg
diff --git a/contrib/tinks/assets/models/debris1.obj b/contrib/tinks/assets/models/debris1.obj
deleted file mode 100644
index 8517da77b2..0000000000
--- a/contrib/tinks/assets/models/debris1.obj
+++ /dev/null
@@ -1,2196 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib debris1.mtl
-o BodyGood
-v 0.676137 2.086460 0.689834
-v -0.034145 0.742831 0.012787
-v 0.072319 0.627859 -0.331849
-v -0.023766 0.475356 -0.254939
-v 0.062015 0.703793 0.055516
-v 0.072395 0.436319 -0.212210
-v 0.168480 0.588821 -0.289120
-v -0.122632 0.394524 -0.106292
-v -0.026472 0.355486 -0.063563
-v -0.197789 0.407020 0.074263
-v -0.101628 0.367982 0.116991
-v -0.229097 0.509496 0.238345
-v -0.132936 0.470458 0.281074
-v -0.208168 0.674494 0.341989
-v -0.112007 0.635456 0.384718
-v -0.140610 0.857803 0.357424
-v -0.044450 0.818765 0.400153
-v -0.044525 1.010305 0.280514
-v 0.051636 0.971267 0.323242
-v 0.054342 1.091138 0.131866
-v 0.150502 1.052101 0.174596
-v 0.129498 1.078642 -0.048688
-v 0.225658 1.039605 -0.005959
-v 0.160806 0.976166 -0.212770
-v 0.256967 0.937129 -0.170041
-v 0.139877 0.811168 -0.316414
-v 0.236038 0.772131 -0.273685
-v 0.615628 1.784828 0.325890
-v 0.564548 1.646229 0.314220
-v 0.304527 1.751787 0.198680
-v 0.631452 1.909582 0.404255
-v 0.355607 1.890386 0.210350
-v 0.607780 1.987063 0.528316
-v 0.371431 2.015141 0.288715
-v 0.561689 2.034749 0.675609
-v 0.347759 2.092622 0.412776
-v 0.476203 1.935394 0.777224
-v 0.301669 2.140307 0.560069
-v 0.403553 1.820088 0.835375
-v 0.216182 2.040953 0.661684
-v 0.352473 1.681489 0.823705
-v 0.143533 1.925647 0.719835
-v 0.336649 1.556735 0.745340
-v 0.092452 1.787048 0.708165
-v 0.360321 1.479254 0.621278
-v 0.076628 1.662294 0.629800
-v 0.417146 1.469806 0.484762
-v 0.100300 1.584813 0.505739
-v 0.491898 1.530923 0.372371
-v 0.157125 1.575365 0.369223
-v 0.231878 1.636482 0.256832
-v 0.470412 1.656553 0.535504
-v 0.210391 1.762111 0.419964
-v 0.155251 0.684692 0.042107
-v 0.117415 0.690983 0.133004
-v 0.131776 0.675473 0.086514
-v 0.072898 0.189032 -0.225400
-v 0.049423 0.179814 -0.180992
-v 0.096373 0.198251 -0.269807
-v 0.026042 -0.311692 -0.577419
-v -0.020908 -0.330129 -0.488603
-v 0.002567 -0.320911 -0.533011
-v -0.053160 -0.804775 -0.849662
-v 0.370891 1.700973 0.485300
-v 0.347416 1.691755 0.529707
-v 0.394366 1.710192 0.440892
-v 0.208093 -1.453383 -1.499687
-v 0.269356 -1.270694 -1.470652
-v 0.227836 -1.271009 -1.377500
-v 0.181102 -1.407143 -1.396700
-v 0.076463 -1.558229 -1.299246
-v 0.075012 -1.631474 -1.362898
-v -0.020968 -1.585857 -1.105220
-v -0.257009 -1.496686 -1.510431
-v -0.383512 -1.536799 -1.262383
-v -0.352988 -1.451069 -1.252753
-v -0.123929 -1.318595 -1.647220
-v -0.255558 -1.423442 -1.446778
-v -0.150919 -1.272355 -1.544233
-v -0.104185 -1.136221 -1.525033
-v -0.435973 -0.967530 -0.624231
-v -0.395917 -0.899295 -0.652034
-v -0.051491 -1.671587 -1.114851
-v -0.063897 -1.034083 -0.504501
-v -0.062665 -1.135906 -1.618185
-v -0.035158 -0.596004 -1.186830
-v 0.316223 -0.762431 -1.111771
-v 0.296864 -0.730792 -1.039297
-v 0.475035 0.485849 -0.328733
-v 0.447761 0.454390 -0.296093
-v -0.103952 -1.102318 -0.476698
-v 0.073521 0.176721 0.292447
-v -0.284147 0.295552 0.188054
-v -0.258500 0.311509 0.144914
-v -0.015799 -0.627643 -1.259304
-v 0.115739 0.589178 -0.443626
-v -0.171511 1.100976 0.670413
-v -0.147240 1.099008 0.613994
-v 0.160510 0.966188 0.817946
-v 0.047874 0.160764 0.335587
-v 0.233662 1.443184 0.071220
-v 0.143014 0.620637 -0.476266
-v 0.565684 1.308397 0.218753
-v 0.520158 1.221492 0.241814
-v 0.732656 1.892652 0.376768
-v 0.685553 1.825469 0.421394
-v 0.673264 2.087626 0.688558
-v 0.645769 2.034775 0.702151
-v 0.307339 1.451926 0.931287
-v 0.184781 0.964220 0.761527
-v 0.510051 1.956681 0.936236
-v 0.326011 1.441948 0.880151
-v 0.400635 2.027440 0.229235
-v 0.188135 1.356280 0.094281
-v 0.341244 2.222414 0.541025
-v 0.353532 1.960257 0.273861
-v -0.024683 1.586714 0.783754
-v -0.006011 1.576736 0.732617
-v 0.178030 2.091470 0.788703
-v 0.185653 2.048647 0.732425
-v 0.517674 1.913859 0.879958
-v 0.313749 2.169564 0.554618
-v 0.362547 2.149753 0.576301
-v 0.234451 2.028837 0.754108
-v 0.468876 1.933669 0.858275
-v 0.596971 2.054586 0.680467
-v 0.042787 1.556926 0.754300
-v -0.098442 1.079198 0.635677
-v 0.402330 1.940447 0.295544
-v 0.236934 1.336469 0.115964
-v 0.277213 1.461759 0.858467
-v 0.135983 0.984031 0.739843
-v 0.636755 1.845279 0.399711
-v 0.471360 1.241302 0.220131
-v 0.398963 0.474200 -0.317777
-v 0.164537 0.569368 -0.421943
-v 0.024723 0.196531 0.270764
-v -0.209702 0.291699 0.166598
-v 0.013640 -0.615814 -1.165147
-v -0.347120 -0.919105 -0.630351
-v -0.112695 -1.014273 -0.526185
-v 0.248066 -0.710981 -1.060981
-v -0.055387 -1.156031 -1.503350
-v -0.069766 -1.566047 -1.126904
-v -0.304190 -1.470879 -1.231070
-v -0.102121 -1.292166 -1.522550
-v -0.206760 -1.443252 -1.425095
-v 0.027665 -1.538419 -1.320929
-v 0.132304 -1.387333 -1.418383
-v 0.179038 -1.251199 -1.399183
-v 0.347377 0.202781 -0.514537
-v 0.279819 0.019472 -0.529972
-v 0.094439 0.094729 -0.612345
-v 0.368306 0.367779 -0.410893
-v 0.161997 0.278038 -0.596910
-v 0.336998 0.470255 -0.246811
-v 0.182926 0.443036 -0.493266
-v 0.261842 0.482751 -0.066256
-v 0.151618 0.545513 -0.329184
-v 0.162975 0.401918 0.082391
-v 0.076462 0.558008 -0.148630
-v 0.066890 0.249416 0.159301
-v -0.022404 0.477176 0.000017
-v -0.000668 0.066107 0.143866
-v -0.118490 0.324673 0.076928
-v -0.021597 -0.098891 0.040222
-v -0.186048 0.141364 0.061493
-v 0.009712 -0.201368 -0.123860
-v -0.206977 -0.023634 -0.042151
-v 0.084868 -0.213863 -0.304414
-v -0.175669 -0.126110 -0.206233
-v 0.183734 -0.133030 -0.453062
-v -0.100512 -0.138606 -0.386787
-v -0.001646 -0.057773 -0.535435
-v 0.173355 0.134444 -0.185335
-v -0.012025 0.209701 -0.267709
-v -0.161200 -0.259609 -0.603055
-v -0.054735 -0.374581 -0.947691
-v -0.150821 -0.527083 -0.870781
-v -0.063767 -0.299163 -0.559761
-v -0.053388 -0.566637 -0.827487
-v 0.042697 -0.414135 -0.904397
-v -0.249687 -0.607916 -0.722134
-v -0.152254 -0.647470 -0.678840
-v -0.324843 -0.595420 -0.541579
-v -0.227410 -0.634974 -0.498286
-v -0.356151 -0.492944 -0.377497
-v -0.258718 -0.532498 -0.334203
-v -0.335222 -0.327945 -0.273853
-v -0.237790 -0.367500 -0.230559
-v -0.267664 -0.144637 -0.258418
-v -0.170231 -0.184191 -0.215124
-v -0.171579 0.007866 -0.335329
-v -0.074147 -0.031689 -0.292034
-v -0.072713 0.088698 -0.483976
-v 0.024720 0.049144 -0.440681
-v 0.002443 0.076202 -0.664530
-v 0.099876 0.036648 -0.621236
-v 0.033752 -0.026274 -0.828613
-v 0.131185 -0.065827 -0.785318
-v 0.012823 -0.191272 -0.932256
-v 0.110256 -0.230825 -0.888962
-v 0.173393 -0.765723 -1.130233
-v 0.109574 -0.938886 -1.144813
-v -0.065546 -0.867795 -1.222628
-v 0.193163 -0.609857 -1.032325
-v -0.001727 -0.694631 -1.208047
-v 0.163588 -0.513053 -0.877324
-v 0.018043 -0.538766 -1.110140
-v 0.092591 -0.501249 -0.706763
-v -0.011532 -0.441962 -0.955139
-v -0.000803 -0.577608 -0.566343
-v -0.082528 -0.430157 -0.784578
-v -0.091570 -0.721670 -0.493690
-v -0.175923 -0.506516 -0.644158
-v -0.155389 -0.894833 -0.508271
-v -0.266690 -0.650578 -0.571504
-v -0.175159 -1.050699 -0.606179
-v -0.330509 -0.823741 -0.586084
-v -0.145584 -1.147503 -0.761179
-v -0.350279 -0.979606 -0.683992
-v -0.074587 -1.159307 -0.931740
-v -0.320704 -1.076411 -0.838993
-v 0.018807 -1.082948 -1.072160
-v -0.249707 -1.088215 -1.009554
-v -0.156313 -1.011857 -1.149974
-v 0.009002 -0.830278 -0.819252
-v -0.166118 -0.759186 -0.897066
-v -0.216008 -1.209550 -1.335380
-v -0.135511 -1.296479 -1.595958
-v -0.208160 -1.411785 -1.537806
-v 0.044013 -1.315108 -1.219841
-v 0.051860 -1.517344 -1.422267
-v 0.124509 -1.402038 -1.480418
-v -0.282912 -1.472902 -1.425414
-v -0.022892 -1.578461 -1.309876
-v -0.339738 -1.463454 -1.288898
-v -0.079717 -1.569013 -1.173360
-v -0.363409 -1.385973 -1.164837
-v -0.103389 -1.491532 -1.049298
-v -0.347585 -1.261219 -1.086473
-v -0.087565 -1.366778 -0.970933
-v -0.296505 -1.122620 -1.074802
-v -0.036485 -1.228179 -0.959263
-v -0.223855 -1.007314 -1.132954
-v 0.036164 -1.112873 -1.017414
-v -0.149103 -0.946197 -1.245345
-v 0.110917 -1.051756 -1.129805
-v -0.092278 -0.955645 -1.381861
-v 0.167742 -1.061204 -1.266321
-v -0.068606 -1.033127 -1.505923
-v 0.191414 -1.138685 -1.390383
-v -0.084430 -1.157881 -1.584288
-v 0.175590 -1.263438 -1.468748
-v 0.093575 1.166000 0.368328
-v 0.200039 1.051027 0.023692
-v 0.103954 0.898525 0.100602
-v 0.278955 1.090742 0.450701
-v 0.289334 0.823268 0.182975
-v 0.385419 0.975771 0.106065
-v 0.005088 0.817693 0.249249
-v 0.190468 0.742435 0.331623
-v -0.070069 0.830188 0.429804
-v 0.115312 0.754931 0.512177
-v -0.101377 0.932665 0.593886
-v 0.084003 0.857407 0.676259
-v -0.080448 1.097663 0.697530
-v 0.104932 1.022405 0.779903
-v -0.012890 1.280972 0.712965
-v 0.172490 1.205714 0.795338
-v 0.083195 1.433474 0.636055
-v 0.268575 1.358217 0.718428
-v 0.182062 1.514307 0.487407
-v 0.367442 1.439049 0.569781
-v 0.257218 1.501811 0.306853
-v 0.442598 1.426554 0.389226
-v 0.288526 1.399335 0.142770
-v 0.473906 1.324077 0.225144
-v 0.267597 1.234336 0.039126
-v 0.452977 1.159080 0.121500
-v 0.236038 0.772131 -0.273685
-v 0.168480 0.588821 -0.289120
-v 0.072319 0.627859 -0.331849
-v 0.256967 0.937129 -0.170041
-v 0.139877 0.811168 -0.316414
-v 0.225658 1.039605 -0.005959
-v 0.160806 0.976166 -0.212770
-v 0.150502 1.052101 0.174596
-v 0.129498 1.078642 -0.048688
-v 0.051636 0.971267 0.323242
-v 0.054342 1.091138 0.131866
-v -0.044450 0.818765 0.400153
-v -0.044525 1.010305 0.280514
-v -0.112007 0.635456 0.384718
-v -0.140610 0.857803 0.357424
-v -0.132936 0.470458 0.281074
-v -0.208168 0.674494 0.341989
-v -0.101628 0.367982 0.116991
-v -0.229097 0.509496 0.238345
-v -0.026472 0.355486 -0.063563
-v -0.197789 0.407020 0.074263
-v 0.072395 0.436319 -0.212210
-v -0.122632 0.394524 -0.106292
-v -0.023766 0.475356 -0.254939
-v 0.062015 0.703793 0.055516
-v -0.034145 0.742831 0.012787
-v 0.146871 -1.217748 -1.350849
-v 0.105512 -1.346815 -1.375688
-v 0.015621 -1.484054 -1.298774
-v -0.066082 -1.500242 -1.129692
-v -0.264875 -1.419540 -1.218026
-v -0.183172 -1.403351 -1.387107
-v -0.093282 -1.266112 -1.464021
-v -0.051923 -1.137045 -1.439182
-v -0.290922 -0.869984 -0.657326
-v -0.092129 -0.950687 -0.568992
-v 0.015150 -0.611632 -1.110105
-v 0.213943 -0.692335 -1.021773
-v 0.360643 0.460429 -0.298739
-v 0.043786 0.228903 0.202819
-v -0.155007 0.309606 0.114486
-v 0.161850 0.541131 -0.387072
-v -0.048367 1.074314 0.573139
-v 0.434528 1.209423 0.219275
-v 0.583056 1.786814 0.412525
-v 0.553587 1.997952 0.671742
-v 0.150427 0.993612 0.661473
-v 0.276583 1.449126 0.793725
-v 0.235735 1.290126 0.130942
-v 0.384263 1.867516 0.324192
-v 0.077789 1.529829 0.705391
-v 0.245883 1.973865 0.732775
-v 0.444676 1.893163 0.821108
-v 0.354795 2.078654 0.583409
-v 0.188251 -1.234547 -1.332461
-v 0.222867 -1.238959 -1.414393
-v 0.168576 -1.412328 -1.450603
-v 0.146893 -1.363614 -1.357301
-v 0.054500 -1.572990 -1.340661
-v -0.051658 -1.598196 -1.124783
-v -0.024701 -1.517042 -1.111305
-v -0.306256 -1.402741 -1.236413
-v -0.333213 -1.483896 -1.249891
-v -0.227055 -1.458689 -1.465769
-v -0.112980 -1.298027 -1.575712
-v -0.134663 -1.249313 -1.482409
-v -0.058689 -1.124658 -1.539502
-v -0.093304 -1.120246 -1.457570
-v -0.332303 -0.853185 -0.675713
-v -0.366897 -0.915986 -0.655237
-v -0.085341 -1.030286 -0.530129
-v -0.050748 -0.967486 -0.550605
-v -0.010652 -0.628268 -1.194099
-v -0.026231 -0.594833 -1.128493
-v 0.255324 -0.709134 -1.003385
-v 0.270903 -0.742568 -1.068991
-v 0.402024 0.443630 -0.280351
-v 0.425314 0.471582 -0.307229
-v 0.063507 0.199271 0.258227
-v 0.085166 0.212104 0.221207
-v -0.196388 0.326405 0.096098
-v -0.218049 0.313571 0.133119
-v 0.143759 0.585882 -0.432337
-v 0.120469 0.557930 -0.405459
-v -0.109944 1.095816 0.604502
-v 0.171611 0.981516 0.729610
-v 0.233837 1.387532 0.097341
-v 0.515393 1.273232 0.222449
-v 0.664887 1.830975 0.395575
-v 0.475909 1.192624 0.237663
-v 0.618820 2.030195 0.681258
-v 0.624437 1.770015 0.430913
-v 0.191808 0.976813 0.679860
-v 0.302576 1.444301 0.857683
-v 0.317964 1.432327 0.812113
-v 0.480459 1.919502 0.891507
-v 0.194354 1.306925 0.112554
-v 0.383332 1.945276 0.270467
-v 0.342882 1.884315 0.305804
-v 0.337265 2.144496 0.556149
-v 0.021020 1.558601 0.732575
-v -0.089747 1.091113 0.554752
-v 0.198904 2.033803 0.766399
-v 0.036409 1.546628 0.687004
-v 0.486057 1.876364 0.839496
-v 0.204502 1.990664 0.714387
-v 0.313414 2.095454 0.565021
-v 0.594968 1.981153 0.690130
-v -0.224553 -1.386552 -1.405495
-v 0.057002 -1.500853 -1.280386
-vt 0.327482 0.011534
-vt 0.336355 0.031992
-vt 0.325701 0.036705
-vt 0.318810 0.021584
-vt 0.297606 0.010852
-vt 0.299986 0.000000
-vt 0.273615 0.017865
-vt 0.187817 0.490875
-vt 0.156825 0.482407
-vt 0.161445 0.473010
-vt 0.215312 0.479341
-vt 0.185437 0.480023
-vt 0.206641 0.469291
-vt 0.213531 0.454170
-vt 0.121957 0.390759
-vt 0.129683 0.385086
-vt 0.268995 0.008468
-vt 0.241852 0.105789
-vt 0.224186 0.458883
-vt 0.210965 0.380820
-vt 0.329296 0.103077
-vt 0.323134 0.110055
-vt 0.323188 0.272647
-vt 0.317364 0.271042
-vt 0.234126 0.100116
-vt 0.231657 0.272174
-vt 0.113498 0.218161
-vt 0.119487 0.218701
-vt 0.217127 0.387798
-vt 0.205195 0.219833
-vt 0.112169 0.109915
-vt 0.118478 0.112993
-vt 0.224338 0.380960
-vt 0.225668 0.272714
-vt 0.203398 0.104885
-vt 0.211019 0.218228
-vt 0.315567 0.385990
-vt 0.307137 0.378136
-vt 0.336507 0.454737
-vt 0.326931 0.450031
-vt 0.313923 0.490875
-vt 0.308846 0.486077
-vt 0.243806 0.437197
-vt 0.230647 0.377882
-vt 0.276915 0.489888
-vt 0.248977 0.433555
-vt 0.224338 0.036138
-vt 0.194968 0.112739
-vt 0.201754 0.000000
-vt 0.214762 0.040844
-vt 0.131637 0.053678
-vt 0.136808 0.057320
-vt 0.164746 0.000987
-vt 0.168313 0.008303
-vt 0.280482 0.482572
-vt 0.196677 0.004798
-vt 0.974331 0.078176
-vt 0.980835 0.078196
-vt 0.980748 0.106756
-vt 0.707328 0.984406
-vt 0.700824 0.984386
-vt 0.700911 0.955827
-vt 0.917999 0.479660
-vt 0.924503 0.479680
-vt 0.924355 0.527969
-vt 0.917851 0.527949
-vt 0.924186 0.583212
-vt 0.909670 0.907502
-vt 0.916174 0.907508
-vt 0.916139 0.944207
-vt 0.909737 0.836400
-vt 0.916241 0.836406
-vt 0.886560 0.527969
-vt 0.880056 0.527949
-vt 0.880204 0.479660
-vt 0.886391 0.583212
-vt 0.879887 0.583192
-vt 0.870454 0.907508
-vt 0.870420 0.944207
-vt 0.863916 0.944201
-vt 0.863950 0.907502
-vt 0.864017 0.836400
-vt 0.870521 0.836406
-vt 0.864119 0.728997
-vt 0.909839 0.728997
-vt 0.916343 0.729003
-vt 0.886068 0.688915
-vt 0.879564 0.688895
-vt 0.917682 0.583192
-vt 0.923863 0.688915
-vt 0.909991 0.567907
-vt 0.916495 0.567913
-vt 0.917359 0.688895
-vt 0.923353 0.855488
-vt 0.885558 0.855488
-vt 0.879054 0.855469
-vt 0.870623 0.729003
-vt 0.864271 0.567907
-vt 0.870844 0.494518
-vt 0.870775 0.567913
-vt 0.910060 0.494512
-vt 0.916564 0.494518
-vt 0.885287 0.944110
-vt 0.878783 0.944090
-vt 0.916849 0.855468
-vt 0.923082 0.944110
-vt 0.910074 0.479660
-vt 0.916578 0.479666
-vt 0.044119 0.992083
-vt 0.044052 0.970171
-vt 0.050556 0.970151
-vt 0.043980 0.946620
-vt 0.050484 0.946600
-vt 0.025831 0.970097
-vt 0.019327 0.970117
-vt 0.019255 0.946567
-vt 0.025898 0.992009
-vt 0.019394 0.992029
-vt 0.864341 0.494512
-vt 0.864354 0.479660
-vt 0.217778 0.847236
-vt 0.217718 0.866824
-vt 0.193010 0.866748
-vt 0.217846 0.824802
-vt 0.193070 0.847160
-vt 0.217905 0.805533
-vt 0.193138 0.824726
-vt 0.193139 0.885932
-vt 0.193197 0.866824
-vt 0.217905 0.866900
-vt 0.193070 0.908359
-vt 0.217847 0.886008
-vt 0.193010 0.928096
-vt 0.217778 0.908435
-vt 0.960634 0.205294
-vt 0.960616 0.224718
-vt 0.935908 0.224694
-vt 0.960655 0.182858
-vt 0.935926 0.205271
-vt 0.960674 0.163421
-vt 0.935947 0.182835
-vt 0.161049 0.784121
-vt 0.160990 0.803505
-vt 0.136282 0.803429
-vt 0.161118 0.761685
-vt 0.136341 0.784045
-vt 0.161177 0.742208
-vt 0.136410 0.761609
-vt 0.182570 0.700256
-vt 0.193714 0.658380
-vt 0.213105 0.669579
-vt 0.182570 0.532751
-vt 0.213105 0.563429
-vt 0.193714 0.574628
-vt 0.224314 0.688998
-vt 0.224314 0.544010
-vt 0.224338 0.711433
-vt 0.224338 0.521574
-vt 0.213171 0.730874
-vt 0.213171 0.502134
-vt 0.193804 0.742111
-vt 0.193804 0.490897
-vt 0.171427 0.742132
-vt 0.171427 0.490875
-vt 0.152036 0.730933
-vt 0.152036 0.502074
-vt 0.140826 0.711515
-vt 0.140827 0.521493
-vt 0.140802 0.689079
-vt 0.140802 0.543928
-vt 0.151970 0.669638
-vt 0.151970 0.563369
-vt 0.171337 0.658402
-vt 0.171337 0.574606
-vt 0.182570 0.616504
-vt 0.631248 0.684639
-vt 0.620015 0.642784
-vt 0.642392 0.642762
-vt 0.151970 0.647121
-vt 0.600648 0.654021
-vt 0.140802 0.627681
-vt 0.589480 0.673461
-vt 0.140827 0.605245
-vt 0.589505 0.695897
-vt 0.152036 0.585826
-vt 0.600714 0.715316
-vt 0.171427 0.574628
-vt 0.620105 0.726515
-vt 0.193804 0.574649
-vt 0.642482 0.726493
-vt 0.213171 0.585886
-vt 0.661849 0.715256
-vt 0.224338 0.605327
-vt 0.673016 0.695816
-vt 0.224314 0.627762
-vt 0.672992 0.673380
-vt 0.213105 0.647181
-vt 0.661783 0.653961
-vt 0.301980 0.742172
-vt 0.301920 0.761649
-vt 0.288934 0.761609
-vt 0.301851 0.784085
-vt 0.288865 0.784045
-vt 0.301792 0.803469
-vt 0.288806 0.803429
-vt 0.260845 0.910760
-vt 0.260827 0.930198
-vt 0.247841 0.930185
-vt 0.260806 0.952634
-vt 0.247819 0.952622
-vt 0.260787 0.972057
-vt 0.247801 0.972045
-vt 0.019255 0.946507
-vt 0.019316 0.926769
-vt 0.032302 0.926809
-vt 0.019384 0.904342
-vt 0.032370 0.904382
-vt 0.019443 0.885234
-vt 0.032429 0.885274
-vt 0.281944 0.805497
-vt 0.281885 0.824766
-vt 0.268899 0.824726
-vt 0.281817 0.847200
-vt 0.268831 0.847160
-vt 0.281757 0.866788
-vt 0.268771 0.866748
-vt 0.734002 0.945881
-vt 0.733946 0.964385
-vt 0.710605 0.964313
-vt 0.734067 0.924689
-vt 0.710662 0.945810
-vt 0.734123 0.906486
-vt 0.710727 0.924617
-vt 0.819884 0.928156
-vt 0.819939 0.910106
-vt 0.843280 0.910178
-vt 0.819819 0.949343
-vt 0.843225 0.928228
-vt 0.819762 0.967987
-vt 0.843160 0.949414
-vt 0.406881 0.953659
-vt 0.406864 0.972007
-vt 0.383523 0.971985
-vt 0.406901 0.932464
-vt 0.383540 0.953637
-vt 0.406918 0.914103
-vt 0.383560 0.932442
-vt 0.768800 0.946079
-vt 0.768744 0.964390
-vt 0.745403 0.964318
-vt 0.768865 0.924885
-vt 0.745459 0.946008
-vt 0.768921 0.906486
-vt 0.745524 0.924813
-vt 0.404597 0.781691
-vt 0.415123 0.742132
-vt 0.433441 0.752711
-vt 0.712473 0.766073
-vt 0.741317 0.795053
-vt 0.722999 0.805632
-vt 0.444030 0.771055
-vt 0.751906 0.776708
-vt 0.444053 0.792249
-vt 0.751929 0.755515
-vt 0.433504 0.810614
-vt 0.741380 0.737150
-vt 0.415209 0.821229
-vt 0.723085 0.726535
-vt 0.394070 0.821249
-vt 0.701946 0.726515
-vt 0.375752 0.810670
-vt 0.683628 0.737094
-vt 0.365163 0.792326
-vt 0.673039 0.755438
-vt 0.365141 0.771132
-vt 0.673016 0.776632
-vt 0.375690 0.752768
-vt 0.683566 0.794996
-vt 0.393985 0.742153
-vt 0.701861 0.805611
-vt 0.255919 0.773795
-vt 0.264344 0.805457
-vt 0.247425 0.805440
-vt 0.819809 0.590672
-vt 0.811315 0.559026
-vt 0.828234 0.559010
-vt 0.232782 0.796944
-vt 0.796672 0.567522
-vt 0.224338 0.782246
-vt 0.788228 0.582221
-vt 0.224357 0.765282
-vt 0.788246 0.599185
-vt 0.232832 0.750600
-vt 0.796722 0.613867
-vt 0.247494 0.742132
-vt 0.811383 0.622335
-vt 0.264413 0.742149
-vt 0.828302 0.622318
-vt 0.279056 0.750645
-vt 0.842945 0.613822
-vt 0.287499 0.765344
-vt 0.851389 0.599123
-vt 0.287481 0.782307
-vt 0.851371 0.582160
-vt 0.279006 0.796990
-vt 0.842896 0.567477
-vt 0.483714 0.844061
-vt 0.483669 0.858788
-vt 0.449012 0.858681
-vt 0.483617 0.875752
-vt 0.448960 0.875645
-vt 0.483572 0.890407
-vt 0.448916 0.890301
-vt 0.710605 0.871761
-vt 0.710591 0.886458
-vt 0.675935 0.886425
-vt 0.710575 0.903422
-vt 0.675919 0.903389
-vt 0.710561 0.918108
-vt 0.675905 0.918075
-vt 0.224338 0.910641
-vt 0.224384 0.895718
-vt 0.259040 0.895825
-vt 0.224436 0.878761
-vt 0.259092 0.878867
-vt 0.224480 0.864313
-vt 0.259136 0.864420
-vt 0.780201 0.860073
-vt 0.780157 0.874642
-vt 0.745500 0.874536
-vt 0.780105 0.891604
-vt 0.745449 0.891498
-vt 0.780060 0.906414
-vt 0.745403 0.906308
-vt 0.266106 0.532751
-vt 0.277250 0.574628
-vt 0.254873 0.574649
-vt 0.714785 0.517134
-vt 0.703551 0.475279
-vt 0.725928 0.475257
-vt 0.235506 0.563369
-vt 0.684184 0.486516
-vt 0.224338 0.543928
-vt 0.673016 0.505957
-vt 0.224363 0.521493
-vt 0.673041 0.528392
-vt 0.235572 0.502074
-vt 0.684250 0.547811
-vt 0.254963 0.490875
-vt 0.703641 0.559010
-vt 0.277340 0.490897
-vt 0.726018 0.559032
-vt 0.296707 0.502134
-vt 0.745385 0.547751
-vt 0.307874 0.521574
-vt 0.756553 0.528311
-vt 0.307850 0.544010
-vt 0.756528 0.505875
-vt 0.296641 0.563429
-vt 0.745319 0.486456
-vt 0.137065 0.490951
-vt 0.137005 0.510428
-vt 0.112297 0.510352
-vt 0.136936 0.532864
-vt 0.112228 0.532788
-vt 0.136877 0.552247
-vt 0.112169 0.552171
-vt 0.960674 0.000023
-vt 0.960655 0.019461
-vt 0.935947 0.019437
-vt 0.960634 0.041897
-vt 0.935926 0.041874
-vt 0.960616 0.061344
-vt 0.935908 0.061297
-vt 0.136282 0.926144
-vt 0.136342 0.906407
-vt 0.161050 0.906483
-vt 0.136411 0.883979
-vt 0.161119 0.884055
-vt 0.136469 0.864871
-vt 0.161177 0.864947
-vt 0.161177 0.803581
-vt 0.161118 0.822850
-vt 0.136410 0.822774
-vt 0.161050 0.845284
-vt 0.136342 0.845208
-vt 0.160990 0.864871
-vt 0.136282 0.864795
-vt 0.987120 0.148498
-vt 0.987060 0.168086
-vt 0.974244 0.168046
-vt 0.987189 0.126064
-vt 0.974304 0.148459
-vt 0.987248 0.106795
-vt 0.974372 0.126025
-vt 0.977011 0.327820
-vt 0.977069 0.308711
-vt 0.989886 0.308751
-vt 0.976942 0.350247
-vt 0.989827 0.327859
-vt 0.976882 0.369984
-vt 0.989759 0.350286
-vt 0.991730 0.908371
-vt 0.991740 0.927806
-vt 0.978896 0.927782
-vt 0.991752 0.885934
-vt 0.978914 0.908358
-vt 0.991770 0.866497
-vt 0.978935 0.885922
-vt 0.984176 0.684994
-vt 0.984117 0.704377
-vt 0.971300 0.704338
-vt 0.984245 0.662558
-vt 0.971359 0.684955
-vt 0.984304 0.643081
-vt 0.971428 0.662519
-vt 0.714784 0.684639
-vt 0.725928 0.642762
-vt 0.745319 0.653961
-vt 0.406909 0.698535
-vt 0.430287 0.722022
-vt 0.415440 0.730597
-vt 0.756528 0.673380
-vt 0.438869 0.707155
-vt 0.756552 0.695816
-vt 0.438887 0.689977
-vt 0.745385 0.715256
-vt 0.430337 0.675093
-vt 0.726018 0.726493
-vt 0.415509 0.666490
-vt 0.703641 0.726515
-vt 0.398377 0.666473
-vt 0.684250 0.715316
-vt 0.383531 0.675048
-vt 0.673041 0.695897
-vt 0.374948 0.689915
-vt 0.673016 0.673461
-vt 0.374930 0.707092
-vt 0.684184 0.654021
-vt 0.383480 0.721977
-vt 0.703551 0.642784
-vt 0.398308 0.730580
-vt 0.634026 0.010797
-vt 0.640870 0.025939
-vt 0.636218 0.031514
-vt 0.612855 0.000000
-vt 0.630488 0.016822
-vt 0.612584 0.006428
-vt 0.592182 0.013296
-vt 0.708952 0.475258
-vt 0.684939 0.468318
-vt 0.688279 0.461962
-vt 0.708681 0.468830
-vt 0.726585 0.458435
-vt 0.730123 0.464460
-vt 0.732315 0.443743
-vt 0.652908 0.380493
-vt 0.660675 0.376391
-vt 0.588842 0.006939
-vt 0.564578 0.098866
-vt 0.736967 0.449318
-vt 0.729584 0.372404
-vt 0.638079 0.099282
-vt 0.633487 0.102854
-vt 0.631816 0.260249
-vt 0.627378 0.259427
-vt 0.556811 0.094765
-vt 0.554674 0.260699
-vt 0.642203 0.214139
-vt 0.650771 0.214559
-vt 0.734176 0.375976
-vt 0.723474 0.215831
-vt 0.640870 0.108435
-vt 0.649117 0.111755
-vt 0.544773 0.366822
-vt 0.546106 0.261119
-vt 0.717359 0.107946
-vt 0.727913 0.215008
-vt 0.621262 0.367312
-vt 0.617895 0.363598
-vt 0.640836 0.439267
-vt 0.634141 0.433477
-vt 0.622641 0.475257
-vt 0.618529 0.468569
-vt 0.562933 0.422552
-vt 0.553020 0.363503
-vt 0.594288 0.471666
-vt 0.568146 0.417610
-vt 0.736933 0.035990
-vt 0.713992 0.111660
-vt 0.718737 0.000000
-vt 0.730238 0.041780
-vt 0.659030 0.052705
-vt 0.664243 0.057648
-vt 0.690384 0.003592
-vt 0.690595 0.010041
-vt 0.594498 0.465217
-vt 0.714626 0.006689
-vt 0.126961 0.552247
-vt 0.137065 0.553394
-vt 0.137063 0.574602
-vt 0.800249 0.624809
-vt 0.812269 0.622335
-vt 0.812242 0.648165
-vt 0.835228 0.650024
-vt 0.835159 0.622335
-vt 0.845002 0.623255
-vt 0.458759 0.978525
-vt 0.448916 0.979446
-vt 0.448984 0.951756
-vt 0.800221 0.622335
-vt 0.800249 0.648165
-vt 0.788228 0.645690
-vt 0.122537 0.552247
-vt 0.122539 0.573455
-vt 0.112434 0.574602
-vt 0.986797 0.300698
-vt 0.978913 0.297473
-vt 0.980320 0.203265
-vt 0.783777 0.997045
-vt 0.782369 0.902837
-vt 0.790253 0.899612
-vt 0.341678 0.910748
-vt 0.341520 0.980201
-vt 0.336887 0.987458
-vt 0.740612 0.906414
-vt 0.745246 0.913671
-vt 0.745403 0.983124
-vt 0.851991 0.623671
-vt 0.856981 0.622335
-vt 0.856372 0.787383
-vt 0.960674 0.168086
-vt 0.960936 0.000000
-vt 0.965985 0.000802
-vt 0.023274 0.658159
-vt 0.018225 0.658961
-vt 0.017962 0.490875
-vt 0.976283 0.464564
-vt 0.976892 0.629612
-vt 0.971902 0.628276
-vt 0.987248 0.168086
-vt 0.987259 0.062794
-vt 0.992332 0.062164
-vt 0.994951 0.674198
-vt 0.989877 0.673568
-vt 0.989866 0.568276
-vt 0.325208 0.864313
-vt 0.330230 0.865527
-vt 0.330343 0.976013
-vt 0.633595 0.856193
-vt 0.633482 0.966680
-vt 0.628461 0.967893
-vt 0.996566 0.464564
-vt 0.996457 0.533580
-vt 0.991481 0.542731
-vt 0.630616 0.805632
-vt 0.630712 0.845852
-vt 0.621435 0.845936
-vt 0.863006 0.989982
-vt 0.857018 0.988559
-vt 0.857634 0.931580
-vt 0.110818 0.931785
-vt 0.105249 0.930773
-vt 0.105246 0.872554
-vt 0.991501 0.325069
-vt 0.996477 0.334220
-vt 0.996586 0.403235
-vt 0.138896 0.926220
-vt 0.148173 0.926304
-vt 0.148077 0.966524
-vt 0.987864 0.062164
-vt 0.987248 0.005185
-vt 0.993236 0.003761
-vt 0.903540 0.990352
-vt 0.903544 0.932133
-vt 0.909113 0.931121
-vt 0.977074 0.196778
-vt 0.969845 0.199558
-vt 0.970309 0.168086
-vt 0.618609 0.983543
-vt 0.618144 0.952071
-vt 0.625374 0.954852
-vt 0.845076 0.646619
-vt 0.845002 0.622352
-vt 0.850517 0.622335
-vt 0.856904 0.794907
-vt 0.856979 0.819174
-vt 0.851463 0.819191
-vt 0.903694 0.931116
-vt 0.903737 0.884618
-vt 0.909253 0.884623
-vt 0.903788 0.831170
-vt 0.909303 0.831175
-vt 0.851389 0.519525
-vt 0.851498 0.484043
-vt 0.857013 0.484060
-vt 0.263043 0.933750
-vt 0.263255 0.864313
-vt 0.268771 0.864330
-vt 0.473753 0.951761
-vt 0.473709 0.998259
-vt 0.468194 0.998254
-vt 0.032429 0.946552
-vt 0.032378 1.000000
-vt 0.026863 0.999995
-vt 0.863916 0.479677
-vt 0.863807 0.515159
-vt 0.858292 0.515142
-vt 0.863595 0.584596
-vt 0.858079 0.584579
-vt 0.863275 0.688977
-vt 0.857760 0.688960
-vt 0.670070 0.976109
-vt 0.670390 0.871728
-vt 0.675905 0.871745
-vt 0.857002 0.519548
-vt 0.856905 0.622335
-vt 0.851389 0.622329
-vt 0.903885 0.728383
-vt 0.909400 0.728388
-vt 0.063701 0.977927
-vt 0.064180 0.821249
-vt 0.069696 0.821266
-vt 0.904038 0.566281
-vt 0.909553 0.566286
-vt 0.976969 0.704417
-vt 0.976815 0.866485
-vt 0.971300 0.866479
-vt 0.862796 0.845654
-vt 0.857281 0.845637
-vt 0.862578 0.917041
-vt 0.364761 0.727363
-vt 0.359246 0.727346
-vt 0.359464 0.655960
-vt 0.998164 0.062169
-vt 0.998082 0.148790
-vt 0.992566 0.148784
-vt 0.904120 0.479660
-vt 0.909635 0.479665
-vt 0.359246 0.741902
-vt 0.359290 0.727363
-vt 0.700767 0.974236
-vt 0.695252 0.974219
-vt 0.695308 0.955827
-vt 0.688012 0.955827
-vt 0.688073 0.975961
-vt 0.682558 0.975978
-vt 0.818472 0.475274
-vt 0.818411 0.495409
-vt 0.812895 0.495392
-vt 0.688130 0.955827
-vt 0.693645 0.955844
-vt 0.693589 0.974236
-vt 0.862533 0.931580
-vt 0.857018 0.931563
-vt 0.974244 0.106736
-vt 0.707415 0.955847
-vt 0.909635 0.944201
-vt 0.886708 0.479680
-vt 0.916578 0.944090
-vt 0.050623 0.992063
-vt 0.025759 0.946546
-vt 0.870858 0.479666
-vt 0.193197 0.805457
-vt 0.217718 0.928172
-vt 0.935965 0.163397
-vt 0.136469 0.742132
-vt 0.288993 0.742132
-vt 0.247859 0.910748
-vt 0.032241 0.946546
-vt 0.268958 0.805457
-vt 0.710782 0.906414
-vt 0.843103 0.968059
-vt 0.383578 0.914081
-vt 0.745580 0.906414
-vt 0.449057 0.843955
-vt 0.258995 0.910748
-vt 0.745545 0.859966
-vt 0.112357 0.490875
-vt 0.935965 0.000000
-vt 0.160990 0.926220
-vt 0.136469 0.803505
-vt 0.974431 0.106756
-vt 0.989698 0.370024
-vt 0.978954 0.866485
-vt 0.971488 0.643042
-vt 0.126695 0.568020
-vt 0.801840 0.645490
-vt 0.844633 0.644828
-vt 0.458389 0.956952
-vt 0.789819 0.625009
-vt 0.112169 0.558829
-vt 0.986785 0.210764
-vt 0.790241 0.989546
-vt 0.333066 0.916168
-vt 0.736791 0.977704
-vt 0.851389 0.780362
-vt 0.967461 0.162932
-vt 0.024750 0.496029
-vt 0.971300 0.471584
-vt 0.992566 0.164981
-vt 0.995184 0.571381
-vt 0.322755 0.968889
-vt 0.626007 0.863318
-vt 0.989866 0.470997
-vt 0.624636 0.807646
-vt 0.862847 0.933790
-vt 0.111341 0.877341
-vt 0.989886 0.396803
-vt 0.142097 0.964510
-vt 0.993077 0.059953
-vt 0.909635 0.985565
-vt 0.974765 0.172563
-vt 0.623065 0.979066
-vt 0.850592 0.646602
-vt 0.851389 0.794924
-vt 0.909209 0.931121
-vt 0.856904 0.519542
-vt 0.268558 0.933767
-vt 0.468238 0.951756
-vt 0.026913 0.946546
-vt 0.858400 0.479660
-vt 0.675586 0.976126
-vt 0.851486 0.519542
-vt 0.069216 0.977944
-vt 0.971453 0.704377
-vt 0.857062 0.917024
-vt 0.364980 0.655977
-vt 0.992648 0.062164
-vt 0.364761 0.741919
-vt 0.700824 0.955844
-vt 0.682496 0.955844
-vt 0.812957 0.475257
-vt 0.688073 0.974219
-vt 0.407060 0.865729
-vt 0.406918 0.821356
-vt 0.443917 0.821249
-vt 0.544822 0.904631
-vt 0.589075 0.904673
-vt 0.589026 0.956085
-vt 0.544874 0.849165
-vt 0.589127 0.849207
-vt 0.879929 0.104895
-vt 0.880138 0.036641
-vt 0.924391 0.036777
-vt 0.880250 0.000000
-vt 0.924503 0.000136
-vt 0.924182 0.105031
-vt 0.923835 0.218517
-vt 0.879582 0.218381
-vt 0.544976 0.740944
-vt 0.545140 0.568150
-vt 0.589392 0.568192
-vt 0.923316 0.388182
-vt 0.879063 0.388046
-vt 0.923098 0.459408
-vt 0.545228 0.475257
-vt 0.589480 0.475299
-vt 0.224338 0.864177
-vt 0.224432 0.833476
-vt 0.268685 0.833612
-vt 0.923036 0.479660
-vt 0.878783 0.479524
-vt 0.224518 0.805457
-vt 0.268771 0.805593
-vt 0.676020 0.918108
-vt 0.707415 0.918204
-vt 0.707300 0.955827
-vt 0.630712 0.856078
-vt 0.630867 0.805632
-vt 0.668393 0.805747
-vt 0.710605 0.859851
-vt 0.710771 0.805632
-vt 0.748298 0.805747
-vt 0.710543 0.871728
-vt 0.673016 0.871693
-vt 0.673079 0.805632
-vt 0.589480 0.914381
-vt 0.625374 0.914448
-vt 0.625338 0.952071
-vt 0.486717 0.643442
-vt 0.486613 0.753891
-vt 0.449086 0.753855
-vt 0.019418 0.838666
-vt 0.019740 0.733378
-vt 0.057266 0.733493
-vt 0.449191 0.475257
-vt 0.486717 0.475373
-vt 0.486203 0.643406
-vt 0.327458 0.655924
-vt 0.327614 0.490875
-vt 0.320708 0.805493
-vt 0.320643 0.874845
-vt 0.283116 0.874810
-vt 0.449191 0.753891
-vt 0.486717 0.754006
-vt 0.486442 0.843955
-vt 0.193125 0.965874
-vt 0.193010 0.928251
-vt 0.218740 0.928172
-vt 0.870858 0.981830
-vt 0.870894 0.944207
-vt 0.890407 0.944226
-vt 0.935908 0.125774
-vt 0.959847 0.125701
-vt 0.959962 0.163324
-vt 0.444053 0.865615
-vt 0.544773 0.956042
-vt 0.589229 0.740987
-vt 0.878845 0.459272
-vt 0.268591 0.864313
-vt 0.675905 0.955730
-vt 0.668239 0.856193
-vt 0.748132 0.859966
-vt 0.710605 0.805667
-vt 0.589480 0.952037
-vt 0.449191 0.643406
-vt 0.056944 0.838782
-vt 0.448677 0.643291
-vt 0.365141 0.490911
-vt 0.283182 0.805457
-vt 0.448916 0.843839
-vt 0.218855 0.965795
-vt 0.890371 0.981849
-vt 0.099034 0.616504
-vt 0.110178 0.658380
-vt 0.087801 0.658358
-vt 0.266106 0.700256
-vt 0.254873 0.658402
-vt 0.277250 0.658380
-vt 0.068434 0.647121
-vt 0.235506 0.669638
-vt 0.057266 0.627681
-vt 0.224338 0.689079
-vt 0.057290 0.605245
-vt 0.224363 0.711515
-vt 0.068500 0.585826
-vt 0.235572 0.730933
-vt 0.087891 0.574628
-vt 0.254963 0.742132
-vt 0.110268 0.574649
-vt 0.277340 0.742111
-vt 0.129635 0.585886
-vt 0.296707 0.730874
-vt 0.140802 0.605327
-vt 0.307874 0.711433
-vt 0.140778 0.627762
-vt 0.307850 0.688998
-vt 0.129569 0.647181
-vt 0.296641 0.669579
-vt 0.161177 0.926259
-vt 0.161118 0.945736
-vt 0.148301 0.945697
-vt 0.161049 0.968173
-vt 0.148232 0.968133
-vt 0.160990 0.987556
-vt 0.148173 0.987516
-vt 0.989843 0.805188
-vt 0.989825 0.824625
-vt 0.977008 0.824613
-vt 0.989803 0.847061
-vt 0.976987 0.847049
-vt 0.989785 0.866485
-vt 0.976969 0.866473
-vt 0.976882 0.464508
-vt 0.976942 0.444771
-vt 0.989759 0.444810
-vt 0.977011 0.422343
-vt 0.989827 0.422383
-vt 0.977069 0.403235
-vt 0.989886 0.403275
-vt 0.987248 0.009420
-vt 0.987189 0.028689
-vt 0.974372 0.028650
-vt 0.987120 0.051123
-vt 0.974304 0.051084
-vt 0.987060 0.070710
-vt 0.974244 0.070671
-vt 0.745307 0.891604
-vt 0.745261 0.906414
-vt 0.710605 0.906308
-vt 0.745359 0.874642
-vt 0.710651 0.891498
-vt 0.745403 0.860073
-vt 0.710702 0.874536
-vt 0.407021 0.878562
-vt 0.441716 0.865836
-vt 0.406964 0.897134
-vt 0.441677 0.878669
-vt 0.406918 0.912057
-vt 0.441620 0.897240
-vt 0.624151 0.899728
-vt 0.624137 0.914414
-vt 0.624167 0.882764
-vt 0.589494 0.899695
-vt 0.624181 0.868068
-vt 0.589510 0.882731
-vt 0.406821 0.853046
-vt 0.406777 0.867701
-vt 0.372120 0.867595
-vt 0.406873 0.836082
-vt 0.372165 0.852939
-vt 0.372217 0.835976
-vt 0.777691 0.813404
-vt 0.791935 0.789839
-vt 0.806596 0.798307
-vt 0.777691 0.766274
-vt 0.806596 0.781372
-vt 0.815072 0.812989
-vt 0.815072 0.766689
-vt 0.815090 0.829953
-vt 0.815090 0.749726
-vt 0.810165 0.847774
-vt 0.810165 0.731905
-vt 0.792003 0.853147
-vt 0.792003 0.726531
-vt 0.775084 0.853164
-vt 0.775084 0.726515
-vt 0.760423 0.844696
-vt 0.760423 0.734982
-vt 0.751947 0.830014
-vt 0.751947 0.749665
-vt 0.751929 0.813051
-vt 0.751929 0.766628
-vt 0.760373 0.798352
-vt 0.760373 0.781327
-vt 0.775016 0.789856
-vt 0.775016 0.789823
-vt 0.148361 0.926220
-vt 0.977027 0.805175
-vt 0.989698 0.464548
-vt 0.974431 0.009380
-vt 0.710747 0.859966
-vt 0.441575 0.912164
-vt 0.589524 0.868035
-vt 0.372262 0.821249
-vn 0.856800 -0.347800 0.380700
-vn -0.856800 0.347800 -0.380700
-vn -0.063200 -0.803500 -0.591900
-vn 0.352600 -0.143600 -0.924700
-vn 0.435700 0.093500 -0.895200
-vn -0.503200 -0.725500 0.469600
-vn -0.448800 -0.139500 0.882700
-vn -0.448800 -0.139500 0.882600
-vn -0.509900 -0.461100 0.726200
-vn 0.501400 0.389400 -0.772600
-vn -0.504400 -0.411700 0.759000
-vn 0.507000 0.433000 -0.745300
-vn -0.504300 -0.411000 0.759400
-vn 0.513000 0.650100 -0.560500
-vn -0.402900 0.009200 0.915200
-vn -0.113600 0.592900 0.797200
-vn 0.260300 0.929000 0.263000
-vn 0.383500 -0.063800 -0.921300
-vn 0.504500 0.412500 -0.758500
-vn 0.490300 0.778200 -0.392500
-vn 0.344700 0.935400 0.078800
-vn 0.106800 0.842000 0.528900
-vn -0.159800 0.522900 0.837300
-vn -0.383500 0.063800 0.921300
-vn -0.504500 -0.412500 0.758500
-vn -0.490300 -0.778200 0.392500
-vn -0.344700 -0.935400 -0.078800
-vn -0.106800 -0.842000 -0.528900
-vn 0.159800 -0.522900 -0.837300
-vn 0.668700 -0.324000 0.669200
-vn 0.774500 -0.138300 0.617300
-vn 0.899400 0.021300 0.436600
-vn -0.727900 0.627600 -0.276200
-vn -0.845000 0.533500 -0.035700
-vn -0.952800 0.303600 0.008700
-vn -0.690700 0.507300 -0.515300
-vn 0.994000 -0.051500 0.096700
-vn -0.993200 0.114400 0.019800
-vn 0.521600 -0.499600 0.691600
-vn 0.522700 -0.499700 0.690700
-vn 0.965800 -0.210400 0.151500
-vn -0.688500 0.451600 -0.567400
-vn -0.993200 0.114800 0.018500
-vn -0.682300 0.443600 -0.581000
-vn 0.959900 -0.230600 0.159400
-vn -0.995500 0.094200 -0.000400
-vn 0.448900 -0.537800 0.713600
-vn 0.591700 -0.388600 0.706300
-vn 0.630700 -0.565100 0.532000
-vn 0.940500 -0.311600 0.135200
-vn 0.924600 -0.375500 0.064300
-vn -0.919100 0.142500 0.367300
-vn -0.959700 0.142600 -0.242300
-vn -0.644600 0.372400 -0.667700
-vn -0.473100 0.231500 -0.850100
-vn 0.781400 -0.605500 0.151100
-vn -0.818100 0.031800 -0.574200
-vn 0.056800 0.797400 0.600800
-vn 0.056700 0.797400 0.600800
-vn -0.375500 0.085200 0.922900
-vn -0.447100 -0.133000 0.884600
-vn 0.508100 0.695200 -0.508500
-vn 0.458000 0.174000 -0.871800
-vn 0.509300 0.455000 -0.730500
-vn -0.501800 -0.392400 0.770900
-vn 0.504400 0.411800 -0.758900
-vn -0.506700 -0.430400 0.747000
-vn 0.504300 0.411200 -0.759300
-vn -0.514600 -0.624200 0.587900
-vn 0.419300 0.040200 -0.906900
-vn 0.140700 -0.552600 -0.821500
-vn -0.279300 -0.933600 -0.224400
-vn 0.419300 0.040200 -0.907000
-vn 0.621300 -0.335400 0.708200
-vn 0.736900 -0.108700 0.667300
-vn 0.895000 -0.031200 0.445000
-vn -0.693200 0.667800 -0.271000
-vn -0.847700 0.520300 -0.103600
-vn -0.942700 0.330200 -0.046800
-vn -0.559100 0.579000 -0.593400
-vn 0.961900 -0.163600 0.219000
-vn -0.993200 0.115300 0.018500
-vn 0.520300 -0.500000 0.692300
-vn 0.521300 -0.500100 0.691500
-vn 0.961700 -0.218300 0.165800
-vn -0.676400 0.456300 -0.578200
-vn -0.993100 0.115700 0.017100
-vn -0.690800 0.439500 -0.574100
-vn 0.962900 -0.224300 0.150000
-vn -0.996200 0.048900 0.071400
-vn 0.522500 -0.522000 0.674100
-vn 0.275600 -0.342500 0.898200
-vn 0.692300 -0.528100 0.491800
-vn 0.959300 -0.278800 0.045100
-vn 0.914000 -0.331600 -0.233700
-vn -0.969400 0.245100 0.012700
-vn -0.979100 0.088400 -0.183300
-vn -0.714300 0.360200 -0.600100
-vn -0.698600 0.283500 -0.657000
-vn 0.776500 -0.615600 0.134400
-vn -0.825300 0.046800 -0.562800
-vn -0.447000 -0.133000 0.884600
-vn -0.138600 0.555800 0.819700
-vn 0.346800 0.935000 0.073800
-vn -0.396500 0.027600 0.917600
-vn -0.473700 -0.239100 0.847600
-vn 0.482600 0.280800 -0.829600
-vn 0.512300 0.490400 -0.705000
-vn 0.506000 0.425000 -0.750600
-vn -0.503800 -0.407300 0.761700
-vn -0.515300 -0.548900 0.658100
-vn 0.507500 0.438300 -0.741800
-vn 0.474800 0.244000 -0.845600
-vn -0.428700 -0.890700 0.151100
-vn -0.092500 -0.830000 -0.550100
-vn 0.262000 -0.342200 -0.902300
-vn 0.153600 -0.532600 -0.832300
-vn -0.357900 -0.932600 -0.046700
-vn 0.413500 0.022200 -0.910200
-vn 0.478400 0.260400 -0.838700
-vn -0.511800 -0.483500 0.710100
-vn -0.485800 -0.297000 0.822100
-vn -0.505800 -0.423400 0.751600
-vn 0.503900 0.408000 -0.761300
-vn 0.514800 0.533200 -0.671400
-vn -0.507200 -0.435000 0.744000
-vn -0.479000 -0.263400 0.837300
-vn 0.440000 0.878100 -0.187800
-vn 0.090900 0.828600 0.552400
-vn -0.283600 0.298800 0.911200
-vn 0.429500 0.889900 -0.153700
-vn -0.015000 0.721200 0.692600
-vn -0.106800 -0.841900 -0.528900
-usemtl Treads
-s off
-f 67/1/1 68/2/1 69/3/1
-f 67/1/1 70/4/1 71/5/1
-f 72/6/1 71/5/1 73/7/1
-f 74/8/2 75/9/2 76/10/2
-f 77/11/2 74/8/2 78/12/2
-f 77/11/2 79/13/2 80/14/2
-f 75/9/2 81/15/2 82/16/2
-f 83/17/1 73/7/1 84/18/1
-f 85/19/2 80/14/2 86/20/2
-f 68/2/1 87/21/1 88/22/1
-f 87/21/1 89/23/1 90/24/1
-f 91/25/1 84/18/1 92/26/1
-f 81/15/2 93/27/2 94/28/2
-f 95/29/2 86/20/2 96/30/2
-f 97/31/2 98/32/2 94/28/2
-f 99/33/1 100/34/1 92/26/1
-f 101/35/2 102/36/2 96/30/2
-f 103/37/1 104/38/1 90/24/1
-f 105/39/1 106/40/1 104/38/1
-f 107/41/1 108/42/1 106/40/1
-f 109/43/1 99/33/1 110/44/1
-f 111/45/1 109/43/1 112/46/1
-f 113/47/2 101/35/2 114/48/2
-f 115/49/2 113/47/2 116/50/2
-f 117/51/2 118/52/2 98/32/2
-f 119/53/2 120/54/2 118/52/2
-f 107/41/1 111/45/1 121/55/1
-f 115/49/2 122/56/2 120/54/2
-f 122/57/3 123/58/3 124/59/3
-f 121/60/3 125/61/3 126/62/3
-f 120/63/4 124/64/4 127/65/4
-f 118/66/5 127/65/5 128/67/5
-f 116/68/6 129/69/6 123/70/6
-f 114/71/7 130/72/7 129/69/7
-f 112/73/4 131/74/4 125/75/4
-f 110/76/5 132/77/5 131/74/5
-f 106/78/6 108/79/6 126/80/6
-f 106/78/8 133/81/8 134/82/8
-f 104/83/9 134/82/9 135/84/9
-f 96/85/9 136/86/9 130/72/9
-f 92/87/10 137/88/10 132/77/10
-f 98/89/10 128/67/10 138/90/10
-f 86/91/11 139/92/11 136/86/11
-f 94/93/12 138/90/12 140/94/12
-f 84/95/12 141/96/12 137/88/12
-f 90/97/11 135/84/11 142/98/11
-f 69/99/13 88/100/13 142/98/13
-f 80/101/13 143/102/13 139/92/13
-f 73/103/14 144/104/14 141/96/14
-f 82/105/14 140/94/14 145/106/14
-f 79/107/15 146/108/15 143/102/15
-f 79/109/16 78/110/16 147/111/16
-f 76/112/17 145/113/17 147/111/17
-f 71/114/17 148/115/17 144/116/17
-f 71/114/16 70/117/16 149/118/16
-f 69/99/15 150/119/15 149/120/15
-f 151/121/18 152/122/18 153/123/18
-f 154/124/19 151/121/19 155/125/19
-f 156/126/20 154/124/20 157/127/20
-f 158/128/21 156/129/21 159/130/21
-f 160/131/22 158/128/22 161/132/22
-f 162/133/23 160/131/23 163/134/23
-f 164/135/24 162/136/24 165/137/24
-f 166/138/25 164/135/25 167/139/25
-f 168/140/26 166/138/26 169/141/26
-f 170/142/27 168/143/27 171/144/27
-f 172/145/28 170/142/28 173/146/28
-f 152/147/29 172/145/29 174/148/29
-f 175/149/1 152/150/1 151/151/1
-f 176/152/2 155/153/2 153/154/2
-f 175/149/1 151/151/1 154/155/1
-f 176/152/2 157/156/2 155/153/2
-f 175/149/1 154/155/1 156/157/1
-f 176/152/2 159/158/2 157/156/2
-f 175/149/1 156/157/1 158/159/1
-f 176/152/2 161/160/2 159/158/2
-f 175/149/1 158/159/1 160/161/1
-f 176/152/2 163/162/2 161/160/2
-f 175/149/1 160/161/1 162/163/1
-f 176/152/2 165/164/2 163/162/2
-f 175/149/1 162/163/1 164/165/1
-f 176/152/2 167/166/2 165/164/2
-f 175/149/1 164/165/1 166/167/1
-f 176/152/2 169/168/2 167/166/2
-f 175/149/1 166/167/1 168/169/1
-f 176/152/2 171/170/2 169/168/2
-f 175/149/1 168/169/1 170/171/1
-f 176/152/2 173/172/2 171/170/2
-f 175/149/1 170/171/1 172/173/1
-f 176/152/2 174/174/2 173/172/2
-f 175/149/1 172/173/1 152/150/1
-f 176/152/2 153/154/2 174/174/2
-f 177/175/2 178/150/2 179/173/2
-f 180/176/1 181/177/1 182/178/1
-f 177/175/2 179/173/2 183/179/2
-f 180/176/1 184/180/1 181/177/1
-f 177/175/2 183/179/2 185/181/2
-f 180/176/1 186/182/1 184/180/1
-f 177/175/2 185/181/2 187/183/2
-f 180/176/1 188/184/1 186/182/1
-f 177/175/2 187/183/2 189/185/2
-f 180/176/1 190/186/1 188/184/1
-f 177/175/2 189/185/2 191/187/2
-f 180/176/1 192/188/1 190/186/1
-f 177/175/2 191/187/2 193/189/2
-f 180/176/1 194/190/1 192/188/1
-f 177/175/2 193/189/2 195/191/2
-f 180/176/1 196/192/1 194/190/1
-f 177/175/2 195/191/2 197/193/2
-f 180/176/1 198/194/1 196/192/1
-f 177/175/2 197/193/2 199/195/2
-f 180/176/1 200/196/1 198/194/1
-f 177/175/2 199/195/2 201/197/2
-f 180/176/1 202/198/1 200/196/1
-f 177/175/2 201/197/2 178/150/2
-f 180/176/1 182/178/1 202/198/1
-f 182/199/29 181/200/29 179/201/29
-f 181/200/28 184/202/28 183/203/28
-f 184/202/27 186/204/27 185/205/27
-f 186/206/26 188/207/26 187/208/26
-f 188/207/25 190/209/25 189/210/25
-f 190/209/24 192/211/24 191/212/24
-f 192/213/23 194/214/23 193/215/23
-f 194/214/22 196/216/22 195/217/22
-f 196/216/21 198/218/21 197/219/21
-f 198/220/20 200/221/20 199/222/20
-f 200/221/19 202/223/19 201/224/19
-f 202/223/18 182/225/18 178/226/18
-f 203/227/18 204/228/18 205/229/18
-f 206/230/19 203/227/19 207/231/19
-f 208/232/20 206/230/20 209/233/20
-f 210/234/21 208/235/21 211/236/21
-f 212/237/22 210/234/22 213/238/22
-f 214/239/23 212/237/23 215/240/23
-f 216/241/24 214/242/24 217/243/24
-f 218/244/25 216/241/25 219/245/25
-f 220/246/26 218/244/26 221/247/26
-f 222/248/27 220/249/27 223/250/27
-f 224/251/28 222/248/28 225/252/28
-f 204/253/29 224/251/29 226/254/29
-f 227/255/1 204/256/1 203/257/1
-f 228/258/2 207/259/2 205/260/2
-f 227/255/1 203/257/1 206/261/1
-f 228/258/2 209/262/2 207/259/2
-f 227/255/1 206/261/1 208/263/1
-f 228/258/2 211/264/2 209/262/2
-f 227/255/1 208/263/1 210/265/1
-f 228/258/2 213/266/2 211/264/2
-f 227/255/1 210/265/1 212/267/1
-f 228/258/2 215/268/2 213/266/2
-f 227/255/1 212/267/1 214/269/1
-f 228/258/2 217/270/2 215/268/2
-f 227/255/1 214/269/1 216/271/1
-f 228/258/2 219/272/2 217/270/2
-f 227/255/1 216/271/1 218/273/1
-f 228/258/2 221/274/2 219/272/2
-f 227/255/1 218/273/1 220/275/1
-f 228/258/2 223/276/2 221/274/2
-f 227/255/1 220/275/1 222/277/1
-f 228/258/2 225/278/2 223/276/2
-f 227/255/1 222/277/1 224/279/1
-f 228/258/2 226/280/2 225/278/2
-f 227/255/1 224/279/1 204/256/1
-f 228/258/2 205/260/2 226/280/2
-f 229/281/2 230/282/2 231/283/2
-f 232/284/1 233/285/1 234/286/1
-f 229/281/2 231/283/2 235/287/2
-f 232/284/1 236/288/1 233/285/1
-f 229/281/2 235/287/2 237/289/2
-f 232/284/1 238/290/1 236/288/1
-f 229/281/2 237/289/2 239/291/2
-f 232/284/1 240/292/1 238/290/1
-f 229/281/2 239/291/2 241/293/2
-f 232/284/1 242/294/1 240/292/1
-f 229/281/2 241/293/2 243/295/2
-f 232/284/1 244/296/1 242/294/1
-f 229/281/2 243/295/2 245/297/2
-f 232/284/1 246/298/1 244/296/1
-f 229/281/2 245/297/2 247/299/2
-f 232/284/1 248/300/1 246/298/1
-f 229/281/2 247/299/2 249/301/2
-f 232/284/1 250/302/1 248/300/1
-f 229/281/2 249/301/2 251/303/2
-f 232/284/1 252/304/1 250/302/1
-f 229/281/2 251/303/2 253/305/2
-f 232/284/1 254/306/1 252/304/1
-f 229/281/2 253/305/2 230/282/2
-f 232/284/1 234/286/1 254/306/1
-f 234/307/29 233/308/29 231/309/29
-f 233/308/28 236/310/28 235/311/28
-f 236/310/27 238/312/27 237/313/27
-f 238/314/26 240/315/26 239/316/26
-f 240/315/25 242/317/25 241/318/25
-f 242/317/24 244/319/24 243/320/24
-f 244/321/23 246/322/23 245/323/23
-f 246/322/22 248/324/22 247/325/22
-f 248/324/21 250/326/21 249/327/21
-f 250/328/20 252/329/20 251/330/20
-f 252/329/19 254/331/19 253/332/19
-f 254/331/18 234/333/18 230/334/18
-f 255/335/2 256/336/2 257/337/2
-f 258/338/1 259/339/1 260/340/1
-f 255/335/2 257/337/2 261/341/2
-f 258/338/1 262/342/1 259/339/1
-f 255/335/2 261/341/2 263/343/2
-f 258/338/1 264/344/1 262/342/1
-f 255/335/2 263/343/2 265/345/2
-f 258/338/1 266/346/1 264/344/1
-f 255/335/2 265/345/2 267/347/2
-f 258/338/1 268/348/1 266/346/1
-f 255/335/2 267/347/2 269/349/2
-f 258/338/1 270/350/1 268/348/1
-f 255/335/2 269/349/2 271/351/2
-f 258/338/1 272/352/1 270/350/1
-f 255/335/2 271/351/2 273/353/2
-f 258/338/1 274/354/1 272/352/1
-f 255/335/2 273/353/2 275/355/2
-f 258/338/1 276/356/1 274/354/1
-f 255/335/2 275/355/2 277/357/2
-f 258/338/1 278/358/1 276/356/1
-f 255/335/2 277/357/2 279/359/2
-f 258/338/1 280/360/1 278/358/1
-f 255/335/2 279/359/2 256/336/2
-f 258/338/1 260/340/1 280/360/1
-f 260/361/29 259/362/29 257/363/29
-f 259/362/28 262/364/28 261/365/28
-f 262/364/27 264/366/27 263/367/27
-f 264/368/26 266/369/26 265/370/26
-f 266/369/25 268/371/25 267/372/25
-f 268/371/24 270/373/24 269/374/24
-f 270/375/23 272/376/23 271/377/23
-f 272/376/22 274/378/22 273/379/22
-f 274/378/21 276/380/21 275/381/21
-f 276/382/20 278/383/20 277/384/20
-f 278/383/19 280/385/19 279/386/19
-f 280/385/18 260/387/18 256/388/18
-f 281/389/18 282/390/18 283/391/18
-f 284/392/19 281/389/19 285/393/19
-f 286/394/20 284/392/20 287/395/20
-f 288/396/21 286/397/21 289/398/21
-f 290/399/22 288/396/22 291/400/22
-f 292/401/23 290/399/23 293/402/23
-f 294/403/24 292/404/24 295/405/24
-f 296/406/25 294/403/25 297/407/25
-f 298/408/26 296/406/26 299/409/26
-f 300/410/27 298/411/27 301/412/27
-f 302/413/28 300/410/28 303/414/28
-f 282/415/29 302/413/29 304/416/29
-f 305/417/1 282/418/1 281/419/1
-f 306/420/2 285/421/2 283/422/2
-f 305/417/1 281/419/1 284/423/1
-f 306/420/2 287/424/2 285/421/2
-f 305/417/1 284/423/1 286/425/1
-f 306/420/2 289/426/2 287/424/2
-f 305/417/1 286/425/1 288/427/1
-f 306/420/2 291/428/2 289/426/2
-f 305/417/1 288/427/1 290/429/1
-f 306/420/2 293/430/2 291/428/2
-f 305/417/1 290/429/1 292/431/1
-f 306/420/2 295/432/2 293/430/2
-f 305/417/1 292/431/1 294/433/1
-f 306/420/2 297/434/2 295/432/2
-f 305/417/1 294/433/1 296/435/1
-f 306/420/2 299/436/2 297/434/2
-f 305/417/1 296/435/1 298/437/1
-f 306/420/2 301/438/2 299/436/2
-f 305/417/1 298/437/1 300/439/1
-f 306/420/2 303/440/2 301/438/2
-f 305/417/1 300/439/1 302/441/1
-f 306/420/2 304/442/2 303/440/2
-f 305/417/1 302/441/1 282/418/1
-f 306/420/2 283/422/2 304/442/2
-f 149/443/30 150/444/30 307/445/30
-f 148/446/31 149/443/31 308/447/31
-f 148/446/32 309/448/32 310/449/32
-f 147/450/33 145/451/33 311/452/33
-f 147/450/34 312/453/34 313/454/34
-f 146/455/35 313/454/35 314/456/35
-f 145/451/36 140/457/36 315/458/36
-f 144/459/37 310/449/37 316/460/37
-f 143/461/38 314/456/38 317/462/38
-f 150/444/39 142/463/39 318/464/39
-f 142/463/40 135/465/40 319/466/40
-f 141/467/41 316/460/41 320/468/41
-f 140/457/42 138/469/42 321/470/42
-f 139/471/43 317/462/43 322/472/43
-f 128/473/44 323/474/44 321/470/44
-f 132/475/45 137/476/45 320/468/45
-f 130/477/46 136/478/46 322/472/46
-f 134/479/47 324/480/47 319/466/47
-f 133/481/48 325/482/48 324/480/48
-f 126/483/49 326/484/49 325/482/49
-f 131/485/50 132/475/50 327/486/50
-f 125/487/51 131/485/51 328/488/51
-f 129/489/52 130/477/52 329/490/52
-f 123/491/53 129/489/53 330/492/53
-f 127/493/54 331/494/54 323/474/54
-f 124/495/55 332/496/55 331/494/55
-f 126/483/56 125/487/56 333/497/56
-f 123/491/57 334/498/57 332/496/57
-f 335/499/2 336/500/2 337/501/2
-f 338/502/2 337/503/2 339/504/2
-f 339/505/2 340/506/2 341/507/2
-f 342/508/1 343/509/1 344/510/1
-f 344/511/1 345/512/1 346/513/1
-f 345/514/1 347/515/1 348/516/1
-f 349/517/1 350/518/1 343/519/1
-f 340/520/2 351/521/2 352/522/2
-f 347/523/1 353/524/1 354/525/1
-f 355/526/2 356/527/2 336/528/2
-f 357/529/2 358/530/2 356/531/2
-f 351/532/2 359/533/2 360/534/2
-f 361/535/1 362/536/1 350/537/1
-f 353/538/1 363/539/1 364/540/1
-f 365/541/1 362/542/1 361/543/1
-f 360/544/2 359/545/2 366/546/2
-f 364/547/1 363/548/1 367/549/1
-f 368/550/2 358/551/2 357/552/2
-f 369/553/2 368/554/2 370/555/2
-f 371/556/2 369/557/2 372/558/2
-f 373/559/2 366/560/2 374/561/2
-f 375/562/2 374/563/2 376/564/2
-f 377/565/1 367/566/1 378/567/1
-f 379/568/1 378/569/1 380/570/1
-f 381/571/1 365/572/1 382/573/1
-f 383/574/1 381/575/1 384/576/1
-f 385/577/2 376/578/2 371/579/2
-f 380/580/1 383/581/1 386/582/1
-f 387/583/58 386/584/58 332/585/58
-f 385/586/59 388/587/59 326/588/59
-f 386/589/60 384/590/60 331/591/60
-f 384/590/61 382/592/61 323/593/61
-f 379/594/62 387/595/62 334/596/62
-f 377/597/63 379/598/63 330/599/63
-f 375/600/60 385/601/60 333/602/60
-f 373/603/61 375/604/61 328/605/61
-f 388/606/62 372/607/62 325/608/62
-f 372/607/63 370/609/63 324/610/63
-f 370/609/64 357/611/64 319/612/64
-f 364/613/64 377/614/64 329/615/64
-f 360/616/65 373/617/65 327/618/65
-f 382/592/65 361/619/65 321/620/65
-f 354/621/66 364/622/66 322/623/66
-f 361/619/67 349/624/67 315/625/67
-f 352/626/67 360/627/67 320/628/67
-f 357/611/66 355/629/66 318/630/66
-f 318/630/68 355/629/68 335/631/68
-f 314/632/68 348/633/68 354/634/68
-f 341/635/69 352/636/69 316/637/69
-f 349/624/69 342/638/69 311/639/69
-f 346/640/70 348/641/70 314/632/70
-f 312/642/71 389/643/71 346/644/71
-f 342/645/72 389/646/72 312/647/72
-f 390/648/72 341/649/72 310/650/72
-f 308/651/71 338/652/71 390/653/71
-f 335/631/73 338/654/73 308/655/73
-f 70/4/1 67/1/1 69/3/1
-f 72/6/1 67/1/1 71/5/1
-f 83/17/1 72/6/1 73/7/1
-f 78/12/2 74/8/2 76/10/2
-f 79/13/2 77/11/2 78/12/2
-f 85/19/2 77/11/2 80/14/2
-f 76/10/2 75/9/2 82/16/2
-f 91/25/1 83/17/1 84/18/1
-f 95/29/2 85/19/2 86/20/2
-f 69/3/1 68/2/1 88/22/1
-f 88/22/1 87/21/1 90/24/1
-f 100/34/1 91/25/1 92/26/1
-f 82/16/2 81/15/2 94/28/2
-f 102/36/2 95/29/2 96/30/2
-f 93/27/2 97/31/2 94/28/2
-f 110/44/1 99/33/1 92/26/1
-f 114/48/2 101/35/2 96/30/2
-f 89/23/1 103/37/1 90/24/1
-f 103/37/1 105/39/1 104/38/1
-f 105/39/1 107/41/1 106/40/1
-f 112/46/1 109/43/1 110/44/1
-f 121/55/1 111/45/1 112/46/1
-f 116/50/2 113/47/2 114/48/2
-f 122/56/2 115/49/2 116/50/2
-f 97/31/2 117/51/2 98/32/2
-f 117/51/2 119/53/2 118/52/2
-f 108/42/1 107/41/1 121/55/1
-f 119/53/2 115/49/2 120/54/2
-f 120/656/3 122/57/3 124/59/3
-f 108/657/3 121/60/3 126/62/3
-f 118/66/4 120/63/4 127/65/4
-f 98/89/5 118/66/5 128/67/5
-f 122/658/6 116/68/6 123/70/6
-f 116/68/8 114/71/8 129/69/8
-f 121/659/4 112/73/4 125/75/4
-f 112/73/5 110/76/5 131/74/5
-f 133/81/6 106/78/6 126/80/6
-f 104/83/7 106/78/7 134/82/7
-f 90/97/9 104/83/9 135/84/9
-f 114/71/9 96/85/9 130/72/9
-f 110/76/10 92/87/10 132/77/10
-f 94/93/10 98/89/10 138/90/10
-f 96/85/11 86/91/11 136/86/11
-f 82/105/12 94/93/12 140/94/12
-f 92/87/12 84/95/12 137/88/12
-f 88/100/11 90/97/11 142/98/11
-f 150/119/13 69/99/13 142/98/13
-f 86/91/13 80/101/13 139/92/13
-f 84/95/14 73/103/14 141/96/14
-f 76/660/14 82/105/14 145/106/14
-f 80/101/15 79/107/15 143/102/15
-f 146/661/16 79/109/16 147/111/16
-f 78/110/17 76/112/17 147/111/17
-f 73/662/17 71/114/17 144/116/17
-f 148/115/16 71/114/16 149/118/16
-f 70/663/15 69/99/15 149/120/15
-f 155/125/18 151/121/18 153/123/18
-f 157/127/19 154/124/19 155/125/19
-f 159/664/20 156/126/20 157/127/20
-f 161/132/21 158/128/21 159/130/21
-f 163/134/22 160/131/22 161/132/22
-f 165/665/23 162/133/23 163/134/23
-f 167/139/24 164/135/24 165/137/24
-f 169/141/25 166/138/25 167/139/25
-f 171/666/26 168/140/26 169/141/26
-f 173/146/27 170/142/27 171/144/27
-f 174/148/28 172/145/28 173/146/28
-f 153/667/29 152/147/29 174/148/29
-f 178/668/29 182/199/29 179/201/29
-f 179/201/28 181/200/28 183/203/28
-f 183/203/27 184/202/27 185/205/27
-f 185/669/26 186/206/26 187/208/26
-f 187/208/25 188/207/25 189/210/25
-f 189/210/24 190/209/24 191/212/24
-f 191/670/23 192/213/23 193/215/23
-f 193/215/22 194/214/22 195/217/22
-f 195/217/21 196/216/21 197/219/21
-f 197/671/20 198/220/20 199/222/20
-f 199/222/19 200/221/19 201/224/19
-f 201/224/18 202/223/18 178/226/18
-f 207/231/18 203/227/18 205/229/18
-f 209/233/19 206/230/19 207/231/19
-f 211/672/20 208/232/20 209/233/20
-f 213/238/21 210/234/21 211/236/21
-f 215/240/22 212/237/22 213/238/22
-f 217/673/23 214/239/23 215/240/23
-f 219/245/24 216/241/24 217/243/24
-f 221/247/25 218/244/25 219/245/25
-f 223/674/26 220/246/26 221/247/26
-f 225/252/27 222/248/27 223/250/27
-f 226/254/28 224/251/28 225/252/28
-f 205/675/29 204/253/29 226/254/29
-f 230/676/29 234/307/29 231/309/29
-f 231/309/28 233/308/28 235/311/28
-f 235/311/27 236/310/27 237/313/27
-f 237/615/26 238/314/26 239/316/26
-f 239/316/25 240/315/25 241/318/25
-f 241/318/24 242/317/24 243/320/24
-f 243/677/23 244/321/23 245/323/23
-f 245/323/22 246/322/22 247/325/22
-f 247/325/21 248/324/21 249/327/21
-f 249/678/20 250/328/20 251/330/20
-f 251/330/19 252/329/19 253/332/19
-f 253/332/18 254/331/18 230/334/18
-f 256/679/29 260/361/29 257/363/29
-f 257/363/28 259/362/28 261/365/28
-f 261/365/27 262/364/27 263/367/27
-f 263/680/26 264/368/26 265/370/26
-f 265/370/25 266/369/25 267/372/25
-f 267/372/24 268/371/24 269/374/24
-f 269/681/23 270/375/23 271/377/23
-f 271/377/22 272/376/22 273/379/22
-f 273/379/21 274/378/21 275/381/21
-f 275/682/20 276/382/20 277/384/20
-f 277/384/19 278/383/19 279/386/19
-f 279/386/18 280/385/18 256/388/18
-f 285/393/18 281/389/18 283/391/18
-f 287/395/19 284/392/19 285/393/19
-f 289/683/20 286/394/20 287/395/20
-f 291/400/21 288/396/21 289/398/21
-f 293/402/22 290/399/22 291/400/22
-f 295/684/23 292/401/23 293/402/23
-f 297/407/24 294/403/24 295/405/24
-f 299/409/25 296/406/25 297/407/25
-f 301/685/26 298/408/26 299/409/26
-f 303/414/27 300/410/27 301/412/27
-f 304/416/28 302/413/28 303/414/28
-f 283/686/29 282/415/29 304/416/29
-f 308/447/74 149/443/74 307/445/74
-f 309/448/75 148/446/75 308/447/75
-f 144/459/76 148/446/76 310/449/76
-f 312/453/77 147/450/77 311/452/77
-f 146/455/78 147/450/78 313/454/78
-f 143/461/79 146/455/79 314/456/79
-f 311/452/80 145/451/80 315/458/80
-f 141/467/81 144/459/81 316/460/81
-f 139/471/82 143/461/82 317/462/82
-f 307/445/83 150/444/83 318/464/83
-f 318/464/84 142/463/84 319/466/84
-f 137/476/85 141/467/85 320/468/85
-f 315/458/86 140/457/86 321/470/86
-f 136/478/87 139/471/87 322/472/87
-f 138/469/88 128/473/88 321/470/88
-f 327/486/89 132/475/89 320/468/89
-f 329/490/90 130/477/90 322/472/90
-f 135/465/91 134/479/91 319/466/91
-f 134/479/92 133/481/92 324/480/92
-f 133/481/93 126/483/93 325/482/93
-f 328/488/94 131/485/94 327/486/94
-f 333/497/95 125/487/95 328/488/95
-f 330/492/96 129/489/96 329/490/96
-f 334/498/97 123/491/97 330/492/97
-f 128/473/98 127/493/98 323/474/98
-f 127/493/99 124/495/99 331/494/99
-f 326/484/100 126/483/100 333/497/100
-f 124/495/101 123/491/101 332/496/101
-f 338/687/2 335/499/2 337/501/2
-f 390/688/2 338/502/2 339/504/2
-f 390/689/2 339/505/2 341/507/2
-f 389/690/1 342/508/1 344/510/1
-f 389/691/1 344/511/1 346/513/1
-f 346/692/1 345/514/1 348/516/1
-f 342/693/1 349/517/1 343/519/1
-f 341/694/2 340/520/2 352/522/2
-f 348/695/1 347/523/1 354/525/1
-f 335/696/2 355/526/2 336/528/2
-f 355/697/2 357/529/2 356/531/2
-f 352/698/2 351/532/2 360/534/2
-f 349/699/1 361/535/1 350/537/1
-f 354/700/1 353/538/1 364/540/1
-f 382/701/1 365/541/1 361/543/1
-f 373/702/2 360/544/2 366/546/2
-f 377/703/1 364/547/1 367/549/1
-f 370/704/2 368/550/2 357/552/2
-f 372/705/2 369/553/2 370/555/2
-f 388/706/2 371/556/2 372/558/2
-f 375/707/2 373/559/2 374/561/2
-f 385/708/2 375/562/2 376/564/2
-f 379/709/1 377/565/1 378/567/1
-f 387/710/1 379/568/1 380/570/1
-f 384/711/1 381/571/1 382/573/1
-f 386/712/1 383/574/1 384/576/1
-f 388/713/2 385/577/2 371/579/2
-f 387/714/1 380/580/1 386/582/1
-f 334/715/59 387/583/59 332/585/59
-f 333/716/59 385/586/59 326/588/59
-f 332/717/60 386/589/60 331/591/60
-f 331/591/61 384/590/61 323/593/61
-f 330/718/62 379/594/62 334/596/62
-f 329/719/63 377/597/63 330/599/63
-f 328/720/60 375/600/60 333/602/60
-f 327/721/102 373/603/102 328/605/102
-f 326/722/62 388/606/62 325/608/62
-f 325/608/63 372/607/63 324/610/63
-f 324/610/64 370/609/64 319/612/64
-f 322/723/64 364/613/64 329/615/64
-f 320/724/65 360/616/65 327/618/65
-f 323/593/65 382/592/65 321/620/65
-f 317/725/66 354/621/66 322/623/66
-f 321/620/67 361/619/67 315/625/67
-f 316/726/67 352/626/67 320/628/67
-f 319/612/66 357/611/66 318/630/66
-f 307/727/68 318/630/68 335/631/68
-f 317/728/68 314/632/68 354/634/68
-f 310/729/69 341/635/69 316/637/69
-f 315/625/69 349/624/69 311/639/69
-f 313/730/73 346/640/73 314/632/73
-f 313/731/71 312/642/71 346/644/71
-f 311/732/72 342/645/72 312/647/72
-f 309/733/72 390/648/72 310/650/72
-f 309/734/71 308/651/71 390/653/71
-f 307/727/73 335/631/73 308/655/73
-s 1
-f 119/735/103 111/736/103 107/737/104
-f 117/738/105 109/739/105 111/740/103
-f 97/741/106 99/742/106 109/739/105
-f 101/743/107 113/744/108 105/745/108
-f 115/746/104 107/747/104 105/745/108
-f 103/748/107 89/749/109 102/750/109
-f 99/742/106 97/741/106 93/751/110
-f 93/751/110 81/752/111 91/753/111
-f 89/749/109 87/754/112 95/755/112
-f 95/755/112 87/754/112 68/756/113
-f 81/752/111 75/757/114 83/758/114
-f 75/759/114 74/760/115 72/761/115
-f 68/756/113 67/762/116 77/763/116
-f 77/764/116 67/765/116 72/761/115
-f 383/766/117 380/767/118 371/768/118
-f 381/769/119 383/770/117 376/771/117
-f 365/772/120 381/773/119 374/774/119
-f 369/775/121 378/776/121 367/777/122
-f 380/778/118 378/779/121 369/780/121
-f 358/781/123 368/782/122 367/783/122
-f 362/784/124 365/785/120 366/786/120
-f 362/787/124 359/788/124 351/789/125
-f 358/728/123 363/790/123 353/791/126
-f 336/792/127 356/793/126 353/794/126
-f 350/795/125 351/796/125 340/797/128
-f 343/798/128 340/799/128 339/800/129
-f 336/801/127 347/802/127 345/803/130
-f 339/804/129 337/805/130 345/806/130
-f 115/807/104 119/735/103 107/737/104
-f 119/808/103 117/738/105 111/740/103
-f 117/738/105 97/741/106 109/739/105
-f 103/748/107 101/743/107 105/745/108
-f 113/744/108 115/746/104 105/745/108
-f 101/743/107 103/748/107 102/750/109
-f 100/809/110 99/742/106 93/751/110
-f 100/809/110 93/751/110 91/753/111
-f 102/750/109 89/749/109 95/755/112
-f 85/810/113 95/755/112 68/756/113
-f 91/753/111 81/752/111 83/758/114
-f 83/811/114 75/759/114 72/761/115
-f 85/810/113 68/756/113 77/763/116
-f 74/760/115 77/764/116 72/761/115
-f 376/812/117 383/766/117 371/768/118
-f 374/813/119 381/769/119 376/771/117
-f 366/814/120 365/772/120 374/774/119
-f 368/815/122 369/775/121 367/777/122
-f 371/816/118 380/778/118 369/780/121
-f 363/817/123 358/781/123 367/783/122
-f 359/818/124 362/784/124 366/786/120
-f 350/819/125 362/787/124 351/789/125
-f 356/820/126 358/728/123 353/791/126
-f 347/821/127 336/792/127 353/794/126
-f 343/822/128 350/795/125 340/797/128
-f 344/823/129 343/798/128 339/800/129
-f 337/824/130 336/801/127 345/803/130
-f 344/666/129 339/804/129 345/806/130
-usemtl Tank_TTread.jpg
-s off
-f 2/825/2 3/826/2 4/827/2
-f 5/828/1 6/829/1 7/830/1
-f 2/825/2 4/827/2 8/831/2
-f 5/828/1 9/832/1 6/829/1
-f 2/825/2 8/831/2 10/833/2
-f 5/828/1 11/834/1 9/832/1
-f 2/825/2 10/833/2 12/835/2
-f 5/828/1 13/836/1 11/834/1
-f 2/825/2 12/835/2 14/837/2
-f 5/828/1 15/838/1 13/836/1
-f 2/825/2 14/837/2 16/839/2
-f 5/828/1 17/840/1 15/838/1
-f 2/825/2 16/839/2 18/841/2
-f 5/828/1 19/842/1 17/840/1
-f 2/825/2 18/841/2 20/843/2
-f 5/828/1 21/844/1 19/842/1
-f 2/825/2 20/843/2 22/845/2
-f 5/828/1 23/846/1 21/844/1
-f 2/825/2 22/845/2 24/847/2
-f 5/828/1 25/848/1 23/846/1
-f 2/825/2 24/847/2 26/849/2
-f 5/828/1 27/850/1 25/848/1
-f 2/825/2 26/849/2 3/826/2
-f 5/828/1 7/830/1 27/850/1
-f 7/851/29 6/852/29 4/853/29
-f 6/852/28 9/854/28 8/855/28
-f 9/854/27 11/856/27 10/857/27
-f 11/858/26 13/859/26 12/860/26
-f 13/859/25 15/861/25 14/862/25
-f 15/861/24 17/863/24 16/864/24
-f 17/865/23 19/866/23 18/867/23
-f 19/866/22 21/868/22 20/869/22
-f 21/868/21 23/870/21 22/871/21
-f 23/872/20 25/873/20 24/874/20
-f 25/873/19 27/875/19 26/876/19
-f 27/875/18 7/877/18 3/878/18
-f 28/879/18 29/880/18 30/881/18
-f 31/882/19 28/879/19 32/883/19
-f 33/884/20 31/882/20 34/885/20
-f 35/886/131 33/735/131 36/887/131
-f 37/888/132 35/886/132 38/889/132
-f 39/890/23 37/888/23 40/891/23
-f 41/892/24 39/893/24 42/778/24
-f 43/894/25 41/892/25 44/895/25
-f 45/896/26 43/894/26 46/897/26
-f 47/898/27 45/899/27 48/900/27
-f 49/901/133 47/898/133 50/902/133
-f 29/736/29 49/901/29 51/903/29
-f 52/904/1 29/905/1 28/906/1
-f 53/907/2 32/908/2 30/905/2
-f 52/904/1 28/906/1 31/909/1
-f 53/907/2 34/910/2 32/908/2
-f 52/904/1 31/909/1 33/911/1
-f 53/907/2 36/912/2 34/910/2
-f 52/904/1 33/911/1 35/913/1
-f 53/907/2 38/914/2 36/912/2
-f 52/904/1 35/913/1 37/915/1
-f 53/907/2 40/916/2 38/914/2
-f 52/904/1 37/915/1 39/917/1
-f 53/907/2 42/918/2 40/916/2
-f 52/904/1 39/917/1 41/919/1
-f 53/907/2 44/920/2 42/918/2
-f 52/904/1 41/919/1 43/921/1
-f 53/907/2 46/922/2 44/920/2
-f 52/904/1 43/921/1 45/923/1
-f 53/907/2 48/924/2 46/922/2
-f 52/904/1 45/923/1 47/925/1
-f 53/907/2 50/926/2 48/924/2
-f 52/904/1 47/925/1 49/927/1
-f 53/907/2 51/928/2 50/926/2
-f 52/904/1 49/927/1 29/905/1
-f 53/907/2 30/905/2 51/928/2
-f 3/929/29 7/851/29 4/853/29
-f 4/853/28 6/852/28 8/855/28
-f 8/855/27 9/854/27 10/857/27
-f 10/930/26 11/858/26 12/860/26
-f 12/860/25 13/859/25 14/862/25
-f 14/862/24 15/861/24 16/864/24
-f 16/931/23 17/865/23 18/867/23
-f 18/867/22 19/866/22 20/869/22
-f 20/869/21 21/868/21 22/871/21
-f 22/932/20 23/872/20 24/874/20
-f 24/874/19 25/873/19 26/876/19
-f 26/876/18 27/875/18 3/878/18
-f 32/883/18 28/879/18 30/881/18
-f 34/885/19 31/882/19 32/883/19
-f 36/933/20 33/884/20 34/885/20
-f 38/889/131 35/886/131 36/887/131
-f 40/891/132 37/888/132 38/889/132
-f 42/934/23 39/890/23 40/891/23
-f 44/895/24 41/892/24 42/778/24
-f 46/897/25 43/894/25 44/895/25
-f 48/935/26 45/896/26 46/897/26
-f 50/902/27 47/898/27 48/900/27
-f 51/903/28 49/901/28 50/902/28
-f 30/936/29 29/736/29 51/903/29
-l 64 66
-l 61 62
-l 57 59
-l 57 58
-l 60 62
-l 55 56
-l 54 56
-l 64 65
diff --git a/contrib/tinks/assets/models/health.mtl b/contrib/tinks/assets/models/health.mtl
deleted file mode 100644
index 31d0923167..0000000000
--- a/contrib/tinks/assets/models/health.mtl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Blender MTL File: 'None'
-# Material Count: 1
-
-newmtl Material.001
-Ns 92.156863
-Ka 0.000000 0.000000 0.000000
-Kd 0.512000 0.004921 0.008399
-Ks 0.500000 0.500000 0.500000
-Ni 1.000000
-d 1.000000
-illum 2
diff --git a/contrib/tinks/assets/models/health.obj b/contrib/tinks/assets/models/health.obj
deleted file mode 100644
index af58c6eb6f..0000000000
--- a/contrib/tinks/assets/models/health.obj
+++ /dev/null
@@ -1,105 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib health.mtl
-o Cube.001
-v -0.000000 0.735494 -0.445086
-v -0.000000 0.735494 -0.445086
-v -0.445086 0.735494 0.000000
-v -0.445086 1.364940 0.000000
-v -0.445086 1.364940 0.000000
-v -0.000000 1.364940 -0.445086
-v -0.000000 1.364940 0.445086
-v 0.445085 1.364940 0.890172
-v 0.890172 1.364940 0.445086
-v -0.000000 0.735494 0.445086
-v -0.000000 1.364940 -0.445086
-v -0.445086 1.364940 -0.890172
-v -0.890172 1.364940 -0.445086
-v 0.445086 0.735494 0.000000
-v 0.890172 0.735494 0.445086
-v 0.445086 0.735494 0.890172
-v 0.445086 1.364940 0.000000
-v -0.445086 0.735494 -0.890172
-v -0.890172 0.735494 -0.445086
-v -0.445086 0.735494 0.000000
-v -0.445086 1.994387 0.000000
-v -0.000000 1.994387 -0.445086
-v -0.000000 1.364940 0.445086
-v 0.445086 1.364940 0.000000
-v -0.000000 1.994387 0.445086
-v 0.445086 1.994387 0.000000
-v -0.000000 0.106047 -0.445086
-v -0.445086 0.106047 0.000000
-v -0.000000 0.735494 0.445086
-v 0.445086 0.735494 0.000000
-v 0.000000 0.106047 0.445086
-v 0.445086 0.106047 -0.000000
-vn 0.000000 0.000000 1.000000
-vn 0.000000 1.000000 0.000000
-vn -0.707100 -0.000000 0.707100
-vn 0.707100 0.000000 -0.707100
-vn 0.707100 0.000000 0.707100
-vn 0.000000 -1.000000 0.000000
-vn -0.707100 0.000000 -0.707100
-usemtl Material.001
-s off
-f 1//1 2//1 3//1
-f 4//1 5//1 6//1
-f 7//2 8//2 9//2
-f 10//3 7//3 4//3
-f 11//2 12//2 13//2
-f 14//4 1//4 11//4
-f 15//5 9//5 8//5
-f 7//3 10//3 16//3
-f 14//4 17//4 9//4
-f 14//6 15//6 16//6
-f 13//7 12//7 18//7
-f 1//4 18//4 12//4
-f 4//3 13//3 19//3
-f 20//6 19//6 18//6
-f 5//7 21//7 22//7
-f 7//1 23//1 5//1
-f 11//1 6//1 24//1
-f 17//1 24//1 23//1
-f 22//2 21//2 25//2
-f 23//3 25//3 21//3
-f 6//4 22//4 26//4
-f 24//5 26//5 25//5
-f 2//7 27//7 28//7
-f 20//1 3//1 29//1
-f 14//1 30//1 2//1
-f 10//1 29//1 30//1
-f 31//6 28//6 27//6
-f 3//3 28//3 31//3
-f 30//4 32//4 27//4
-f 29//5 31//5 32//5
-f 20//1 1//1 3//1
-f 11//1 4//1 6//1
-f 17//2 7//2 9//2
-f 20//3 10//3 4//3
-f 4//2 11//2 13//2
-f 17//4 14//4 11//4
-f 16//5 15//5 8//5
-f 8//3 7//3 16//3
-f 15//4 14//4 9//4
-f 10//6 14//6 16//6
-f 19//7 13//7 18//7
-f 11//4 1//4 12//4
-f 20//3 4//3 19//3
-f 1//6 20//6 18//6
-f 6//7 5//7 22//7
-f 4//1 7//1 5//1
-f 17//1 11//1 24//1
-f 7//1 17//1 23//1
-f 26//2 22//2 25//2
-f 5//3 23//3 21//3
-f 24//4 6//4 26//4
-f 23//5 24//5 25//5
-f 3//7 2//7 28//7
-f 10//1 20//1 29//1
-f 1//1 14//1 2//1
-f 14//1 10//1 30//1
-f 32//6 31//6 27//6
-f 29//3 3//3 31//3
-f 2//4 30//4 27//4
-f 30//5 29//5 32//5
diff --git a/contrib/tinks/assets/models/tank-turret.mtl b/contrib/tinks/assets/models/tank-turret.mtl
deleted file mode 100644
index fd0978a1a6..0000000000
--- a/contrib/tinks/assets/models/tank-turret.mtl
+++ /dev/null
@@ -1,12 +0,0 @@
-# Blender MTL File: 'tank.blend'
-# Material Count: 1
-
-newmtl Tank
-Ns 182.352941
-Ka 0.000000 0.000000 0.000000
-Kd 0.500000 0.500000 0.500000
-Ks 0.287480 0.287480 0.287480
-Ni 1.000000
-d 1.000000
-illum 2
-map_Kd textures/tank.jpg
diff --git a/contrib/tinks/assets/models/tank-turret.obj b/contrib/tinks/assets/models/tank-turret.obj
deleted file mode 100644
index 7caa92e4d2..0000000000
--- a/contrib/tinks/assets/models/tank-turret.obj
+++ /dev/null
@@ -1,1524 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: 'tank.blend'
-# www.blender.org
-mtllib tank-turret.mtl
-o TurretGood
-v 0.419920 1.533520 0.039987
-v 0.578663 1.125141 0.039987
-v -0.630130 1.125141 0.039987
-v -0.550758 1.454148 0.039987
-v 0.427865 1.526375 0.407178
-v 0.427865 1.526375 -0.327203
-v 0.553872 1.125141 0.436982
-v 0.553872 1.125141 -0.357007
-v -0.646069 1.125141 0.442972
-v -0.646069 1.125141 -0.362997
-v -0.542889 1.447003 0.416144
-v -0.542889 1.447003 -0.336170
-v -0.281382 1.125141 0.039987
-v -0.281382 1.496669 0.039987
-v -0.304151 1.125141 0.570630
-v -0.304151 1.125141 -0.490655
-v -0.322006 1.489524 0.454523
-v -0.322006 1.489524 -0.374548
-v -0.031969 1.125141 0.039987
-v -0.046142 1.499503 0.039987
-v -0.015177 1.125141 0.597432
-v -0.015177 1.125141 -0.517458
-v -0.029350 1.492358 0.468231
-v -0.029350 1.492358 -0.388257
-v -0.087228 1.397759 0.501078
-v -0.087228 1.397759 -0.421104
-v -0.061692 1.161871 0.582779
-v -0.061692 1.161871 -0.502804
-v -0.284774 1.397317 0.501497
-v -0.284774 1.397317 -0.421522
-v -0.270435 1.161871 0.585677
-v -0.270435 1.161871 -0.505702
-v -0.271071 1.208782 0.598324
-v -0.271071 1.208782 -0.518349
-v -0.274696 1.406372 0.538974
-v -0.274696 1.406372 -0.458999
-v -0.083160 1.208782 0.599715
-v -0.083160 1.208782 -0.519740
-v -0.085086 1.409206 0.535606
-v -0.085086 1.409206 -0.455631
-v -0.034956 1.540087 0.468506
-v -0.034956 1.540087 -0.388532
-v -0.051748 1.540087 0.039987
-v -0.322691 1.522043 0.454798
-v -0.322691 1.522043 -0.374823
-v -0.282067 1.522043 0.039987
-v 0.427180 1.555506 0.407453
-v 0.427180 1.555506 -0.327479
-v 0.419235 1.555506 0.039987
-v 0.273347 1.125141 0.039987
-v 0.186889 1.516512 0.039987
-v 0.269348 1.125141 0.531492
-v 0.269348 1.125141 -0.451517
-v 0.199257 1.509367 0.437705
-v 0.199257 1.509367 -0.357730
-v 0.196112 1.547797 0.437980
-v 0.196112 1.547797 -0.358005
-v 0.183743 1.547797 0.039987
-v -0.565638 1.322654 0.053342
-v -0.565638 1.325310 0.039987
-v -0.565638 1.322654 0.026633
-v -0.588435 1.313211 0.026633
-v -0.590313 1.315089 0.039987
-v -0.588435 1.313211 0.053342
-v -0.597877 1.290414 0.053342
-v -0.600534 1.290414 0.039987
-v -0.597877 1.290414 0.026633
-v -0.588435 1.267617 0.026633
-v -0.590313 1.265739 0.039987
-v -0.588435 1.267617 0.053342
-v -0.565638 1.258174 0.053342
-v -0.565638 1.255518 0.039987
-v -0.565638 1.258174 0.026633
-v -0.562221 1.245399 -0.035261
-v -0.562221 1.205004 -0.028828
-v -0.563417 1.178013 -0.007662
-v -0.563417 1.168535 0.039987
-v -0.563417 1.178013 0.087636
-v -0.567005 1.205004 0.106306
-v -0.567005 1.245399 0.114991
-v -0.600698 1.259355 0.114991
-v -0.629262 1.230792 0.106306
-v -0.644759 1.211706 0.087636
-v -0.644759 1.211706 -0.007662
-v -0.624477 1.230792 -0.028828
-v -0.595914 1.259355 -0.035261
-v -0.562221 1.293048 -0.037519
-v -0.609870 1.293048 -0.035261
-v -0.650265 1.293048 -0.028828
-v -0.678452 1.293048 -0.007662
-v -0.678452 1.293048 0.087636
-v -0.655049 1.293048 0.106306
-v -0.614654 1.293048 0.114991
-v -0.600698 1.326741 0.114991
-v -0.629262 1.355305 0.106306
-v -0.644759 1.374390 0.087636
-v -0.644759 1.374390 -0.007662
-v -0.624477 1.355305 -0.028828
-v -0.595914 1.326741 -0.035261
-v -0.562221 1.340697 -0.035261
-v -0.562221 1.381092 -0.028828
-v -0.563417 1.408083 -0.007662
-v -0.563417 1.417562 0.039987
-v -0.563417 1.408083 0.087636
-v -0.567005 1.381092 0.106306
-v -0.567005 1.340697 0.114991
-v -0.567005 1.293048 0.118041
-vt 0.433371 0.806080
-vt 0.424622 0.869117
-vt 0.509902 0.922464
-vt 0.545851 0.806258
-vt 0.509959 0.690350
-vt 0.154589 0.936713
-vt 0.226463 0.884956
-vt 0.215608 0.805892
-vt 0.154952 0.674936
-vt 0.113790 0.805764
-vt 0.273567 0.889914
-vt 0.226652 0.726961
-vt 0.273698 0.722205
-vt 0.964354 0.742104
-vt 0.933621 0.646860
-vt 0.823034 0.646233
-vt 0.712842 0.636874
-vt 0.673636 0.728953
-vt 0.272324 0.805929
-vt 0.968115 0.821594
-vt 0.818713 0.741766
-vt 0.662714 0.807780
-vt 0.340573 0.902891
-vt 0.327537 0.923885
-vt 0.333952 0.988220
-vt 0.340944 0.709543
-vt 0.346258 0.612151
-vt 0.334621 0.624095
-vt 0.279125 0.915836
-vt 0.279401 0.696278
-vt 0.345541 1.000219
-vt 0.273806 0.979377
-vt 0.263070 0.624063
-vt 0.274408 0.632658
-vt 0.262430 0.987916
-vt 0.280636 0.967275
-vt 0.287673 0.924288
-vt 0.288004 0.687853
-vt 0.325261 0.975086
-vt 0.281180 0.644799
-vt 0.319422 0.931799
-vt 0.327957 0.688454
-vt 0.319860 0.680484
-vt 0.325876 0.637191
-vt 0.339491 0.893399
-vt 0.283073 0.882461
-vt 0.283161 0.729714
-vt 0.604639 0.655553
-vt 0.605846 0.593879
-vt 0.597852 0.593549
-vt 0.286541 0.806871
-vt 0.286457 0.804691
-vt 0.422362 0.806774
-vt 0.422413 0.805169
-vt 0.424693 0.743434
-vt 0.331541 0.809010
-vt 0.331303 0.803334
-vt 0.339823 0.719042
-vt 0.387115 0.891807
-vt 0.435622 0.977650
-vt 0.387479 0.720839
-vt 0.436094 0.635206
-vt 0.946527 0.898717
-vt 0.811839 0.893722
-vt 0.808056 0.977357
-vt 0.677251 0.886536
-vt 0.699615 0.965647
-vt 0.815622 0.810087
-vt 0.383817 0.884107
-vt 0.418935 0.865660
-vt 0.419038 0.746861
-vt 0.597093 0.777829
-vt 0.599721 0.716621
-vt 0.591524 0.715735
-vt 0.594009 0.654003
-vt 0.377020 0.809715
-vt 0.384186 0.728515
-vt 0.376913 0.803939
-vt 0.167670 0.807436
-vt 0.168033 0.807436
-vt 0.168033 0.807799
-vt 0.167670 0.807799
-vt 0.917112 0.975485
-vt 0.589038 0.777465
-vn 0.954300 0.298600 -0.014800
-vn 0.930500 0.361700 -0.058100
-vn -0.951300 0.307100 0.025700
-vn -0.971400 0.234300 0.038400
-vn -0.196200 0.143700 0.970000
-vn -0.196200 0.143700 -0.970000
-vn -0.000000 -1.000000 -0.000000
-vn -0.155900 0.987800 0.001700
-vn -0.192800 0.981000 -0.022700
-vn 0.001100 0.327400 0.944900
-vn -0.036200 0.330400 -0.943100
-vn -0.046300 0.438500 0.897500
-vn -0.046300 0.438500 -0.897500
-vn 0.012800 0.384500 0.923000
-vn -0.087900 -0.307500 -0.947500
-vn -0.587000 0.219500 0.779300
-vn -0.587000 0.219500 -0.779300
-vn -0.999800 -0.015800 0.008400
-vn -0.967100 0.031400 -0.252500
-vn -0.007000 -0.342400 0.939500
-vn 0.013400 -0.260100 -0.965500
-vn -0.018600 0.973000 -0.230100
-vn -0.002800 0.949200 0.314500
-vn 0.993200 0.077300 -0.087200
-vn 0.993200 0.077300 0.087200
-vn -0.007100 0.287500 0.957700
-vn 0.012400 0.304700 -0.952400
-vn -0.046900 -0.011300 0.998800
-vn -0.046700 -0.009400 -0.998900
-vn 0.000000 0.000000 -1.000000
-vn -0.995000 -0.020100 -0.097400
-vn -0.994800 -0.026800 0.098000
-vn 0.999300 0.031100 -0.021000
-vn 0.999300 0.031100 0.021000
-vn -0.062700 0.998000 0.002500
-vn -0.062700 0.998000 -0.002500
-vn 0.302800 0.277800 0.911700
-vn 0.123300 0.112000 -0.986000
-vn 0.213000 0.331600 0.919100
-vn 0.109400 0.254500 -0.960900
-vn 0.130900 0.003600 0.991400
-vn 0.131600 0.009700 -0.991200
-vn 0.132800 -0.006200 0.991100
-vn 0.132800 -0.006200 -0.991100
-vn -0.032700 0.999500 0.001000
-vn -0.032700 0.999500 -0.001000
-vn -0.032700 0.999500 0.001300
-vn -0.032700 0.999500 -0.001300
-vn -0.999700 0.024100 0.004800
-vn -0.999700 0.024100 -0.004800
-vn -0.153900 0.371500 0.915600
-vn -0.153900 0.371500 -0.915600
-vn -0.382300 0.158400 -0.910400
-vn -0.382300 0.158400 0.910400
-vn -0.390900 -0.161900 0.906100
-vn -0.390900 -0.161900 -0.906100
-vn -0.162300 -0.391900 -0.905600
-vn -0.999700 -0.025500 0.005100
-vn -0.999700 -0.025500 -0.005100
-vn -0.162300 -0.391900 0.905600
-vn 0.930500 0.361700 0.058100
-vn 0.954300 0.298600 0.014800
-vn -0.971400 0.234300 -0.038400
-vn -0.951300 0.307100 -0.025700
-vn -0.336700 0.270900 0.901800
-vn -0.336700 0.270900 -0.901800
-vn -0.192800 0.981000 0.022700
-vn -0.155900 0.987800 -0.001700
-vn -0.036200 0.330400 0.943100
-vn 0.001100 0.327400 -0.944900
-vn 0.001300 0.327300 0.944900
-vn 0.001300 0.327300 -0.944900
-vn -0.087900 -0.307500 0.947500
-vn 0.012800 0.384500 -0.923000
-vn -0.387700 0.289300 0.875200
-vn -0.387700 0.289300 -0.875200
-vn -0.967100 0.031400 0.252500
-vn -0.999800 -0.015800 -0.008400
-vn 0.013400 -0.260100 0.965500
-vn -0.007000 -0.342400 -0.939500
-vn -0.002800 0.949200 -0.314500
-vn -0.018600 0.973000 0.230100
-vn 0.821600 0.180800 0.540600
-vn 0.821600 0.180800 -0.540600
-vn 0.012400 0.304700 0.952400
-vn -0.007100 0.287500 -0.957700
-vn -0.046700 -0.009400 0.998900
-vn -0.046900 -0.011300 -0.998800
-vn -0.994800 -0.026800 -0.098000
-vn -0.995000 -0.020100 0.097400
-vn 0.999500 0.023700 -0.021600
-vn 0.999500 0.023700 0.021600
-vn -0.078100 0.996900 -0.007700
-vn -0.078100 0.996900 0.007700
-vn 0.123300 0.112000 0.986000
-vn 0.302800 0.277800 -0.911700
-vn 0.109400 0.254500 0.960900
-vn 0.213000 0.331600 -0.919100
-vn 0.131600 0.009700 0.991200
-vn 0.130900 0.003600 -0.991400
-vn -0.033300 0.999400 0.000700
-vn -0.033300 0.999400 -0.000700
-vn -0.033200 0.999400 0.001000
-vn -0.033200 0.999400 -0.001000
-vn -0.376400 -0.908700 -0.180700
-vn -0.382700 -0.923900 0.000000
-vn -0.707100 -0.707100 0.000000
-vn -0.376400 -0.908700 0.180700
-vn -0.693500 -0.693500 0.195100
-vn -0.980800 0.000000 0.195100
-vn -0.693500 -0.693500 -0.195100
-vn -1.000000 0.000000 0.000000
-vn -0.980800 0.000000 -0.195100
-vn -0.707100 0.707100 0.000000
-vn -0.693500 0.693500 0.195100
-vn -0.376400 0.908700 0.180700
-vn -0.382700 0.923900 0.000000
-vn -0.693500 0.693500 -0.195100
-vn -0.033500 -0.000000 -0.999400
-vn -0.048000 -0.115900 -0.992100
-vn -0.082100 -0.082100 -0.993200
-vn -0.180500 -0.435800 -0.881800
-vn -0.245000 -0.591500 -0.768100
-vn -0.429900 -0.426000 -0.796100
-vn -0.237700 -0.573700 0.783800
-vn -0.185600 -0.448000 0.874500
-vn -0.334200 -0.319200 0.886700
-vn -0.064200 -0.155100 0.985800
-vn -0.109900 -0.109900 0.987800
-vn -0.045200 0.000000 0.999000
-vn -0.155400 0.000000 0.987800
-vn -0.421900 -0.435300 0.795300
-vn -0.472500 0.000000 0.881300
-vn -0.310300 -0.314700 -0.897000
-vn -0.600500 -0.000000 -0.799600
-vn -0.116100 0.000000 -0.993200
-vn -0.082100 0.082100 -0.993200
-vn -0.438700 0.000000 -0.898600
-vn -0.310300 0.314700 -0.897000
-vn -0.421900 0.435300 0.795300
-vn -0.623600 -0.000000 0.781700
-vn -0.334200 0.319200 0.886700
-vn -0.109900 0.109900 0.987800
-vn -0.064200 0.155100 0.985800
-vn -0.185600 0.448100 0.874500
-vn -0.237700 0.573800 0.783800
-vn -0.180500 0.435800 -0.881800
-vn -0.429900 0.426000 -0.796100
-vn -0.048000 0.115900 -0.992100
-vn -0.376400 0.908700 -0.180700
-vn -0.245000 0.591500 -0.768200
-usemtl Tank
-s off
-f 1/1/1 5/2/1 7/3/1
-f 1/1/2 2/4/2 8/5/2
-f 9/6/3 11/7/3 4/8/3
-f 10/9/4 3/10/4 4/8/4
-f 17/11/5 11/7/5 9/6/5
-f 10/9/6 12/12/6 18/13/6
-f 15/14/7 9/15/7 3/16/7
-f 3/16/7 10/17/7 16/18/7
-f 17/11/8 14/19/8 4/8/8
-f 18/13/9 12/12/9 4/8/9
-f 21/20/7 15/14/7 13/21/7
-f 13/21/7 16/18/7 22/22/7
-f 23/23/10 25/24/10 27/25/10
-f 24/26/11 22/27/11 28/28/11
-f 23/23/12 17/11/12 29/29/12
-f 30/30/13 18/13/13 24/26/13
-f 21/31/14 27/25/14 31/32/14
-f 22/27/15 16/33/15 32/34/15
-f 17/11/16 15/35/16 31/32/16
-f 32/34/17 16/33/17 18/13/17
-f 31/32/18 33/36/18 35/37/18
-f 32/34/19 30/30/19 36/38/19
-f 27/25/20 37/39/20 33/36/20
-f 28/28/21 32/34/21 34/40/21
-f 29/29/22 35/37/22 39/41/22
-f 30/30/23 26/42/23 40/43/23
-f 27/25/24 25/24/24 39/41/24
-f 40/43/25 26/42/25 28/28/25
-f 35/37/26 33/36/26 37/39/26
-f 36/38/27 40/43/27 38/44/27
-f 23/23/28 41/45/28 44/46/28
-f 24/26/29 18/13/29 45/47/29
-f 20/48/30 14/49/30 46/50/30
-f 17/11/31 44/46/31 46/51/31
-f 18/13/32 14/19/32 46/52/32
-f 5/2/33 1/1/33 49/53/33
-f 49/54/34 1/1/34 6/55/34
-f 44/46/35 41/45/35 43/56/35
-f 43/57/36 42/58/36 45/47/36
-f 54/59/37 52/60/37 7/3/37
-f 55/61/38 6/55/38 8/5/38
-f 23/23/39 21/31/39 52/60/39
-f 24/26/40 55/61/40 53/62/40
-f 52/63/7 50/64/7 2/65/7
-f 53/66/7 8/67/7 2/65/7
-f 21/20/7 19/68/7 50/64/7
-f 22/22/7 53/66/7 50/64/7
-f 54/59/41 56/69/41 41/45/41
-f 55/61/42 24/26/42 42/58/42
-f 54/59/43 5/2/43 47/70/43
-f 48/71/44 6/55/44 55/61/44
-f 1/72/30 51/73/30 58/74/30
-f 51/73/30 20/48/30 43/75/30
-f 49/53/45 58/76/45 56/69/45
-f 57/77/46 58/78/46 49/54/46
-f 58/76/47 43/56/47 41/45/47
-f 42/58/48 43/57/48 58/78/48
-f 59/79/49 104/80/49 103/81/49
-f 103/82/50 102/79/50 61/80/50
-f 102/82/51 97/79/51 62/80/51
-f 64/79/52 96/80/52 104/81/52
-f 96/79/53 64/80/53 65/81/53
-f 97/82/54 90/79/54 67/80/54
-f 90/82/55 84/79/55 68/80/55
-f 91/79/56 65/80/56 70/81/56
-f 78/82/57 83/79/57 70/80/57
-f 78/79/58 71/80/58 72/81/58
-f 76/82/59 77/79/59 72/80/59
-f 76/79/60 73/80/60 68/81/60
-f 2/4/61 1/1/61 7/3/61
-f 6/55/62 1/1/62 8/5/62
-f 3/10/63 9/6/63 4/8/63
-f 12/12/64 10/9/64 4/8/64
-f 15/35/65 17/11/65 9/6/65
-f 16/33/66 10/9/66 18/13/66
-f 13/21/7 15/14/7 3/16/7
-f 13/21/7 3/16/7 16/18/7
-f 11/7/67 17/11/67 4/8/67
-f 14/19/68 18/13/68 4/8/68
-f 19/68/7 21/20/7 13/21/7
-f 19/68/7 13/21/7 22/22/7
-f 21/31/69 23/23/69 27/25/69
-f 26/42/70 24/26/70 28/28/70
-f 25/24/71 23/23/71 29/29/71
-f 26/42/72 30/30/72 24/26/72
-f 15/35/73 21/31/73 31/32/73
-f 28/28/74 22/27/74 32/34/74
-f 29/29/75 17/11/75 31/32/75
-f 30/30/76 32/34/76 18/13/76
-f 29/29/77 31/32/77 35/37/77
-f 34/40/78 32/34/78 36/38/78
-f 31/32/79 27/25/79 33/36/79
-f 38/44/80 28/28/80 34/40/80
-f 25/24/81 29/29/81 39/41/81
-f 36/38/82 30/30/82 40/43/82
-f 37/39/83 27/25/83 39/41/83
-f 38/44/84 40/43/84 28/28/84
-f 39/41/85 35/37/85 37/39/85
-f 34/40/86 36/38/86 38/44/86
-f 17/11/87 23/23/87 44/46/87
-f 42/58/88 24/26/88 45/47/88
-f 43/75/30 20/48/30 46/50/30
-f 14/19/89 17/11/89 46/51/89
-f 45/47/90 18/13/90 46/52/90
-f 47/70/91 5/2/91 49/53/91
-f 48/71/92 49/54/92 6/55/92
-f 46/51/93 44/46/93 43/56/93
-f 46/52/94 43/57/94 45/47/94
-f 5/2/95 54/59/95 7/3/95
-f 53/62/96 55/61/96 8/5/96
-f 54/59/97 23/23/97 52/60/97
-f 22/27/98 24/26/98 53/62/98
-f 7/83/7 52/63/7 2/65/7
-f 50/64/7 53/66/7 2/65/7
-f 52/63/7 21/20/7 50/64/7
-f 19/68/7 22/22/7 50/64/7
-f 23/23/99 54/59/99 41/45/99
-f 57/77/100 55/61/100 42/58/100
-f 56/69/41 54/59/41 47/70/41
-f 57/77/100 48/71/100 55/61/100
-f 49/84/30 1/72/30 58/74/30
-f 58/74/30 51/73/30 43/75/30
-f 47/70/101 49/53/101 56/69/101
-f 48/71/102 57/77/102 49/54/102
-f 56/69/103 58/76/103 41/45/103
-f 57/77/104 42/58/104 58/78/104
-f 60/82/49 59/79/49 103/81/49
-f 60/81/50 103/82/50 61/80/50
-f 61/81/51 102/82/51 62/80/51
-f 59/82/52 64/79/52 104/81/52
-f 91/82/53 96/79/53 65/81/53
-f 62/81/54 97/82/54 67/80/54
-f 67/81/55 90/82/55 68/80/55
-f 83/82/56 91/79/56 70/81/56
-f 71/81/57 78/82/57 70/80/57
-f 77/82/58 78/79/58 72/81/58
-f 73/81/59 76/82/59 72/80/59
-f 84/82/60 76/79/60 68/81/60
-s 1
-f 73/79/105 72/80/106 69/81/107
-f 72/79/106 71/80/108 70/81/109
-f 69/79/107 70/80/109 65/81/110
-f 68/79/111 69/80/107 66/81/112
-f 67/79/113 66/80/112 63/81/114
-f 63/82/114 66/79/112 65/80/110
-f 64/82/115 59/79/116 60/80/117
-f 62/79/118 63/80/114 60/81/117
-f 87/82/119 74/79/120 86/80/121
-f 86/82/121 74/79/120 75/80/122
-f 75/79/122 76/80/123 84/81/124
-f 78/79/125 79/80/126 82/81/127
-f 79/79/126 80/80/128 81/81/129
-f 81/82/129 80/79/128 107/80/130
-f 93/82/131 81/79/129 107/80/130
-f 82/79/127 81/80/129 93/81/131
-f 83/79/132 82/80/127 92/81/133
-f 85/79/134 84/80/124 90/81/135
-f 88/82/136 86/79/121 85/80/134
-f 87/82/119 86/79/121 88/80/136
-f 87/82/119 88/79/136 99/80/137
-f 99/82/137 88/79/136 89/80/138
-f 98/82/139 89/79/138 90/80/135
-f 96/82/140 91/79/141 92/80/133
-f 95/82/142 92/79/133 93/80/131
-f 94/82/143 93/79/131 107/80/130
-f 106/82/144 94/79/143 107/80/130
-f 105/82/145 95/79/142 94/80/143
-f 104/82/146 96/79/140 95/80/142
-f 101/82/147 98/79/139 97/80/148
-f 99/79/137 98/80/139 101/81/147
-f 87/82/119 99/79/137 100/80/149
-f 68/82/111 73/79/105 69/81/107
-f 69/82/107 72/79/106 70/81/109
-f 66/82/112 69/79/107 65/81/110
-f 67/82/113 68/79/111 66/81/112
-f 62/82/118 67/79/113 63/81/114
-f 64/81/115 63/82/114 65/80/110
-f 63/81/114 64/82/115 60/80/117
-f 61/82/150 62/79/118 60/81/117
-f 85/81/134 86/82/121 75/80/122
-f 85/82/134 75/79/122 84/81/124
-f 83/82/132 78/79/125 82/81/127
-f 82/82/127 79/79/126 81/81/129
-f 92/82/133 82/79/127 93/81/131
-f 91/82/141 83/79/132 92/81/133
-f 89/82/138 85/79/134 90/81/135
-f 89/81/138 88/82/136 85/80/134
-f 98/81/139 99/82/137 89/80/138
-f 97/81/148 98/82/139 90/80/135
-f 95/81/142 96/82/140 92/80/133
-f 94/81/143 95/82/142 93/80/131
-f 106/81/144 105/82/145 94/80/143
-f 105/81/145 104/82/146 95/80/142
-f 102/81/151 101/82/147 97/80/148
-f 100/82/149 99/79/137 101/81/147
-o GunGood
-v -0.746743 1.269260 0.001090
-v -0.746743 1.251414 -0.010835
-v -0.746743 1.230363 -0.015022
-v -0.746743 1.209312 -0.010835
-v -0.746743 1.191465 0.001090
-v -0.746743 1.179541 0.018936
-v -0.746743 1.175353 0.039987
-v -0.746743 1.179541 0.061039
-v -0.746743 1.191465 0.078885
-v -0.746743 1.209312 0.090810
-v -0.746743 1.230363 0.094997
-v -0.746743 1.251414 0.090810
-v -0.746743 1.269260 0.078885
-v -0.746743 1.281185 0.061039
-v -0.746743 1.285372 0.039987
-v -0.746743 1.281185 0.018936
-v -0.541104 1.269260 0.001090
-v -0.541104 1.251414 -0.010835
-v -0.541104 1.230363 -0.015022
-v -0.541104 1.209311 -0.010835
-v -0.541104 1.191465 0.001090
-v -0.541104 1.179541 0.018936
-v -0.541104 1.175353 0.039987
-v -0.541104 1.179541 0.061039
-v -0.541104 1.191465 0.078885
-v -0.541104 1.209312 0.090810
-v -0.541104 1.230363 0.094997
-v -0.541104 1.251414 0.090810
-v -0.541104 1.269260 0.078885
-v -0.541104 1.281185 0.061038
-v -0.541104 1.285372 0.039987
-v -0.541104 1.281185 0.018936
-v -0.765867 1.268869 0.024038
-v -0.765867 1.272041 0.039987
-v -0.765867 1.268869 0.055937
-v -0.765867 1.259834 0.069458
-v -0.765867 1.246312 0.078493
-v -0.765867 1.230363 0.081666
-v -0.765867 1.214413 0.078493
-v -0.765867 1.200892 0.069458
-v -0.765867 1.191857 0.055937
-v -0.765867 1.188684 0.039987
-v -0.765867 1.191857 0.024038
-v -0.765867 1.200892 0.010516
-v -0.765867 1.214413 0.001481
-v -0.765867 1.230363 -0.001691
-v -0.765867 1.246312 0.001481
-v -0.765867 1.259834 0.010516
-v -0.825971 1.259834 0.010516
-v -0.825971 1.246312 0.001481
-v -0.825971 1.230363 -0.001691
-v -0.825971 1.214413 0.001481
-v -0.825971 1.200892 0.010516
-v -0.825971 1.191857 0.024038
-v -0.825971 1.188684 0.039987
-v -0.825971 1.191857 0.055937
-v -0.825971 1.200892 0.069458
-v -0.825971 1.214413 0.078493
-v -0.825971 1.230363 0.081666
-v -0.825971 1.246312 0.078493
-v -0.825971 1.259834 0.069458
-v -0.825971 1.268869 0.055937
-v -0.825971 1.272041 0.039987
-v -0.825971 1.268869 0.024038
-v -0.826014 1.249942 0.031877
-v -0.826014 1.251555 0.039987
-v -0.826014 1.249942 0.048097
-v -0.826014 1.245348 0.054973
-v -0.826014 1.238473 0.059566
-v -0.826014 1.230363 0.061180
-v -0.826014 1.222253 0.059566
-v -0.826014 1.215378 0.054973
-v -0.826014 1.210784 0.048097
-v -0.826014 1.209171 0.039987
-v -0.826014 1.210784 0.031877
-v -0.826014 1.215378 0.025002
-v -0.826014 1.222253 0.020408
-v -0.826014 1.230363 0.018795
-v -0.826014 1.238473 0.020408
-v -0.826014 1.245348 0.025002
-v -1.489500 1.246625 0.026457
-v -1.489500 1.240417 0.022309
-v -1.489500 1.233095 0.020853
-v -1.489500 1.225772 0.022309
-v -1.489500 1.219564 0.026457
-v -1.489500 1.215417 0.032665
-v -1.489500 1.213960 0.039987
-v -1.489500 1.215417 0.047310
-v -1.489500 1.219564 0.053518
-v -1.489500 1.225772 0.057665
-v -1.489500 1.233095 0.059122
-v -1.489500 1.240417 0.057665
-v -1.489500 1.246625 0.053518
-v -1.489500 1.250773 0.047310
-v -1.489500 1.252229 0.039987
-v -1.489500 1.250773 0.032665
-v -1.489500 1.253995 0.031330
-v -1.489500 1.255717 0.039987
-v -1.489500 1.253995 0.048644
-v -1.489500 1.249091 0.055983
-v -1.489500 1.241752 0.060887
-v -1.489500 1.233095 0.062609
-v -1.489500 1.224438 0.060887
-v -1.489500 1.217098 0.055983
-v -1.489500 1.212195 0.048644
-v -1.489500 1.210473 0.039987
-v -1.489500 1.212195 0.031330
-v -1.489500 1.217098 0.023991
-v -1.489500 1.224438 0.019087
-v -1.489500 1.233095 0.017365
-v -1.489500 1.241752 0.019087
-v -1.489500 1.249091 0.023991
-v -1.545155 1.249091 0.023991
-v -1.545155 1.241752 0.019087
-v -1.545155 1.233095 0.017365
-v -1.545155 1.224438 0.019087
-v -1.545155 1.217098 0.023991
-v -1.545155 1.212195 0.031330
-v -1.545155 1.210473 0.039987
-v -1.545155 1.212195 0.048644
-v -1.545155 1.217098 0.055983
-v -1.545155 1.224438 0.060887
-v -1.545155 1.233095 0.062609
-v -1.545155 1.241752 0.060887
-v -1.545155 1.249091 0.055983
-v -1.545155 1.253995 0.048644
-v -1.545155 1.255717 0.039987
-v -1.545155 1.253995 0.031330
-v -1.545155 1.256854 0.030146
-v -1.545155 1.258812 0.039987
-v -1.545155 1.256854 0.049829
-v -1.545155 1.251279 0.058172
-v -1.545155 1.242936 0.063747
-v -1.545155 1.233095 0.065704
-v -1.545155 1.223253 0.063747
-v -1.545155 1.214910 0.058172
-v -1.545155 1.209335 0.049829
-v -1.545155 1.207378 0.039987
-v -1.545155 1.209335 0.030146
-v -1.545155 1.214910 0.021803
-v -1.545155 1.223253 0.016228
-v -1.545155 1.233095 0.014270
-v -1.545155 1.242936 0.016228
-v -1.545155 1.251279 0.021803
-v -1.562309 1.251279 0.021803
-v -1.562309 1.242936 0.016228
-v -1.562309 1.233095 0.014270
-v -1.562309 1.223253 0.016228
-v -1.562309 1.214910 0.021803
-v -1.562309 1.209335 0.030146
-v -1.562309 1.207378 0.039987
-v -1.562309 1.209335 0.049829
-v -1.562309 1.214910 0.058172
-v -1.562309 1.223253 0.063747
-v -1.562309 1.233095 0.065704
-v -1.562309 1.242936 0.063747
-v -1.562309 1.251279 0.058172
-v -1.562309 1.256854 0.049829
-v -1.562309 1.258812 0.039987
-v -1.562309 1.256854 0.030146
-v -1.562309 1.252451 0.031970
-v -1.562309 1.254046 0.039987
-v -1.562309 1.252451 0.048005
-v -1.562309 1.247909 0.054802
-v -1.562309 1.241112 0.059344
-v -1.562309 1.233095 0.060938
-v -1.562309 1.225077 0.059344
-v -1.562309 1.218280 0.054802
-v -1.562309 1.213738 0.048005
-v -1.562309 1.212144 0.039987
-v -1.562309 1.213738 0.031970
-v -1.562309 1.218280 0.025173
-v -1.562309 1.225077 0.020631
-v -1.562309 1.233095 0.019036
-v -1.562309 1.241112 0.020631
-v -1.562309 1.247909 0.025173
-v -1.633594 1.247909 0.025173
-v -1.633594 1.241112 0.020631
-v -1.633594 1.233095 0.019036
-v -1.633594 1.225077 0.020631
-v -1.633594 1.218280 0.025173
-v -1.633594 1.213738 0.031970
-v -1.633594 1.212144 0.039987
-v -1.633594 1.213738 0.048005
-v -1.633594 1.218280 0.054802
-v -1.633594 1.225077 0.059344
-v -1.633594 1.233095 0.060938
-v -1.633594 1.241112 0.059344
-v -1.633594 1.247909 0.054802
-v -1.633594 1.252451 0.048005
-v -1.633594 1.254046 0.039987
-v -1.633594 1.252451 0.031970
-v -1.633594 1.250281 0.032868
-v -1.633594 1.251697 0.039987
-v -1.633594 1.250281 0.047106
-v -1.633594 1.246249 0.053141
-v -1.633594 1.240214 0.057174
-v -1.633594 1.233095 0.058590
-v -1.633594 1.225976 0.057174
-v -1.633594 1.219941 0.053141
-v -1.633594 1.215908 0.047106
-v -1.633594 1.214492 0.039987
-v -1.633594 1.215908 0.032869
-v -1.633594 1.219941 0.026833
-v -1.633594 1.225976 0.022801
-v -1.633594 1.233095 0.021385
-v -1.633594 1.240214 0.022801
-v -1.633594 1.246249 0.026833
-v -1.570405 1.246249 0.026833
-v -1.570405 1.240214 0.022801
-v -1.570405 1.233095 0.021385
-v -1.570405 1.225976 0.022801
-v -1.570405 1.219941 0.026833
-v -1.570405 1.215908 0.032869
-v -1.570405 1.214492 0.039987
-v -1.570405 1.215908 0.047106
-v -1.570405 1.219941 0.053141
-v -1.570405 1.225976 0.057174
-v -1.570405 1.233095 0.058590
-v -1.570405 1.240214 0.057174
-v -1.570405 1.246249 0.053141
-v -1.570405 1.250281 0.047106
-v -1.570405 1.251697 0.039987
-v -1.570405 1.250281 0.032868
-vt 0.261641 0.508683
-vt 0.248339 0.510313
-vt 0.247924 0.503841
-vt 0.260991 0.501928
-vt 0.247449 0.497411
-vt 0.258992 0.488571
-vt 0.260086 0.495305
-vt 0.246040 0.491186
-vt 0.245548 0.485012
-vt 0.255462 0.475074
-vt 0.257446 0.481940
-vt 0.252332 0.467412
-vt 0.243979 0.479425
-vt 0.256867 0.569755
-vt 0.253996 0.576889
-vt 0.244661 0.570621
-vt 0.258847 0.562975
-vt 0.246005 0.565471
-vt 0.246864 0.559852
-vt 0.248200 0.554214
-vt 0.261175 0.549636
-vt 0.260156 0.556261
-vt 0.248423 0.548280
-vt 0.249068 0.542271
-vt 0.262200 0.536133
-vt 0.261754 0.542881
-vt 0.248505 0.536009
-vt 0.248753 0.529659
-vt 0.262332 0.529213
-vt 0.248785 0.523246
-vt 0.262290 0.522347
-vt 0.248637 0.516790
-vt 0.262066 0.515500
-vt 0.198124 0.511772
-vt 0.195630 0.511881
-vt 0.195417 0.505930
-vt 0.197665 0.500143
-vt 0.198081 0.505854
-vt 0.195394 0.500156
-vt 0.195373 0.494420
-vt 0.198001 0.488733
-vt 0.197993 0.494478
-vt 0.198166 0.483243
-vt 0.195583 0.488605
-vt 0.198935 0.478051
-vt 0.195930 0.483014
-vt 0.200514 0.570670
-vt 0.198077 0.571455
-vt 0.197428 0.565317
-vt 0.199776 0.565102
-vt 0.197147 0.559517
-vt 0.199662 0.559415
-vt 0.196995 0.553480
-vt 0.199419 0.547398
-vt 0.199748 0.553435
-vt 0.196995 0.547457
-vt 0.196683 0.541429
-vt 0.199041 0.535228
-vt 0.199466 0.541325
-vt 0.198653 0.529370
-vt 0.196484 0.535303
-vt 0.198693 0.523426
-vt 0.196320 0.529448
-vt 0.196005 0.523527
-vt 0.195889 0.517634
-vt 0.198195 0.517537
-vt 0.157570 0.505507
-vt 0.157789 0.511787
-vt 0.155594 0.511808
-vt 0.157405 0.499394
-vt 0.155544 0.505519
-vt 0.155514 0.499400
-vt 0.155393 0.493101
-vt 0.157517 0.486644
-vt 0.157610 0.493097
-vt 0.155409 0.486608
-vt 0.155535 0.480100
-vt 0.157600 0.480235
-vt 0.156257 0.473199
-vt 0.158575 0.568589
-vt 0.159268 0.575017
-vt 0.157229 0.575675
-vt 0.158485 0.561982
-vt 0.156459 0.568757
-vt 0.158202 0.555452
-vt 0.156188 0.562038
-vt 0.157971 0.549209
-vt 0.156113 0.555476
-vt 0.156081 0.549233
-vt 0.155976 0.543052
-vt 0.158024 0.543023
-vt 0.155897 0.536693
-vt 0.158113 0.536664
-vt 0.155843 0.530347
-vt 0.157878 0.530325
-vt 0.155796 0.524222
-vt 0.157705 0.518082
-vt 0.157655 0.524198
-vt 0.155679 0.518111
-vt 0.145357 0.511543
-vt 0.142141 0.511627
-vt 0.142197 0.505521
-vt 0.145097 0.499325
-vt 0.145192 0.505446
-vt 0.144950 0.492940
-vt 0.141809 0.499397
-vt 0.141386 0.493056
-vt 0.141445 0.486662
-vt 0.144326 0.480001
-vt 0.144617 0.486520
-vt 0.140842 0.480334
-vt 0.139891 0.474051
-vt 0.145084 0.568307
-vt 0.144180 0.575729
-vt 0.140490 0.574388
-vt 0.141473 0.568013
-vt 0.141965 0.561499
-vt 0.145365 0.561590
-vt 0.142335 0.555182
-vt 0.145626 0.548913
-vt 0.145450 0.555227
-vt 0.142142 0.548878
-vt 0.142519 0.542646
-vt 0.145602 0.536546
-vt 0.145563 0.542683
-vt 0.145545 0.530327
-vt 0.142373 0.536518
-vt 0.142235 0.530329
-vt 0.141965 0.524072
-vt 0.145421 0.517748
-vt 0.145510 0.524035
-vt 0.142115 0.517808
-vt 0.095539 0.512813
-vt 0.097353 0.512758
-vt 0.097472 0.518475
-vt 0.095515 0.507243
-vt 0.097070 0.507181
-vt 0.095158 0.501794
-vt 0.096842 0.501711
-vt 0.094679 0.496149
-vt 0.096508 0.496015
-vt 0.094323 0.490502
-vt 0.096009 0.490323
-vt 0.093766 0.485061
-vt 0.095371 0.484799
-vt 0.092760 0.479764
-vt 0.094246 0.479143
-vt 0.094102 0.562743
-vt 0.095831 0.562978
-vt 0.094766 0.568796
-vt 0.094704 0.557200
-vt 0.096372 0.557325
-vt 0.095162 0.551764
-vt 0.096713 0.551854
-vt 0.095299 0.546204
-vt 0.097083 0.546288
-vt 0.095688 0.540660
-vt 0.097238 0.540718
-vt 0.095770 0.535206
-vt 0.097429 0.535259
-vt 0.095835 0.529653
-vt 0.097517 0.529687
-vt 0.095839 0.524080
-vt 0.097529 0.524093
-vt 0.095760 0.518488
-vt 0.242318 0.474202
-vt 0.196639 0.477263
-vt 0.158289 0.473889
-vt 0.143508 0.472889
-vt 0.093081 0.568129
-vt 0.362847 0.505457
-vt 0.362976 0.514476
-vt 0.298749 0.514185
-vt 0.362977 0.523483
-vt 0.298954 0.522206
-vt 0.362849 0.532485
-vt 0.298773 0.530149
-vt 0.362594 0.541481
-vt 0.298587 0.538062
-vt 0.362211 0.550478
-vt 0.298180 0.546075
-vt 0.361700 0.559480
-vt 0.297572 0.554211
-vt 0.361068 0.568492
-vt 0.360332 0.577513
-vt 0.295291 0.570683
-vt 0.359512 0.586553
-vt 0.293662 0.579098
-vt 0.358668 0.595378
-vt 0.359726 0.450783
-vt 0.360491 0.459984
-vt 0.293375 0.465052
-vt 0.361172 0.469148
-vt 0.294857 0.473659
-vt 0.361755 0.478272
-vt 0.296208 0.482030
-vt 0.362230 0.487363
-vt 0.297097 0.490270
-vt 0.362595 0.496423
-vt 0.297746 0.498276
-vt 0.298357 0.506207
-vt 0.288460 0.506886
-vt 0.288033 0.499142
-vt 0.286990 0.491396
-vt 0.285743 0.483561
-vt 0.284654 0.475565
-vt 0.282800 0.467652
-vt 0.280563 0.459851
-vt 0.291567 0.587987
-vt 0.281450 0.583881
-vt 0.283667 0.576504
-vt 0.296555 0.562421
-vt 0.285196 0.568706
-vt 0.286380 0.560907
-vt 0.287198 0.553126
-vt 0.288084 0.545397
-vt 0.288668 0.537698
-vt 0.289054 0.530014
-vt 0.288781 0.522317
-vt 0.288738 0.514604
-vt 0.053888 0.509039
-vt 0.053675 0.503966
-vt 0.053404 0.498893
-vt 0.053081 0.493831
-vt 0.052707 0.488783
-vt 0.052282 0.483746
-vt 0.052726 0.559753
-vt 0.053117 0.554687
-vt 0.053452 0.549623
-vt 0.053724 0.544557
-vt 0.053934 0.539492
-vt 0.054080 0.534425
-vt 0.054163 0.529353
-vt 0.054183 0.524276
-vt 0.054142 0.519196
-vt 0.054043 0.514115
-vt 0.291327 0.455872
-vn -1.000000 0.001800 -0.001200
-vn -1.000000 0.002100 -0.000400
-vn -1.000000 0.002100 0.000400
-vn -1.000000 0.001800 0.001200
-vn -1.000000 0.001200 0.001800
-vn -1.000000 0.000400 0.002100
-vn -1.000000 -0.000400 0.002100
-vn -1.000000 -0.001200 0.001800
-vn -1.000000 -0.001800 0.001200
-vn -1.000000 -0.002100 0.000400
-vn -1.000000 -0.002100 -0.000400
-vn -1.000000 -0.001800 -0.001200
-vn -1.000000 -0.001200 -0.001800
-vn -1.000000 -0.000400 -0.002100
-vn -1.000000 0.000400 -0.002100
-vn -1.000000 0.001200 -0.001800
-vn 1.000000 0.000000 0.000000
-vn 1.000000 0.000100 0.000000
-vn 1.000000 -0.000100 0.000000
-vn -1.000000 -0.000000 0.000000
-vn -1.000000 -0.000100 0.000000
-vn -1.000000 0.000100 0.000000
-vn 0.000000 0.707100 -0.707100
-vn 0.000000 0.382700 -0.923900
-vn -0.289600 0.366300 -0.884300
-vn 0.000000 -0.000000 -1.000000
-vn -0.289600 0.000000 -0.957200
-vn 0.000000 -0.382700 -0.923900
-vn -0.289600 -0.366300 -0.884300
-vn 0.000000 -0.707100 -0.707100
-vn -0.289600 -0.676800 -0.676800
-vn 0.000000 -0.923900 -0.382700
-vn -0.289600 -0.884300 -0.366300
-vn 0.000000 -1.000000 0.000000
-vn -0.289600 -0.957200 0.000000
-vn 0.000000 -0.923900 0.382700
-vn 0.000000 -0.707100 0.707100
-vn -0.289600 -0.676800 0.676800
-vn -0.000000 -0.382700 0.923900
-vn -0.289600 -0.366300 0.884300
-vn -0.000000 0.000000 1.000000
-vn 0.000000 0.382700 0.923900
-vn -0.289600 0.366300 0.884300
-vn 0.000000 0.707100 0.707100
-vn -0.289600 0.676800 0.676800
-vn 0.000000 0.923900 0.382700
-vn -0.289600 0.884300 0.366300
-vn 0.000000 1.000000 -0.000000
-vn -0.289600 0.957200 0.000000
-vn 0.000000 0.923900 -0.382700
-vn -0.289600 0.884300 -0.366300
-vn -0.289600 0.676800 -0.676800
-vn -0.310900 0.672000 -0.672000
-vn -0.310900 0.878100 -0.363700
-vn -0.310900 0.950400 0.000000
-vn -0.310900 0.878100 0.363700
-vn -0.310900 0.672000 0.672000
-vn -0.310900 0.363700 0.878100
-vn -0.310900 0.000000 0.950400
-vn -0.289600 0.000000 0.957200
-vn -0.310900 -0.363700 0.878100
-vn -0.289600 -0.884300 0.366300
-vn -0.310900 -0.672000 0.672000
-vn -0.310900 -0.878100 0.363700
-vn -0.310900 -0.950400 0.000000
-vn -0.310900 -0.878100 -0.363700
-vn -0.310900 -0.672000 -0.672000
-vn -0.310900 -0.363700 -0.878100
-vn -0.310900 0.000000 -0.950400
-vn -0.310900 0.363700 -0.878100
-vn -0.001500 0.382200 -0.924100
-vn -0.001500 0.383100 -0.923700
-vn -0.000200 0.707400 -0.706900
-vn -0.003100 -0.000500 -1.000000
-vn -0.003100 0.000500 -1.000000
-vn -0.004700 -0.383100 -0.923700
-vn -0.004700 -0.382300 -0.924000
-vn -0.006000 -0.707300 -0.706900
-vn -0.006000 -0.706900 -0.707300
-vn -0.006900 -0.923900 -0.382500
-vn -0.006900 -0.923800 -0.382900
-vn -0.007200 -1.000000 -0.000000
-vn -0.006900 -0.923900 0.382500
-vn -0.006900 -0.923800 0.382900
-vn -0.006000 -0.707300 0.706900
-vn -0.006000 -0.706900 0.707300
-vn -0.004700 -0.383100 0.923700
-vn -0.004700 -0.382300 0.924000
-vn -0.003100 -0.000500 1.000000
-vn -0.003100 0.000500 1.000000
-vn -0.001500 0.382200 0.924100
-vn -0.001500 0.383100 0.923700
-vn -0.000200 0.706800 0.707400
-vn -0.000200 0.707400 0.706900
-vn 0.000700 0.923800 0.382900
-vn 0.000700 0.924000 0.382500
-vn 0.001000 1.000000 0.000000
-vn 0.000700 0.923800 -0.382900
-vn 0.000700 0.924000 -0.382500
-vn -0.000200 0.706900 -0.707400
-usemtl Tank
-s off
-f 156/85/152 187/86/152 172/87/152
-f 171/88/153 172/87/153 173/89/153
-f 169/90/154 170/91/154 173/89/154
-f 169/90/155 174/92/155 175/93/155
-f 167/94/156 168/95/156 175/93/156
-f 166/96/157 167/94/157 176/97/157
-f 165/98/158 166/99/158 177/100/158
-f 164/101/159 165/98/159 178/102/159
-f 164/101/160 179/103/160 180/104/160
-f 162/105/161 163/106/161 180/104/161
-f 162/105/162 181/107/162 182/108/162
-f 160/109/163 161/110/163 182/108/163
-f 160/109/164 183/111/164 184/112/164
-f 159/113/165 184/112/165 185/114/165
-f 158/115/166 185/114/166 186/116/166
-f 156/85/167 157/117/167 186/116/167
-f 188/118/168 219/119/168 204/120/168
-f 202/121/169 203/122/169 204/120/169
-f 202/121/168 205/123/168 206/124/168
-f 200/125/168 201/126/168 206/124/168
-f 199/127/168 200/125/168 207/128/168
-f 198/129/168 199/127/168 208/130/168
-f 198/131/168 209/132/168 210/133/168
-f 197/134/168 210/133/168 211/135/168
-f 196/136/168 211/135/168 212/137/168
-f 194/138/170 195/139/170 212/137/170
-f 194/138/168 213/140/168 214/141/168
-f 192/142/168 193/143/168 214/141/168
-f 191/144/168 192/142/168 215/145/168
-f 190/146/168 191/144/168 216/147/168
-f 190/146/168 217/148/168 218/149/168
-f 189/150/168 218/149/168 219/119/168
-f 235/151/168 220/152/168 251/153/168
-f 234/154/168 235/151/168 236/155/168
-f 234/154/168 237/156/168 238/157/168
-f 232/158/168 233/159/168 238/157/168
-f 232/158/170 239/160/170 240/161/170
-f 231/162/168 240/161/168 241/163/168
-f 229/164/168 230/165/168 241/166/168
-f 228/167/168 229/164/168 242/168/168
-f 227/169/168 228/167/168 243/170/168
-f 226/171/168 227/169/168 244/172/168
-f 226/171/170 245/173/170 246/174/170
-f 225/175/169 246/174/169 247/176/169
-f 224/177/169 247/176/169 248/178/169
-f 223/179/168 248/178/168 249/180/168
-f 221/181/168 222/182/168 249/180/168
-f 220/152/168 221/181/168 250/183/168
-f 252/184/171 283/185/171 268/186/171
-f 266/187/171 267/188/171 268/186/171
-f 265/189/171 266/187/171 269/190/171
-f 265/189/171 270/191/171 271/192/171
-f 263/193/171 264/194/171 271/192/171
-f 263/193/171 272/195/171 273/196/171
-f 261/197/171 262/198/171 273/199/171
-f 261/197/171 274/200/171 275/201/171
-f 260/202/171 275/201/171 276/203/171
-f 258/204/171 259/205/171 276/203/171
-f 258/204/171 277/206/171 278/207/171
-f 256/208/171 257/209/171 278/207/171
-f 255/210/171 256/208/171 279/211/171
-f 255/210/171 280/212/171 281/213/171
-f 253/214/171 254/215/171 281/213/171
-f 253/214/171 282/216/171 283/185/171
-f 315/217/171 284/218/171 285/219/171
-f 300/220/172 299/221/172 284/218/172
-f 301/222/171 298/223/171 299/221/171
-f 301/222/171 302/224/171 297/225/171
-f 302/224/173 303/226/173 296/227/173
-f 303/226/171 304/228/171 295/229/171
-f 304/228/171 305/230/171 294/231/171
-f 306/232/171 293/233/171 294/234/171
-f 307/235/171 292/236/171 293/233/171
-f 308/237/171 291/238/171 292/236/171
-f 309/239/171 290/240/171 291/238/171
-f 309/239/171 310/241/171 289/242/171
-f 310/241/173 311/243/173 288/244/173
-f 311/243/171 312/245/171 287/246/171
-f 312/245/171 313/247/171 286/248/171
-f 314/249/171 285/219/171 286/248/171
-f 171/88/152 156/85/152 172/87/152
-f 170/91/153 171/88/153 173/89/153
-f 174/92/154 169/90/154 173/89/154
-f 168/95/155 169/90/155 175/93/155
-f 176/97/156 167/94/156 175/93/156
-f 177/250/157 166/96/157 176/97/157
-f 178/102/158 165/98/158 177/100/158
-f 179/103/159 164/101/159 178/102/159
-f 163/106/160 164/101/160 180/104/160
-f 181/107/161 162/105/161 180/104/161
-f 161/110/162 162/105/162 182/108/162
-f 183/111/163 160/109/163 182/108/163
-f 159/113/164 160/109/164 184/112/164
-f 158/115/165 159/113/165 185/114/165
-f 157/117/166 158/115/166 186/116/166
-f 187/86/167 156/85/167 186/116/167
-f 203/122/170 188/118/170 204/120/170
-f 205/123/168 202/121/168 204/120/168
-f 201/126/168 202/121/168 206/124/168
-f 207/128/168 200/125/168 206/124/168
-f 208/130/168 199/127/168 207/128/168
-f 209/251/168 198/129/168 208/130/168
-f 197/134/168 198/131/168 210/133/168
-f 196/136/168 197/134/168 211/135/168
-f 195/139/168 196/136/168 212/137/168
-f 213/140/168 194/138/168 212/137/168
-f 193/143/170 194/138/170 214/141/170
-f 215/145/168 192/142/168 214/141/168
-f 216/147/168 191/144/168 215/145/168
-f 217/148/168 190/146/168 216/147/168
-f 189/150/168 190/146/168 218/149/168
-f 188/118/168 189/150/168 219/119/168
-f 236/155/169 235/151/169 251/153/169
-f 237/156/168 234/154/168 236/155/168
-f 233/159/169 234/154/169 238/157/169
-f 239/160/168 232/158/168 238/157/168
-f 231/162/169 232/158/169 240/161/169
-f 230/252/168 231/162/168 241/163/168
-f 242/168/168 229/164/168 241/166/168
-f 243/170/169 228/167/169 242/168/169
-f 244/172/168 227/169/168 243/170/168
-f 245/173/168 226/171/168 244/172/168
-f 225/175/168 226/171/168 246/174/168
-f 224/177/168 225/175/168 247/176/168
-f 223/179/168 224/177/168 248/178/168
-f 222/182/168 223/179/168 249/180/168
-f 250/183/168 221/181/168 249/180/168
-f 251/153/168 220/152/168 250/183/168
-f 267/188/171 252/184/171 268/186/171
-f 269/190/171 266/187/171 268/186/171
-f 270/191/171 265/189/171 269/190/171
-f 264/194/171 265/189/171 271/192/171
-f 272/195/171 263/193/171 271/192/171
-f 262/253/171 263/193/171 273/196/171
-f 274/200/171 261/197/171 273/199/171
-f 260/202/171 261/197/171 275/201/171
-f 259/205/171 260/202/171 276/203/171
-f 277/206/171 258/204/171 276/203/171
-f 257/209/171 258/204/171 278/207/171
-f 279/211/171 256/208/171 278/207/171
-f 280/212/171 255/210/171 279/211/171
-f 254/215/171 255/210/171 281/213/171
-f 282/216/171 253/214/171 281/213/171
-f 252/184/171 253/214/171 283/185/171
-f 314/249/171 315/217/171 285/219/171
-f 315/217/173 300/220/173 284/218/173
-f 300/220/171 301/222/171 299/221/171
-f 298/223/171 301/222/171 297/225/171
-f 297/225/172 302/224/172 296/227/172
-f 296/227/173 303/226/173 295/229/173
-f 295/229/171 304/228/171 294/231/171
-f 305/254/171 306/232/171 294/234/171
-f 306/232/171 307/235/171 293/233/171
-f 307/235/171 308/237/171 292/236/171
-f 308/237/171 309/239/171 291/238/171
-f 290/240/171 309/239/171 289/242/171
-f 289/242/171 310/241/171 288/244/171
-f 288/244/171 311/243/171 287/246/171
-f 287/246/171 312/245/171 286/248/171
-f 313/247/171 314/249/171 286/248/171
-s 1
-f 124/255/174 125/256/175 109/257/176
-f 125/256/175 126/258/177 110/259/178
-f 126/258/177 127/260/179 111/261/180
-f 127/260/179 128/262/181 112/263/182
-f 112/263/182 128/262/181 129/264/183
-f 113/265/184 129/264/183 130/266/185
-f 114/267/186 130/266/185 131/268/187
-f 131/268/187 132/269/188 116/270/189
-f 132/269/188 133/271/190 117/272/191
-f 117/272/191 133/271/190 134/273/192
-f 134/274/192 135/275/193 119/276/194
-f 135/275/193 136/277/195 120/278/196
-f 136/277/195 137/279/197 121/280/198
-f 137/279/197 138/281/199 122/282/200
-f 138/281/199 139/283/201 123/284/202
-f 108/285/203 123/284/202 139/283/201
-f 108/285/203 155/286/204 140/287/205
-f 122/282/200 123/284/202 140/287/205
-f 121/280/198 122/282/200 141/288/206
-f 121/280/198 142/289/207 143/290/208
-f 119/276/194 120/278/196 143/290/208
-f 119/276/194 144/291/209 145/292/210
-f 118/293/211 145/294/210 146/295/212
-f 116/270/189 117/272/191 146/295/212
-f 115/296/213 116/270/189 147/297/214
-f 114/267/186 115/296/213 148/298/215
-f 114/267/186 149/299/216 150/300/217
-f 113/265/184 150/300/217 151/301/218
-f 112/263/182 151/301/218 152/302/219
-f 110/259/178 111/261/180 152/302/219
-f 110/259/178 153/303/220 154/304/221
-f 109/257/176 154/304/221 155/286/204
-f 154/304/221 157/117/175 156/85/174
-f 153/303/220 158/115/177 157/117/175
-f 152/302/219 159/113/179 158/115/177
-f 151/301/218 160/109/181 159/113/179
-f 150/300/217 161/110/183 160/109/181
-f 149/299/216 162/105/185 161/110/183
-f 148/298/215 163/106/187 162/105/185
-f 147/297/214 164/101/188 163/106/187
-f 146/295/212 165/98/190 164/101/188
-f 145/294/210 166/99/192 165/98/190
-f 144/291/209 167/94/193 166/96/192
-f 143/290/208 168/95/195 167/94/193
-f 142/289/207 169/90/197 168/95/195
-f 141/288/206 170/91/199 169/90/197
-f 140/287/205 171/88/201 170/91/199
-f 155/286/204 156/85/174 171/88/201
-f 186/116/222 189/150/223 188/118/224
-f 185/114/225 190/146/226 189/150/223
-f 184/112/227 191/144/228 190/146/226
-f 183/111/229 192/142/230 191/144/228
-f 182/108/231 193/143/232 192/142/230
-f 181/107/233 194/138/233 193/143/232
-f 181/107/233 180/104/234 195/139/235
-f 180/104/234 179/103/236 196/136/237
-f 179/103/236 178/102/238 197/134/239
-f 178/102/238 177/100/240 198/131/241
-f 177/250/240 176/97/242 199/127/243
-f 176/97/242 175/93/244 200/125/245
-f 175/93/244 174/92/246 201/126/247
-f 174/92/246 173/89/248 202/121/248
-f 172/87/249 203/122/250 202/121/248
-f 187/86/251 188/118/224 203/122/250
-f 218/149/175 221/181/175 220/152/174
-f 217/148/177 222/182/177 221/181/175
-f 216/147/179 223/179/179 222/182/177
-f 215/145/181 224/177/181 223/179/179
-f 214/141/183 225/175/183 224/177/181
-f 213/140/185 226/171/185 225/175/183
-f 212/137/187 227/169/187 226/171/185
-f 211/135/188 228/167/188 227/169/187
-f 210/133/190 229/164/190 228/167/188
-f 209/132/192 230/165/192 229/164/190
-f 208/130/193 231/162/193 230/252/192
-f 207/128/195 232/158/195 231/162/193
-f 206/124/197 233/159/197 232/158/195
-f 205/123/199 234/154/199 233/159/197
-f 204/120/201 235/151/201 234/154/199
-f 219/119/174 220/152/174 235/151/201
-f 250/183/175 253/214/175 252/184/174
-f 249/180/177 254/215/177 253/214/175
-f 248/178/179 255/210/179 254/215/177
-f 247/176/181 256/208/181 255/210/179
-f 246/174/183 257/209/183 256/208/181
-f 245/173/185 258/204/185 257/209/183
-f 244/172/187 259/205/187 258/204/185
-f 243/170/188 260/202/188 259/205/187
-f 242/168/190 261/197/190 260/202/188
-f 241/166/192 262/198/192 261/197/190
-f 240/161/193 263/193/193 262/253/192
-f 239/160/195 264/194/195 263/193/193
-f 238/157/197 265/189/197 264/194/195
-f 237/156/199 266/187/199 265/189/197
-f 236/155/201 267/188/201 266/187/199
-f 251/153/174 252/184/174 267/188/201
-f 282/216/175 285/219/175 284/218/174
-f 281/213/177 286/248/177 285/219/175
-f 280/212/179 287/246/179 286/248/177
-f 279/211/181 288/244/181 287/246/179
-f 278/207/183 289/242/183 288/244/181
-f 277/206/185 290/240/185 289/242/183
-f 276/203/187 291/238/187 290/240/185
-f 275/201/188 292/236/188 291/238/187
-f 274/200/190 293/233/190 292/236/188
-f 273/199/192 294/234/192 293/233/190
-f 272/195/193 295/229/193 294/231/192
-f 271/192/195 296/227/195 295/229/193
-f 270/191/197 297/225/197 296/227/195
-f 269/190/199 298/223/199 297/225/197
-f 268/186/201 299/221/201 298/223/199
-f 283/185/174 284/218/174 299/221/201
-f 316/217/174 315/220/174 300/305/201
-f 331/220/201 300/222/201 301/306/199
-f 330/222/199 301/224/199 302/307/197
-f 329/224/197 302/226/197 303/308/195
-f 328/226/195 303/228/195 304/309/193
-f 327/228/193 304/230/193 305/310/192
-f 326/254/192 305/232/192 306/311/190
-f 325/232/190 306/235/190 307/312/188
-f 324/235/188 307/237/188 308/313/187
-f 323/237/187 308/239/187 309/314/185
-f 322/239/185 309/241/185 310/315/183
-f 321/241/183 310/243/183 311/316/181
-f 320/243/181 311/245/181 312/317/179
-f 319/245/179 312/247/179 313/318/177
-f 318/247/177 313/249/177 314/319/175
-f 317/249/175 314/217/175 315/320/174
-f 108/285/203 124/255/174 109/257/176
-f 109/257/176 125/256/175 110/259/178
-f 110/259/178 126/258/177 111/261/180
-f 111/261/180 127/260/179 112/263/182
-f 113/265/184 112/263/182 129/264/183
-f 114/267/186 113/265/184 130/266/185
-f 115/296/213 114/267/186 131/268/187
-f 115/296/213 131/268/187 116/270/189
-f 116/270/189 132/269/188 117/272/191
-f 118/293/211 117/272/191 134/273/192
-f 118/321/211 134/274/192 119/276/194
-f 119/276/194 135/275/193 120/278/196
-f 120/278/196 136/277/195 121/280/198
-f 121/280/198 137/279/197 122/282/200
-f 122/282/200 138/281/199 123/284/202
-f 124/255/174 108/285/203 139/283/201
-f 123/284/202 108/285/203 140/287/205
-f 141/288/206 122/282/200 140/287/205
-f 142/289/207 121/280/198 141/288/206
-f 120/278/196 121/280/198 143/290/208
-f 144/291/209 119/276/194 143/290/208
-f 118/321/211 119/276/194 145/292/210
-f 117/272/191 118/293/211 146/295/212
-f 147/297/214 116/270/189 146/295/212
-f 148/298/215 115/296/213 147/297/214
-f 149/299/216 114/267/186 148/298/215
-f 113/265/184 114/267/186 150/300/217
-f 112/263/182 113/265/184 151/301/218
-f 111/261/180 112/263/182 152/302/219
-f 153/303/220 110/259/178 152/302/219
-f 109/257/176 110/259/178 154/304/221
-f 108/285/203 109/257/176 155/286/204
-f 155/286/204 154/304/221 156/85/174
-f 154/304/221 153/303/220 157/117/175
-f 153/303/220 152/302/219 158/115/177
-f 152/302/219 151/301/218 159/113/179
-f 151/301/218 150/300/217 160/109/181
-f 150/300/217 149/299/216 161/110/183
-f 149/299/216 148/298/215 162/105/185
-f 148/298/215 147/297/214 163/106/187
-f 147/297/214 146/295/212 164/101/188
-f 146/295/212 145/294/210 165/98/190
-f 145/292/210 144/291/209 166/96/192
-f 144/291/209 143/290/208 167/94/193
-f 143/290/208 142/289/207 168/95/195
-f 142/289/207 141/288/206 169/90/197
-f 141/288/206 140/287/205 170/91/199
-f 140/287/205 155/286/204 171/88/201
-f 187/86/251 186/116/222 188/118/224
-f 186/116/222 185/114/225 189/150/223
-f 185/114/225 184/112/227 190/146/226
-f 184/112/227 183/111/229 191/144/228
-f 183/111/229 182/108/231 192/142/230
-f 182/108/231 181/107/233 193/143/232
-f 194/138/233 181/107/233 195/139/235
-f 195/139/235 180/104/234 196/136/237
-f 196/136/237 179/103/236 197/134/239
-f 197/134/239 178/102/238 198/131/241
-f 198/129/241 177/250/240 199/127/243
-f 199/127/243 176/97/242 200/125/245
-f 200/125/245 175/93/244 201/126/247
-f 201/126/247 174/92/246 202/121/248
-f 173/89/248 172/87/249 202/121/248
-f 172/87/249 187/86/251 203/122/250
-f 219/119/174 218/149/175 220/152/174
-f 218/149/175 217/148/177 221/181/175
-f 217/148/177 216/147/179 222/182/177
-f 216/147/179 215/145/181 223/179/179
-f 215/145/181 214/141/183 224/177/181
-f 214/141/183 213/140/185 225/175/183
-f 213/140/185 212/137/187 226/171/185
-f 212/137/187 211/135/188 227/169/187
-f 211/135/188 210/133/190 228/167/188
-f 210/133/190 209/132/192 229/164/190
-f 209/251/192 208/130/193 230/252/192
-f 208/130/193 207/128/195 231/162/193
-f 207/128/195 206/124/197 232/158/195
-f 206/124/197 205/123/199 233/159/197
-f 205/123/199 204/120/201 234/154/199
-f 204/120/201 219/119/174 235/151/201
-f 251/153/174 250/183/175 252/184/174
-f 250/183/175 249/180/177 253/214/175
-f 249/180/177 248/178/179 254/215/177
-f 248/178/179 247/176/181 255/210/179
-f 247/176/181 246/174/183 256/208/181
-f 246/174/183 245/173/185 257/209/183
-f 245/173/185 244/172/187 258/204/185
-f 244/172/187 243/170/188 259/205/187
-f 243/170/188 242/168/190 260/202/188
-f 242/168/190 241/166/192 261/197/190
-f 241/163/192 240/161/193 262/253/192
-f 240/161/193 239/160/195 263/193/193
-f 239/160/195 238/157/197 264/194/195
-f 238/157/197 237/156/199 265/189/197
-f 237/156/199 236/155/201 266/187/199
-f 236/155/201 251/153/174 267/188/201
-f 283/185/174 282/216/175 284/218/174
-f 282/216/175 281/213/177 285/219/175
-f 281/213/177 280/212/179 286/248/177
-f 280/212/179 279/211/181 287/246/179
-f 279/211/181 278/207/183 288/244/181
-f 278/207/183 277/206/185 289/242/183
-f 277/206/185 276/203/187 290/240/185
-f 276/203/187 275/201/188 291/238/187
-f 275/201/188 274/200/190 292/236/188
-f 274/200/190 273/199/192 293/233/190
-f 273/196/192 272/195/193 294/231/192
-f 272/195/193 271/192/195 295/229/193
-f 271/192/195 270/191/197 296/227/195
-f 270/191/197 269/190/199 297/225/197
-f 269/190/199 268/186/201 298/223/199
-f 268/186/201 283/185/174 299/221/201
-f 331/217/201 316/217/174 300/305/201
-f 330/220/199 331/220/201 301/306/199
-f 329/222/197 330/222/199 302/307/197
-f 328/224/195 329/224/197 303/308/195
-f 327/226/193 328/226/195 304/309/193
-f 326/228/192 327/228/193 305/310/192
-f 325/254/190 326/254/192 306/311/190
-f 324/232/188 325/232/190 307/312/188
-f 323/235/187 324/235/188 308/313/187
-f 322/237/185 323/237/187 309/314/185
-f 321/239/183 322/239/185 310/315/183
-f 320/241/181 321/241/183 311/316/181
-f 319/243/179 320/243/181 312/317/179
-f 318/245/177 319/245/179 313/318/177
-f 317/247/175 318/247/177 314/319/175
-f 316/249/174 317/249/175 315/320/174
diff --git a/contrib/tinks/assets/models/tank.mtl b/contrib/tinks/assets/models/tank.mtl
deleted file mode 100644
index ff383dc308..0000000000
--- a/contrib/tinks/assets/models/tank.mtl
+++ /dev/null
@@ -1,32 +0,0 @@
-# Blender MTL File: 'tank.blend'
-# Material Count: 3
-
-newmtl Tank
-Ns 182.352941
-Ka 0.000000 0.000000 0.000000
-Kd 0.500000 0.500000 0.500000
-Ks 0.287480 0.287480 0.287480
-Ni 1.000000
-d 1.000000
-illum 2
-map_Kd textures/tank.jpg
-
-newmtl Tank_TTread.jpg
-Ns 182.352941
-Ka 0.000000 0.000000 0.000000
-Kd 0.500000 0.500000 0.500000
-Ks 0.287480 0.287480 0.287480
-Ni 1.000000
-d 1.000000
-illum 2
-map_Kd textures/TTread.jpg
-
-newmtl Treads
-Ns 182.352941
-Ka 0.000000 0.000000 0.000000
-Kd 0.500000 0.500000 0.500000
-Ks 0.287480 0.287480 0.287480
-Ni 1.000000
-d 1.000000
-illum 2
-map_Kd textures/TTread.jpg
diff --git a/contrib/tinks/assets/models/tank.obj b/contrib/tinks/assets/models/tank.obj
deleted file mode 100644
index 96e5b42db8..0000000000
--- a/contrib/tinks/assets/models/tank.obj
+++ /dev/null
@@ -1,7121 +0,0 @@
-# Blender v2.72 (sub 0) OBJ File: 'tank.blend'
-# www.blender.org
-mtllib tank.mtl
-o BodyGood
-v -1.577361 0.565007 -0.814644
-v -1.577361 0.565007 0.894619
-v -1.579693 0.336666 -0.814644
-v -1.579693 0.336666 0.894619
-v -1.579693 0.336666 -0.541722
-v -1.579693 0.336666 0.621697
-v -1.577361 0.565007 -0.541723
-v -1.577361 0.565007 0.621697
-v -0.932220 0.551394 -0.814644
-v -0.932220 0.551394 0.894619
-v -0.922010 -0.012070 -0.814644
-v -0.922010 -0.012070 0.894619
-v -0.922010 -0.012069 -0.541722
-v -0.922010 -0.012069 0.621697
-v -0.932220 0.551394 -0.541722
-v -0.932220 0.551394 0.621697
-v -1.263298 0.120656 -0.814644
-v -1.263298 0.120656 0.894619
-v -1.350081 0.696031 -0.814644
-v -1.350081 0.696031 0.894619
-v -1.263299 0.120656 -0.541722
-v -1.263299 0.120656 0.621697
-v -1.350081 0.696031 -0.541723
-v -1.350081 0.696031 0.621697
-v -0.233732 0.572711 -0.541722
-v -0.233732 0.572711 0.621697
-v -0.256280 -0.028382 -0.541722
-v -0.256280 -0.028382 0.621697
-v -0.256280 -0.028382 -0.814644
-v -0.256280 -0.028382 0.894619
-v -0.233732 0.572711 -0.814644
-v -0.233732 0.572711 0.894619
-v 0.810067 0.571969 -0.814644
-v 0.810067 0.571969 0.894619
-v 0.806664 -0.015318 -0.814644
-v 0.806664 -0.015318 0.894618
-v 0.806664 -0.015317 -0.541722
-v 0.806664 -0.015317 0.621697
-v 0.810067 0.571969 -0.541722
-v 0.810067 0.571969 0.621697
-v 1.248650 0.599386 -0.541722
-v 1.248650 0.599386 0.621697
-v 1.377973 0.178858 -0.541722
-v 1.377973 0.178858 0.621697
-v 1.377973 0.178857 -0.814644
-v 1.377973 0.178857 0.894618
-v 1.248650 0.599386 -0.814644
-v 1.248650 0.599386 0.894619
-v 1.372402 0.540059 -0.814644
-v 1.372402 0.540059 0.894619
-v 1.437064 0.367966 -0.814644
-v 1.437064 0.367966 0.894618
-v 1.437064 0.367967 -0.541722
-v 1.437064 0.367967 0.621697
-v 1.372402 0.540059 -0.541722
-v 1.372402 0.540059 0.621697
-v 1.217263 0.534780 -0.541722
-v 1.217263 0.534780 0.621697
-v 1.308653 0.488885 -0.541722
-v 1.308653 0.488885 0.621697
-v 1.369814 0.355756 -0.541722
-v 1.369814 0.355756 0.621697
-v 1.321254 0.209463 -0.541722
-v 1.321254 0.209463 0.621697
-v 1.321254 0.209462 -0.814644
-v 1.321254 0.209462 0.894618
-v 1.369814 0.355755 -0.814644
-v 1.369814 0.355755 0.894618
-v 1.308653 0.488885 -0.814644
-v 1.308653 0.488885 0.894619
-v 1.217263 0.534780 -0.814644
-v 1.217263 0.534780 0.894619
-v 0.773546 0.033589 -0.814644
-v 0.773546 0.033589 0.894618
-v 0.773546 0.033589 -0.541722
-v 0.773546 0.033589 0.621697
-v 0.765767 0.535565 -0.814644
-v 0.765767 0.535565 0.894619
-v 0.765767 0.535566 -0.541722
-v 0.765767 0.535566 0.621697
-v -0.225184 0.536445 -0.541722
-v -0.225184 0.536445 0.621697
-v -0.251603 0.008411 -0.541722
-v -0.251603 0.008411 0.621697
-v -0.251603 0.008411 -0.814644
-v -0.251603 0.008411 0.894619
-v -0.225184 0.536445 -0.814644
-v -0.225184 0.536445 0.894619
-v -0.901654 0.026122 -0.814644
-v -0.901654 0.026122 0.894619
-v -0.901654 0.026122 -0.541722
-v -0.901654 0.026122 0.621697
-v -0.885853 0.497654 -0.814644
-v -0.885853 0.497654 0.894619
-v -0.885854 0.497654 -0.541722
-v -0.885854 0.497654 0.621697
-v -1.323323 0.635939 -0.541723
-v -1.323323 0.635939 0.621697
-v -1.549017 0.532624 -0.541723
-v -1.549017 0.532624 0.621697
-v -1.239739 0.151710 -0.541722
-v -1.239739 0.151710 0.621697
-v -1.533912 0.357000 -0.541722
-v -1.533912 0.357000 0.621697
-v -1.323323 0.635939 -0.814644
-v -1.323323 0.635939 0.894619
-v -1.549017 0.532624 -0.814644
-v -1.549017 0.532624 0.894619
-v -1.239739 0.151709 -0.814644
-v -1.239739 0.151709 0.894619
-v -1.533912 0.357000 -0.814644
-v -1.533912 0.357000 0.894619
-v -1.549017 0.532624 -0.774532
-v -1.549017 0.532624 0.854507
-v -1.533912 0.357000 -0.774532
-v -1.533912 0.357000 0.854507
-v -1.549017 0.532624 -0.581834
-v -1.549017 0.532624 0.661809
-v -1.533912 0.357000 -0.581834
-v -1.533912 0.357000 0.661809
-v -1.239739 0.151709 -0.774532
-v -1.239739 0.151709 0.854506
-v -0.901654 0.026122 -0.774532
-v -0.901654 0.026122 0.854506
-v -1.323323 0.635939 -0.774532
-v -1.323323 0.635939 0.854507
-v -0.885853 0.497654 -0.774532
-v -0.885853 0.497654 0.854507
-v -1.239739 0.151710 -0.581834
-v -1.239739 0.151710 0.661809
-v -0.901654 0.026122 -0.581834
-v -0.901654 0.026122 0.661809
-v -1.323323 0.635939 -0.581834
-v -1.323323 0.635939 0.661809
-v -0.885854 0.497654 -0.581834
-v -0.885854 0.497654 0.661809
-v -0.225184 0.536445 -0.581834
-v -0.225184 0.536445 0.661809
-v -0.225184 0.536445 -0.774532
-v -0.225184 0.536445 0.854507
-v -0.251603 0.008411 -0.581834
-v -0.251603 0.008411 0.661809
-v -0.251603 0.008411 -0.774532
-v -0.251603 0.008411 0.854506
-v 0.765767 0.535565 -0.774532
-v 0.765767 0.535565 0.854507
-v 0.773546 0.033589 -0.774532
-v 0.773546 0.033589 0.854506
-v 0.773546 0.033589 -0.581834
-v 0.773546 0.033589 0.661809
-v 0.765767 0.535566 -0.581834
-v 0.765767 0.535566 0.661809
-v 1.217263 0.534780 -0.581834
-v 1.217263 0.534780 0.661809
-v 1.217263 0.534780 -0.774532
-v 1.217263 0.534780 0.854507
-v 1.321254 0.209463 -0.581834
-v 1.321254 0.209463 0.661809
-v 1.321254 0.209462 -0.774532
-v 1.321254 0.209462 0.854506
-v 1.308653 0.488885 -0.774532
-v 1.308653 0.488885 0.854507
-v 1.369814 0.355755 -0.774532
-v 1.369814 0.355755 0.854506
-v 1.369814 0.355756 -0.581834
-v 1.369814 0.355756 0.661809
-v 1.308653 0.488885 -0.581834
-v 1.308653 0.488885 0.661809
-v -0.286488 0.472542 -0.820350
-v -0.286488 0.472542 0.884787
-v -0.217479 0.353015 -0.820350
-v -0.217479 0.353015 0.884787
-v -0.217479 0.214997 -0.820350
-v -0.217479 0.214997 0.884787
-v -0.286488 0.095470 -0.820350
-v -0.286488 0.095470 0.884787
-v -0.406015 0.026461 -0.820350
-v -0.406015 0.026461 0.884787
-v -0.544033 0.026461 -0.820350
-v -0.544033 0.026461 0.884787
-v -0.663560 0.095470 -0.820350
-v -0.663560 0.095470 0.884787
-v -0.732569 0.214997 -0.820350
-v -0.732569 0.214997 0.884787
-v -0.732569 0.353015 -0.820350
-v -0.732569 0.353015 0.884787
-v -0.663560 0.472542 -0.820350
-v -0.663560 0.472542 0.884787
-v -0.544033 0.541551 -0.820350
-v -0.544033 0.541551 0.884787
-v -0.406015 0.541551 -0.820350
-v -0.406015 0.541551 0.884787
-v -0.286488 0.472542 -0.741306
-v -0.286488 0.472542 0.805929
-v -0.217479 0.353015 -0.741306
-v -0.217479 0.353015 0.805929
-v -0.217479 0.214997 -0.741306
-v -0.217479 0.214997 0.805929
-v -0.286488 0.095470 -0.741306
-v -0.286488 0.095470 0.805929
-v -0.406015 0.026461 -0.741306
-v -0.406015 0.026461 0.805929
-v -0.544033 0.026461 -0.741306
-v -0.544033 0.026461 0.805929
-v -0.663560 0.095470 -0.741306
-v -0.663560 0.095470 0.805929
-v -0.732569 0.214997 -0.741306
-v -0.732569 0.214997 0.805929
-v -0.732569 0.353014 -0.741306
-v -0.732569 0.353014 0.805929
-v -0.663560 0.472541 -0.741306
-v -0.663560 0.472541 0.805929
-v -0.544034 0.541551 -0.741306
-v -0.544034 0.541551 0.805929
-v -0.406016 0.541551 -0.741306
-v -0.406016 0.541551 0.805929
-v -0.475024 0.284006 -0.820350
-v -0.475024 0.284006 0.884787
-v -0.475024 0.284006 -0.741306
-v -0.475024 0.284006 0.805929
-v -0.056081 0.286837 -0.599231
-v -0.056081 0.286837 0.664187
-v -0.056081 0.286837 -0.751613
-v -0.056081 0.286837 0.816212
-v 0.012928 0.544381 -0.599231
-v 0.012928 0.544381 0.664187
-v -0.125090 0.544381 -0.599231
-v -0.125090 0.544381 0.664187
-v -0.244617 0.475372 -0.599231
-v -0.244617 0.475372 0.664187
-v -0.313625 0.355845 -0.599231
-v -0.313625 0.355845 0.664187
-v -0.313625 0.217827 -0.599231
-v -0.313625 0.217827 0.664187
-v -0.244616 0.098300 -0.599231
-v -0.244616 0.098300 0.664187
-v -0.125089 0.029292 -0.599231
-v -0.125089 0.029292 0.664187
-v 0.012929 0.029292 -0.599231
-v 0.012929 0.029292 0.664187
-v 0.132455 0.098301 -0.599231
-v 0.132455 0.098301 0.664187
-v 0.201464 0.217828 -0.599231
-v 0.201464 0.217828 0.664187
-v 0.201464 0.355846 -0.599231
-v 0.201464 0.355846 0.664187
-v 0.132455 0.475373 -0.599231
-v 0.132455 0.475373 0.664187
-v 0.012928 0.544381 -0.751613
-v 0.012928 0.544381 0.816212
-v -0.125090 0.544381 -0.751613
-v -0.125090 0.544381 0.816212
-v -0.244616 0.475372 -0.751613
-v -0.244616 0.475372 0.816212
-v -0.313625 0.355845 -0.751613
-v -0.313625 0.355845 0.816212
-v -0.313625 0.217828 -0.751613
-v -0.313625 0.217828 0.816212
-v -0.244616 0.098301 -0.751613
-v -0.244616 0.098301 0.816212
-v -0.125089 0.029292 -0.751613
-v -0.125089 0.029292 0.816212
-v 0.012928 0.029292 -0.751613
-v 0.012928 0.029292 0.816212
-v 0.132455 0.098301 -0.751613
-v 0.132455 0.098301 0.816212
-v 0.201464 0.217828 -0.751613
-v 0.201464 0.217828 0.816212
-v 0.201464 0.355846 -0.751613
-v 0.201464 0.355846 0.816212
-v 0.132455 0.475372 -0.751613
-v 0.132455 0.475372 0.816212
-v 0.546870 0.465182 -0.816579
-v 0.546870 0.465182 0.881025
-v 0.615879 0.345655 -0.816579
-v 0.615879 0.345655 0.881025
-v 0.615879 0.207637 -0.816579
-v 0.615879 0.207637 0.881025
-v 0.546870 0.088110 -0.816579
-v 0.546870 0.088110 0.881025
-v 0.427343 0.019101 -0.816579
-v 0.427343 0.019101 0.881025
-v 0.289325 0.019101 -0.816579
-v 0.289325 0.019101 0.881025
-v 0.169798 0.088110 -0.816579
-v 0.169798 0.088110 0.881025
-v 0.100789 0.207637 -0.816579
-v 0.100789 0.207637 0.881025
-v 0.100789 0.345655 -0.816579
-v 0.100789 0.345655 0.881025
-v 0.169798 0.465182 -0.816579
-v 0.169798 0.465182 0.881025
-v 0.289325 0.534191 -0.816579
-v 0.289325 0.534191 0.881025
-v 0.427343 0.534191 -0.816579
-v 0.427343 0.534191 0.881025
-v 0.546870 0.465182 -0.736489
-v 0.546870 0.465182 0.801123
-v 0.615879 0.345655 -0.736489
-v 0.615879 0.345655 0.801123
-v 0.615879 0.207637 -0.736489
-v 0.615879 0.207637 0.801123
-v 0.546870 0.088110 -0.736489
-v 0.546870 0.088110 0.801123
-v 0.427343 0.019101 -0.736489
-v 0.427343 0.019101 0.801123
-v 0.289325 0.019101 -0.736489
-v 0.289325 0.019101 0.801123
-v 0.169798 0.088110 -0.736489
-v 0.169798 0.088110 0.801123
-v 0.100789 0.207637 -0.736489
-v 0.100789 0.207637 0.801123
-v 0.100789 0.345655 -0.736489
-v 0.100789 0.345655 0.801123
-v 0.169798 0.465182 -0.736489
-v 0.169798 0.465182 0.801123
-v 0.289324 0.534191 -0.736489
-v 0.289324 0.534191 0.801123
-v 0.427342 0.534191 -0.736489
-v 0.427342 0.534191 0.801123
-v 0.358334 0.276646 -0.816579
-v 0.358334 0.276646 0.881025
-v 0.358334 0.276646 -0.736489
-v 0.358334 0.276646 0.801123
-v 0.764450 0.286837 -0.632052
-v 0.764450 0.286837 0.696931
-v 0.764450 0.286837 -0.776000
-v 0.764450 0.286837 0.840542
-v 0.829638 0.530127 -0.632052
-v 0.829638 0.530127 0.696931
-v 0.699260 0.530127 -0.632052
-v 0.699260 0.530127 0.696931
-v 0.586348 0.464937 -0.632052
-v 0.586348 0.464937 0.696931
-v 0.521159 0.352026 -0.632052
-v 0.521159 0.352026 0.696931
-v 0.521159 0.221647 -0.632052
-v 0.521159 0.221647 0.696931
-v 0.586349 0.108736 -0.632052
-v 0.586349 0.108736 0.696931
-v 0.699260 0.043546 -0.632052
-v 0.699260 0.043546 0.696931
-v 0.829639 0.043547 -0.632052
-v 0.829639 0.043547 0.696931
-v 0.942551 0.108736 -0.632052
-v 0.942551 0.108736 0.696931
-v 1.007740 0.221648 -0.632052
-v 1.007740 0.221648 0.696931
-v 1.007740 0.352026 -0.632052
-v 1.007740 0.352026 0.696931
-v 0.942550 0.464938 -0.632052
-v 0.942550 0.464938 0.696931
-v 0.829639 0.530127 -0.776000
-v 0.829639 0.530127 0.840542
-v 0.699260 0.530127 -0.776000
-v 0.699260 0.530127 0.840542
-v 0.586349 0.464937 -0.776000
-v 0.586349 0.464937 0.840542
-v 0.521159 0.352026 -0.776000
-v 0.521159 0.352026 0.840542
-v 0.521159 0.221647 -0.776000
-v 0.521159 0.221647 0.840542
-v 0.586349 0.108736 -0.776000
-v 0.586349 0.108736 0.840542
-v 0.699260 0.043546 -0.776000
-v 0.699260 0.043546 0.840542
-v 0.829639 0.043546 -0.776000
-v 0.829639 0.043546 0.840542
-v 0.942550 0.108736 -0.776000
-v 0.942550 0.108736 0.840542
-v 1.007740 0.221647 -0.776000
-v 1.007740 0.221647 0.840542
-v 1.007740 0.352026 -0.776000
-v 1.007740 0.352026 0.840542
-v 0.942550 0.464937 -0.776000
-v 0.942550 0.464937 0.840542
-v 1.341066 0.514983 -0.813306
-v 1.341066 0.514983 0.893280
-v 1.393243 0.424610 -0.813306
-v 1.393243 0.424610 0.893280
-v 1.393243 0.320255 -0.813306
-v 1.393243 0.320255 0.893280
-v 1.341066 0.229882 -0.813306
-v 1.341066 0.229882 0.893280
-v 1.250692 0.177705 -0.813306
-v 1.250692 0.177705 0.893280
-v 1.146338 0.177705 -0.813306
-v 1.146338 0.177705 0.893280
-v 1.055964 0.229882 -0.813306
-v 1.055964 0.229882 0.893280
-v 1.003787 0.320255 -0.813306
-v 1.003787 0.320255 0.893280
-v 1.003787 0.424610 -0.813306
-v 1.003787 0.424610 0.893280
-v 1.055964 0.514983 -0.813306
-v 1.055964 0.514983 0.893280
-v 1.146337 0.567160 -0.813306
-v 1.146337 0.567160 0.893280
-v 1.250692 0.567160 -0.813306
-v 1.250692 0.567160 0.893280
-v 1.341065 0.514983 -0.599568
-v 1.341065 0.514983 0.679543
-v 1.393243 0.424610 -0.599568
-v 1.393243 0.424610 0.679543
-v 1.393243 0.320256 -0.599568
-v 1.393243 0.320256 0.679543
-v 1.341066 0.229882 -0.599568
-v 1.341066 0.229882 0.679543
-v 1.250692 0.177705 -0.599568
-v 1.250692 0.177705 0.679543
-v 1.146338 0.177705 -0.599568
-v 1.146338 0.177705 0.679543
-v 1.055964 0.229882 -0.599568
-v 1.055964 0.229882 0.679543
-v 1.003787 0.320255 -0.599568
-v 1.003787 0.320255 0.679543
-v 1.003787 0.424609 -0.599568
-v 1.003787 0.424609 0.679543
-v 1.055964 0.514983 -0.599568
-v 1.055964 0.514983 0.679543
-v 1.146337 0.567160 -0.599568
-v 1.146337 0.567160 0.679543
-v 1.250692 0.567161 -0.599568
-v 1.250692 0.567161 0.679543
-v 1.198515 0.372433 -0.813306
-v 1.198515 0.372433 0.893280
-v 1.198515 0.372433 -0.599568
-v 1.198515 0.372433 0.679543
-v -0.679451 0.450917 -0.751613
-v -0.679451 0.450917 0.816212
-v -0.610442 0.331390 -0.751613
-v -0.610442 0.331390 0.816212
-v -0.610442 0.193373 -0.751613
-v -0.610442 0.193373 0.816212
-v -0.679451 0.073846 -0.751613
-v -0.679451 0.073846 0.816212
-v -0.798978 0.004837 -0.751613
-v -0.798978 0.004837 0.816212
-v -0.936995 0.004837 -0.751613
-v -0.936995 0.004837 0.816212
-v -1.056522 0.073846 -0.751613
-v -1.056522 0.073846 0.816212
-v -1.125531 0.193373 -0.751613
-v -1.125531 0.193373 0.816212
-v -1.125531 0.331390 -0.751613
-v -1.125531 0.331390 0.816212
-v -1.056522 0.450917 -0.751613
-v -1.056522 0.450917 0.816212
-v -0.936996 0.519926 -0.751613
-v -0.936996 0.519926 0.816212
-v -0.798978 0.519926 -0.751613
-v -0.798978 0.519926 0.816212
-v -0.679451 0.450918 -0.599230
-v -0.679451 0.450918 0.664187
-v -0.610442 0.331391 -0.599230
-v -0.610442 0.331391 0.664187
-v -0.610442 0.193373 -0.599230
-v -0.610442 0.193373 0.664187
-v -0.679451 0.073846 -0.599230
-v -0.679451 0.073846 0.664187
-v -0.798977 0.004837 -0.599230
-v -0.798977 0.004837 0.664187
-v -0.936995 0.004837 -0.599230
-v -0.936995 0.004837 0.664187
-v -1.056522 0.073845 -0.599230
-v -1.056522 0.073845 0.664187
-v -1.125531 0.193372 -0.599230
-v -1.125531 0.193372 0.664187
-v -1.125531 0.331390 -0.599230
-v -1.125531 0.331390 0.664187
-v -1.056523 0.450917 -0.599230
-v -1.056523 0.450917 0.664187
-v -0.936996 0.519926 -0.599230
-v -0.936996 0.519926 0.664187
-v -0.798978 0.519926 -0.599230
-v -0.798978 0.519926 0.664187
-v -0.867987 0.262382 -0.751613
-v -0.867987 0.262382 0.816212
-v -0.867987 0.262382 -0.599230
-v -0.867987 0.262382 0.664187
-v -1.249482 0.449471 -0.599568
-v -1.249482 0.449471 0.679542
-v -1.249482 0.449471 -0.813305
-v -1.249482 0.449471 0.893280
-v -1.258392 0.650308 -0.599568
-v -1.258392 0.650308 0.679542
-v -1.362746 0.650307 -0.599568
-v -1.362746 0.650307 0.679542
-v -1.453119 0.598130 -0.599568
-v -1.453119 0.598130 0.679542
-v -1.532791 0.516921 -0.599568
-v -1.532791 0.516921 0.679542
-v -1.505296 0.403402 -0.599568
-v -1.505296 0.403402 0.679542
-v -1.453119 0.313028 -0.599568
-v -1.453119 0.313028 0.679542
-v -1.362745 0.260851 -0.599568
-v -1.362745 0.260851 0.679542
-v -1.258391 0.260852 -0.599568
-v -1.258391 0.260852 0.679542
-v -1.168018 0.313029 -0.599568
-v -1.168018 0.313029 0.679542
-v -1.115840 0.403403 -0.599568
-v -1.115840 0.403403 0.679542
-v -1.115841 0.507757 -0.599568
-v -1.115841 0.507757 0.679542
-v -1.168018 0.598130 -0.599568
-v -1.168018 0.598130 0.679542
-v -1.258391 0.650307 -0.813305
-v -1.258391 0.650307 0.893280
-v -1.362746 0.650307 -0.813305
-v -1.362746 0.650307 0.893280
-v -1.453119 0.598130 -0.813305
-v -1.453119 0.598130 0.893280
-v -1.532791 0.516921 -0.813305
-v -1.532791 0.516921 0.893280
-v -1.505296 0.403402 -0.813305
-v -1.505296 0.403402 0.893280
-v -1.453119 0.313029 -0.813305
-v -1.453119 0.313029 0.893280
-v -1.362746 0.260852 -0.813305
-v -1.362746 0.260852 0.893280
-v -1.258391 0.260852 -0.813305
-v -1.258391 0.260852 0.893280
-v -1.168018 0.313029 -0.813305
-v -1.168018 0.313029 0.893280
-v -1.115841 0.403402 -0.813305
-v -1.115841 0.403402 0.893280
-v -1.115841 0.507757 -0.813305
-v -1.115841 0.507757 0.893280
-v -1.168018 0.598130 -0.813305
-v -1.168018 0.598130 0.893280
-v -0.475024 0.284006 -0.741306
-v -0.475024 0.284006 -0.820350
-v -0.406016 0.541551 -0.741306
-v -0.544034 0.541551 -0.741306
-v -0.663560 0.472541 -0.741306
-v -0.732569 0.353014 -0.741306
-v -0.732569 0.214997 -0.741306
-v -0.663560 0.095470 -0.741306
-v -0.544033 0.026461 -0.741306
-v -0.406015 0.026461 -0.741306
-v -0.286488 0.095470 -0.741306
-v -0.217479 0.214997 -0.741306
-v -0.217479 0.353015 -0.741306
-v -0.286488 0.472542 -0.741306
-v -0.406015 0.541551 -0.820350
-v -0.544033 0.541551 -0.820350
-v -0.663560 0.472542 -0.820350
-v -0.732569 0.353015 -0.820350
-v -0.732569 0.214997 -0.820350
-v -0.663560 0.095470 -0.820350
-v -0.544033 0.026461 -0.820350
-v -0.406015 0.026461 -0.820350
-v -0.286488 0.095470 -0.820350
-v -0.217479 0.214997 -0.820350
-v -0.217479 0.353015 -0.820350
-v -0.286488 0.472542 -0.820350
-v -0.475024 0.284006 -0.683962
-v -0.475024 0.284006 0.791210
-v -0.465715 0.318747 -0.683962
-v -0.484333 0.318747 -0.683962
-v -0.500457 0.309438 -0.683962
-v -0.509766 0.293315 -0.683962
-v -0.509766 0.274697 -0.683962
-v -0.500457 0.258573 -0.683962
-v -0.484333 0.249264 -0.683962
-v -0.465715 0.249264 -0.683962
-v -0.449592 0.258573 -0.683962
-v -0.440283 0.274697 -0.683962
-v -0.440283 0.293315 -0.683962
-v -0.449592 0.309438 -0.683962
-v -0.465715 0.318747 0.791210
-v -0.484333 0.318747 0.791210
-v -0.500457 0.309438 0.791210
-v -0.509766 0.293315 0.791210
-v -0.509766 0.274697 0.791210
-v -0.500457 0.258573 0.791210
-v -0.484333 0.249264 0.791210
-v -0.465715 0.249264 0.791210
-v -0.449592 0.258573 0.791210
-v -0.440283 0.274697 0.791210
-v -0.440283 0.293315 0.791210
-v -0.449592 0.309438 0.791210
-v -0.040539 0.313837 0.791210
-v -0.031230 0.297713 0.791210
-v -0.031230 0.279095 0.791210
-v -0.040539 0.262972 0.791210
-v -0.056662 0.253663 0.791210
-v -0.075280 0.253663 0.791210
-v -0.091404 0.262972 0.791210
-v -0.100713 0.279095 0.791210
-v -0.100713 0.297713 0.791210
-v -0.091404 0.313837 0.791210
-v -0.075280 0.323146 0.791210
-v -0.056662 0.323146 0.791210
-v -0.040539 0.313837 -0.683962
-v -0.031230 0.297713 -0.683962
-v -0.031230 0.279095 -0.683962
-v -0.040539 0.262972 -0.683962
-v -0.056662 0.253663 -0.683962
-v -0.075280 0.253663 -0.683962
-v -0.091404 0.262972 -0.683962
-v -0.100713 0.279095 -0.683962
-v -0.100713 0.297713 -0.683962
-v -0.091404 0.313837 -0.683962
-v -0.075280 0.323146 -0.683962
-v -0.056662 0.323146 -0.683962
-v -0.065971 0.288404 0.791210
-v -0.065971 0.288404 -0.683962
-v 0.356277 0.279607 -0.683962
-v 0.356277 0.279607 0.791210
-v 0.365586 0.314349 -0.683962
-v 0.346968 0.314349 -0.683962
-v 0.330844 0.305040 -0.683962
-v 0.321535 0.288916 -0.683962
-v 0.321535 0.270298 -0.683962
-v 0.330844 0.254175 -0.683962
-v 0.346968 0.244866 -0.683962
-v 0.365586 0.244866 -0.683962
-v 0.381709 0.254175 -0.683962
-v 0.391018 0.270299 -0.683962
-v 0.391018 0.288916 -0.683962
-v 0.381709 0.305040 -0.683962
-v 0.365586 0.314349 0.791210
-v 0.346968 0.314349 0.791210
-v 0.330844 0.305040 0.791210
-v 0.321535 0.288916 0.791210
-v 0.321535 0.270299 0.791210
-v 0.330844 0.254175 0.791210
-v 0.346968 0.244866 0.791210
-v 0.365586 0.244866 0.791210
-v 0.381709 0.254175 0.791210
-v 0.391018 0.270299 0.791210
-v 0.391018 0.288916 0.791210
-v 0.381709 0.305040 0.791210
-v 0.790762 0.313837 0.791210
-v 0.800071 0.297713 0.791210
-v 0.800071 0.279095 0.791210
-v 0.790762 0.262972 0.791210
-v 0.774639 0.253663 0.791210
-v 0.756021 0.253663 0.791210
-v 0.739897 0.262972 0.791210
-v 0.730588 0.279095 0.791210
-v 0.730588 0.297713 0.791210
-v 0.739897 0.313837 0.791210
-v 0.756021 0.323146 0.791210
-v 0.774639 0.323146 0.791210
-v 0.790762 0.313837 -0.683962
-v 0.800071 0.297713 -0.683962
-v 0.800071 0.279095 -0.683962
-v 0.790762 0.262972 -0.683962
-v 0.774639 0.253663 -0.683962
-v 0.756021 0.253663 -0.683962
-v 0.739897 0.262972 -0.683962
-v 0.730588 0.279095 -0.683962
-v 0.730588 0.297713 -0.683962
-v 0.739897 0.313837 -0.683962
-v 0.756021 0.323146 -0.683962
-v 0.774639 0.323146 -0.683962
-v 0.765330 0.288404 0.791210
-v 0.765330 0.288404 -0.683962
-v -1.224204 0.479266 0.791210
-v -1.214895 0.463143 0.791210
-v -1.214895 0.444525 0.791210
-v -1.224204 0.428401 0.791210
-v -1.240328 0.419092 0.791210
-v -1.258946 0.419092 0.791210
-v -1.275069 0.428401 0.791210
-v -1.284378 0.444525 0.791210
-v -1.284378 0.463143 0.791210
-v -1.275069 0.479266 0.791210
-v -1.258946 0.488575 0.791210
-v -1.240328 0.488575 0.791210
-v -1.224204 0.479266 -0.683962
-v -1.214895 0.463143 -0.683962
-v -1.214895 0.444525 -0.683962
-v -1.224204 0.428401 -0.683962
-v -1.240328 0.419093 -0.683962
-v -1.258945 0.419092 -0.683962
-v -1.275069 0.428401 -0.683962
-v -1.284378 0.444525 -0.683962
-v -1.284378 0.463143 -0.683962
-v -1.275069 0.479266 -0.683962
-v -1.258946 0.488575 -0.683962
-v -1.240328 0.488575 -0.683962
-v -1.249637 0.453834 0.791210
-v -1.249637 0.453834 -0.683962
-v 1.270739 0.468328 -0.596479
-v 1.330230 0.355434 -0.596479
-v 1.330230 0.355434 -0.759887
-v 1.270739 0.468328 -0.759887
-v 1.282996 0.231377 -0.759887
-v 1.282996 0.231377 -0.596479
-v 1.181844 0.507247 -0.759887
-v 1.181844 0.507247 -0.596479
-v 0.742673 0.507913 -0.596479
-v 0.750239 0.082236 -0.596479
-v 0.750239 0.082235 -0.759887
-v 0.742673 0.507913 -0.759887
-v -0.246925 0.060885 -0.759887
-v -0.246925 0.060885 -0.596479
-v -0.221227 0.508659 -0.759887
-v -0.221227 0.508659 -0.596479
-v -0.863862 0.475764 -0.596479
-v -1.289389 0.593030 -0.596479
-v -0.879231 0.075904 -0.596479
-v -1.208087 0.182402 -0.596479
-v -0.863862 0.475764 -0.759887
-v -1.289389 0.593030 -0.759887
-v -0.879231 0.075903 -0.759887
-v -1.208086 0.182402 -0.759887
-v -1.494229 0.356489 -0.596479
-v -1.508922 0.505419 -0.596479
-v -1.494229 0.356489 -0.759887
-v -1.508922 0.505419 -0.759887
-v -1.494229 0.356489 -0.793902
-v -1.208086 0.182402 -0.793902
-v -1.508922 0.505419 -0.793902
-v -1.289389 0.593030 -0.793902
-v -1.494229 0.356489 -0.562464
-v -1.208087 0.182402 -0.562464
-v -1.508922 0.505419 -0.562464
-v -1.289389 0.593030 -0.562464
-v -0.863862 0.475764 -0.562464
-v -0.863862 0.475764 -0.793903
-v -0.879231 0.075904 -0.562464
-v -0.879231 0.075903 -0.793902
-v -0.221227 0.508659 -0.793903
-v -0.246925 0.060885 -0.793902
-v -0.246925 0.060885 -0.562464
-v -0.221227 0.508659 -0.562464
-v 0.742673 0.507913 -0.562464
-v 0.742673 0.507913 -0.793903
-v 0.750239 0.082236 -0.562464
-v 0.750239 0.082235 -0.793902
-v 1.181844 0.507247 -0.793902
-v 1.270739 0.468328 -0.793902
-v 1.330230 0.355434 -0.793902
-v 1.282996 0.231377 -0.793902
-v 1.282996 0.231377 -0.562464
-v 1.330230 0.355434 -0.562464
-v 1.270739 0.468328 -0.562464
-v 1.181844 0.507247 -0.562464
-v 1.332748 0.511724 -0.562464
-v 1.395644 0.365789 -0.562464
-v 1.395644 0.365788 -0.793902
-v 1.332748 0.511724 -0.793902
-v 1.212374 0.562033 -0.793902
-v 1.338166 0.205424 -0.793902
-v 1.338166 0.205424 -0.562464
-v 1.212374 0.562033 -0.562464
-v 0.785763 0.538783 -0.562464
-v 0.782453 0.040763 -0.562464
-v 0.782453 0.040763 -0.793902
-v 0.785763 0.538783 -0.793903
-v -0.229542 0.539412 -0.793903
-v -0.251475 0.029684 -0.793902
-v -0.251475 0.029684 -0.562464
-v -0.229542 0.539412 -0.562464
-v -1.315416 0.643989 -0.562464
-v -1.231003 0.156069 -0.562464
-v -1.315416 0.643988 -0.793902
-v -1.231003 0.156069 -0.793902
-v -0.908962 0.521336 -0.562464
-v -0.899031 0.043517 -0.562464
-v -0.899031 0.043517 -0.793902
-v -0.908962 0.521336 -0.793903
-v -1.536492 0.532880 -0.562464
-v -1.538761 0.339246 -0.562464
-v -1.538761 0.339246 -0.793902
-v -1.536492 0.532880 -0.793902
-v 1.195337 0.468308 0.689513
-v 1.251507 0.355434 0.689513
-v 1.251507 0.355433 0.826802
-v 1.195337 0.468308 0.826802
-v 1.206910 0.231398 0.826802
-v 1.206910 0.231398 0.689513
-v 1.111403 0.507221 0.826802
-v 1.111403 0.507221 0.689513
-v 0.696743 0.507887 0.689513
-v 0.703887 0.082282 0.689513
-v 0.703887 0.082282 0.826802
-v 0.696743 0.507887 0.826802
-v -0.237621 0.060934 0.826802
-v -0.237621 0.060935 0.689513
-v -0.213357 0.508633 0.826803
-v -0.213357 0.508633 0.689513
-v -0.820125 0.475743 0.689513
-v -1.221901 0.592989 0.689513
-v -0.834636 0.075951 0.689513
-v -1.145137 0.182431 0.689513
-v -0.820125 0.475743 0.826802
-v -1.221901 0.592989 0.826802
-v -0.834636 0.075951 0.826802
-v -1.145137 0.182431 0.826802
-v -1.415309 0.356488 0.689513
-v -1.429182 0.505393 0.689513
-v -1.415309 0.356488 0.826802
-v -1.429182 0.505393 0.826802
-v -1.415309 0.356488 0.855381
-v -1.145137 0.182431 0.855380
-v -1.429182 0.505393 0.855381
-v -1.221901 0.592989 0.855381
-v -1.415309 0.356488 0.660935
-v -1.145137 0.182431 0.660935
-v -1.429182 0.505393 0.660935
-v -1.221901 0.592989 0.660935
-v -0.820125 0.475743 0.660935
-v -0.820125 0.475743 0.855381
-v -0.834636 0.075951 0.660935
-v -0.834636 0.075951 0.855380
-v -0.213357 0.508633 0.855381
-v -0.237621 0.060934 0.855381
-v -0.237621 0.060935 0.660935
-v -0.213357 0.508633 0.660935
-v 0.696743 0.507887 0.660935
-v 0.696743 0.507887 0.855381
-v 0.703887 0.082282 0.660935
-v 0.703887 0.082282 0.855380
-v 1.111403 0.507221 0.855381
-v 1.195337 0.468308 0.855381
-v 1.251507 0.355433 0.855380
-v 1.206910 0.231398 0.855380
-v 1.206910 0.231398 0.660935
-v 1.251507 0.355434 0.660935
-v 1.195337 0.468308 0.660935
-v 1.111403 0.507221 0.660935
-v 1.253884 0.511697 0.660935
-v 1.313270 0.365787 0.660935
-v 1.313270 0.365786 0.855380
-v 1.253884 0.511697 0.855381
-v 1.140229 0.561997 0.855381
-v 1.259001 0.205449 0.855380
-v 1.259001 0.205449 0.660935
-v 1.140229 0.561998 0.660935
-v 0.737429 0.538752 0.660935
-v 0.734303 0.040816 0.660935
-v 0.734303 0.040816 0.855380
-v 0.737429 0.538752 0.855381
-v -0.221208 0.539381 0.855381
-v -0.241917 0.029739 0.855381
-v -0.241917 0.029739 0.660935
-v -0.221208 0.539381 0.660935
-v -1.246477 0.643939 0.660935
-v -1.166775 0.156103 0.660935
-v -1.246477 0.643939 0.855381
-v -1.166774 0.156102 0.855380
-v -0.862708 0.521307 0.660935
-v -0.853331 0.043570 0.660935
-v -0.853331 0.043570 0.855380
-v -0.862708 0.521307 0.855381
-v -1.455213 0.532849 0.660935
-v -1.457355 0.339248 0.660935
-v -1.457355 0.339248 0.855381
-v -1.455213 0.532849 0.855381
-v -1.577361 0.565007 -0.851689
-v -1.577361 0.565007 0.931663
-v -1.446731 0.565007 0.039987
-v -0.939309 0.603378 -0.851689
-v -0.939309 0.603378 0.931664
-v -1.422660 0.666720 -0.851689
-v -1.422660 0.666720 0.931664
-v -1.422660 0.507895 0.039988
-v -0.233732 0.589251 -0.851689
-v -0.233732 0.589251 0.931664
-v 0.853378 0.596235 -0.851689
-v 0.853378 0.596235 0.931664
-v 1.096157 0.606791 0.039987
-v 1.248650 0.620652 0.039987
-v 1.248650 0.620652 -0.851689
-v 1.248650 0.620652 0.931663
-v 1.341684 0.563688 -0.851689
-v 1.341684 0.563688 0.931663
-v 1.341684 0.563688 0.039987
-v 1.381463 0.735060 -0.851689
-v 1.381463 0.735060 0.931664
-v 1.255348 0.825105 -0.851689
-v 1.255348 0.825105 0.931664
-v 0.612542 0.830768 -0.851689
-v 0.612542 0.830768 0.931664
-v -0.280308 0.840962 -0.851689
-v -0.280308 0.840962 0.931664
-v -0.973246 0.833350 -0.851689
-v -0.973246 0.833350 0.931664
-v -1.510920 0.665493 0.039987
-v -1.499334 0.765799 -0.851689
-v -1.499334 0.765799 0.931664
-v -1.641550 0.665492 -0.851689
-v -1.641550 0.665492 0.931664
-v -1.176594 0.715866 -0.851689
-v -1.176594 0.715866 0.931664
-v -1.267956 0.831710 -0.851689
-v -1.267956 0.831710 0.931664
-v 1.526225 0.620530 -0.851689
-v 1.526225 0.620530 0.931664
-v 1.436825 0.465698 0.039987
-v 1.436825 0.465698 -0.851689
-v 1.436825 0.465698 0.931663
-v 1.654922 0.477510 -0.851689
-v 1.654922 0.477510 0.931663
-v 1.654922 0.477510 0.039987
-v 1.551287 0.589238 -0.851689
-v 1.551287 0.589238 0.931664
-v -1.267956 0.874239 -0.851689
-v -1.267956 0.874239 0.931664
-v -1.267957 0.874240 0.039987
-v -1.641550 0.708022 -0.851689
-v -1.641550 0.708022 0.931664
-v -1.499334 0.808328 -0.851689
-v -1.499334 0.808328 0.931664
-v -1.510920 0.708022 0.039987
-v -1.368704 0.808329 0.039987
-v -0.973246 0.875880 0.039987
-v -0.973246 0.875880 -0.851689
-v -0.973246 0.875880 0.931664
-v -0.280308 0.883491 -0.851689
-v -0.280308 0.883491 0.931664
-v 0.612542 0.873298 -0.851689
-v 0.612542 0.873298 0.931664
-v 1.255348 0.867634 -0.851689
-v 1.255348 0.867634 0.931664
-v 1.255348 0.867634 -0.876186
-v 1.255348 0.867634 0.956160
-v 0.612542 0.873298 -0.876186
-v 0.612542 0.873298 0.956161
-v -0.280308 0.883491 -0.876186
-v -0.280308 0.883491 0.956161
-v -0.973246 0.875880 -0.876186
-v -0.973246 0.875880 0.956161
-v -1.499334 0.808328 -0.876186
-v -1.499334 0.808328 0.956160
-v -1.641550 0.708022 -0.876186
-v -1.641550 0.708022 0.956160
-v -1.267956 0.874239 -0.876186
-v -1.267956 0.874239 0.956161
-v -1.267956 0.831710 -0.876186
-v -1.267956 0.831710 0.956161
-v -1.641550 0.665492 -0.876186
-v -1.641550 0.665492 0.956160
-v -1.499334 0.765799 -0.876186
-v -1.499334 0.765799 0.956160
-v -0.973246 0.833350 -0.876186
-v -0.973246 0.833350 0.956161
-v -0.280308 0.840962 -0.876186
-v -0.280308 0.840962 0.956161
-v 0.612542 0.830768 -0.876186
-v 0.612542 0.830768 0.956161
-v 1.255348 0.825105 -0.876186
-v 1.255348 0.825105 0.956160
-v -1.446731 0.565007 -0.538841
-v -1.446731 0.565007 0.618816
-v -0.939309 0.603378 -0.461279
-v -0.939309 0.603378 0.541254
-v -1.422660 0.666720 -0.538841
-v -1.422660 0.666720 0.618816
-v -0.233732 0.589251 -0.461280
-v -0.233732 0.589251 0.541254
-v 1.096157 0.606790 -0.461279
-v 1.096157 0.606790 0.541254
-v 1.248650 0.620652 -0.461279
-v 1.248650 0.620652 0.541254
-v 1.341684 0.563688 -0.461279
-v 1.341684 0.563688 0.541254
-v -1.510920 0.665492 -0.538841
-v -1.510920 0.665492 0.618816
-v -1.176594 0.715866 -0.461279
-v -1.176594 0.715866 0.541254
-v 1.436825 0.465698 -0.461279
-v 1.436825 0.465698 0.541254
-v 1.654922 0.477510 -0.461279
-v 1.654922 0.477510 0.541254
-v -1.510920 0.708022 -0.538841
-v -1.510920 0.708022 0.618816
-v -0.973246 0.875880 -0.461280
-v -0.973246 0.875880 0.541255
-v -1.368704 0.808328 -0.538841
-v -1.368704 0.808328 0.618816
-v -1.267956 0.874240 -0.534759
-v -1.267956 0.874240 0.614734
-v -1.047296 0.235032 -0.496468
-v -1.047296 0.235032 0.594037
-v -0.852542 0.235032 -0.496468
-v -0.852542 0.235032 0.594037
-v -0.786714 0.235032 -0.496468
-v -0.786714 0.235032 0.594037
-v -0.232998 0.235032 -0.496468
-v -0.232998 0.235032 0.594037
-v 1.045946 0.504302 -0.461279
-v 1.045946 0.504302 0.541254
-v 1.045946 0.504302 0.039987
-v -1.047296 0.235032 0.039987
-v -0.852542 0.235032 0.039987
-v -0.786714 0.235032 0.039987
-v -0.232998 0.235032 0.039987
-v -1.577361 0.565007 -0.539361
-v -1.577361 0.565007 0.619336
-v -0.939309 0.603378 -0.539361
-v -0.939309 0.603378 0.619336
-v -1.422660 0.666720 -0.539361
-v -1.422660 0.666720 0.619336
-v -0.233732 0.589251 -0.539361
-v -0.233732 0.589251 0.619336
-v 0.853378 0.596235 -0.539361
-v 0.853378 0.596235 0.619336
-v 1.248650 0.620652 -0.539361
-v 1.248650 0.620652 0.619336
-v 1.341684 0.563688 -0.539361
-v 1.341684 0.563688 0.619336
-v -1.641550 0.665492 -0.539361
-v -1.641550 0.665492 0.619336
-v -1.176594 0.715866 -0.539361
-v -1.176594 0.715866 0.619336
-v 1.436825 0.465698 -0.539361
-v 1.436825 0.465698 0.619336
-v 1.654922 0.477510 -0.539361
-v 1.654922 0.477510 0.619336
-v -1.641550 0.708022 -0.539361
-v -1.641550 0.708022 0.619336
-v 1.255348 0.867634 -0.539361
-v 1.255348 0.867634 0.619336
-v 0.612542 0.873298 -0.539361
-v 0.612542 0.873298 0.619336
-v -0.280308 0.883492 -0.539362
-v -0.280308 0.883492 0.619336
-v -0.973246 0.875880 -0.539362
-v -0.973246 0.875880 0.619336
-v -1.499334 0.808328 -0.539361
-v -1.499334 0.808328 0.619336
-v -1.267956 0.874240 -0.539361
-v -1.267956 0.874240 0.619336
-v -0.278885 1.075182 -0.539362
-v -0.278885 1.075182 0.619336
-v -0.926462 1.070405 -0.539362
-v -0.926462 1.070405 0.619336
-v 0.613965 1.092280 -0.539361
-v 0.613965 1.092280 0.619336
-v 1.113885 1.067490 -0.539361
-v 1.113885 1.067490 0.619336
-v -0.926462 1.070405 -0.461280
-v -0.926462 1.070405 0.541255
-v -0.926462 1.070406 0.039987
-v -0.278939 1.105192 -0.434355
-v -0.278939 1.105192 0.514330
-v -0.278939 1.105192 0.039987
-v -0.926516 1.100415 0.039987
-v -0.926516 1.100415 -0.434355
-v -0.926516 1.100415 0.514330
-v -0.926516 1.100415 -0.497533
-v -0.926516 1.100415 0.577508
-v -0.278939 1.105192 -0.497533
-v -0.278939 1.105192 0.577508
-v 0.761021 0.596035 -0.851689
-v 0.761021 0.596035 0.931664
-v 0.518070 0.832464 -0.851689
-v 0.518070 0.832464 0.931664
-v 0.518070 0.874994 -0.851689
-v 0.518070 0.874994 0.931664
-v 0.518070 0.874994 -0.876186
-v 0.518070 0.874994 0.956161
-v 0.518070 0.832464 -0.876186
-v 0.518070 0.832464 0.956161
-v 0.761021 0.596035 -0.461280
-v 0.761021 0.596035 0.541254
-v 0.826258 0.251956 -0.496468
-v 0.826258 0.251956 0.594037
-v 0.826258 0.251956 0.039987
-v 0.761021 0.596035 -0.539361
-v 0.761021 0.596035 0.619336
-v 0.518070 0.874994 -0.539362
-v 0.518070 0.874994 0.619336
-v 0.519493 1.066684 -0.539362
-v 0.519493 1.066684 0.619336
-v 0.519439 1.096694 0.039987
-v 0.519439 1.096694 -0.497533
-v 0.519439 1.096694 0.577508
-v 0.519439 1.096694 -0.434355
-v 0.519439 1.096694 0.514330
-v 0.519439 1.140773 -0.434355
-v 0.519439 1.140773 0.514330
-v 0.519439 1.140773 -0.497533
-v 0.519439 1.140773 0.577508
-v 0.519439 1.140773 0.039987
-v 0.519493 1.110763 -0.539362
-v 0.519493 1.110763 0.619336
-v 0.613912 1.139077 -0.497533
-v 0.613912 1.139077 0.577508
-v 1.113831 1.141578 -0.497533
-v 1.113831 1.141578 0.577508
-v 1.113831 1.141578 -0.434355
-v 1.113831 1.141578 0.514330
-v 1.113831 1.141578 0.039987
-v 0.613912 1.139077 0.039987
-v 0.613912 1.139077 -0.434355
-v 0.613912 1.139077 0.514330
-v 1.113885 1.111568 -0.539361
-v 1.113885 1.111568 0.619336
-v 0.613965 1.109067 -0.539361
-v 0.613965 1.109067 0.619336
-v 1.223491 1.081898 -0.525092
-v 1.223491 1.081898 0.605067
-v 1.223491 1.081898 -0.447010
-v 1.223491 1.081898 0.526985
-v 1.223491 1.081898 0.039987
-v 1.171478 1.111908 0.039987
-v 1.171478 1.111908 -0.420085
-v 1.171478 1.111908 0.500060
-v 1.171478 1.111908 -0.483264
-v 1.171478 1.111908 0.563239
-v 1.379368 1.042543 0.039987
-v 1.379368 1.042543 -0.447010
-v 1.379368 1.042543 0.526985
-v 1.379368 1.042543 -0.483936
-v 1.379368 1.042543 0.563911
-v 1.388576 0.882838 -0.525092
-v 1.388576 0.882838 0.605067
-v 1.472182 0.889622 -0.525092
-v 1.472182 0.889622 0.605067
-v 1.667123 0.884977 -0.525092
-v 1.667123 0.884977 0.605067
-v 1.678602 0.765374 -0.525092
-v 1.678602 0.765374 0.605067
-v 1.678105 0.524436 -0.525092
-v 1.678105 0.524436 0.605066
-v 1.388576 0.882838 -0.447010
-v 1.388576 0.882838 0.526985
-v 1.472182 0.889622 -0.447010
-v 1.472182 0.889622 0.526985
-v 1.667123 0.884977 -0.447010
-v 1.667123 0.884977 0.526985
-v 1.678602 0.765374 -0.447010
-v 1.678602 0.765374 0.526985
-v 1.678105 0.524436 -0.447010
-v 1.678105 0.524436 0.526985
-v 1.472182 0.847092 -0.861916
-v 1.472182 0.847092 0.941891
-v 1.386214 0.837946 -0.861916
-v 1.386214 0.837946 0.941891
-v 1.586242 0.841199 -0.861916
-v 1.586242 0.841199 0.941891
-v 1.678602 0.765374 -0.861916
-v 1.678602 0.765374 0.941891
-v 1.667123 0.884976 -0.861916
-v 1.667123 0.884976 0.941891
-v 1.586242 0.883729 -0.861916
-v 1.586242 0.883729 0.941891
-v 1.388576 0.882838 -0.861916
-v 1.388576 0.882838 0.941891
-v 1.472182 0.889622 -0.861916
-v 1.472182 0.889622 0.941891
-v 1.472182 0.889622 -0.837419
-v 1.472182 0.889622 0.917394
-v 1.388576 0.882838 -0.837419
-v 1.388576 0.882838 0.917394
-v 1.667123 0.884976 -0.837419
-v 1.667123 0.884976 0.917394
-v 1.667123 0.884977 0.039987
-v 1.678602 0.765374 0.039987
-v 1.678602 0.765374 -0.837419
-v 1.678602 0.765374 0.917394
-v 1.678105 0.524436 0.039987
-v 1.678105 0.524436 -0.837419
-v 1.678105 0.524436 0.917394
-v 1.586242 0.841199 -0.837419
-v 1.586242 0.841199 0.917394
-v 1.386214 0.837946 -0.837419
-v 1.386214 0.837946 0.917394
-v 1.472182 0.847092 -0.837419
-v 1.472182 0.847092 0.917394
-v 1.723043 0.997585 0.039987
-v 1.589019 1.037178 0.039987
-v 1.474959 1.043071 0.039987
-v 1.723043 0.997585 -0.447010
-v 1.723043 0.997585 0.526985
-v 1.474959 1.043071 -0.447010
-v 1.474959 1.043071 0.526985
-v 1.589019 1.037178 -0.447010
-v 1.589019 1.037178 0.526985
-v 1.723043 0.997585 -0.483936
-v 1.723043 0.997585 0.563911
-v 1.474959 1.043071 -0.483936
-v 1.474959 1.043071 0.563911
-v 1.589019 1.037178 -0.483936
-v 1.589019 1.037178 0.563911
-v 1.361573 0.649374 -0.851689
-v 1.361573 0.649374 0.931664
-v 1.251999 0.722878 -0.851689
-v 1.251999 0.722878 0.931664
-v 0.606831 0.709639 -0.851689
-v 0.606831 0.709639 0.931664
-v -0.278244 0.715106 -0.851689
-v -0.278244 0.715106 0.931664
-v -0.956277 0.718364 -0.851689
-v -0.956277 0.718364 0.931664
-v -1.478825 0.615250 0.039987
-v -1.435341 0.748637 -0.851689
-v -1.435341 0.748637 0.931664
-v -1.609456 0.615250 -0.851689
-v -1.609456 0.615250 0.931664
-v -1.222275 0.773788 -0.851689
-v -1.222275 0.773788 0.931664
-v 1.481525 0.543114 -0.851689
-v 1.481525 0.543114 0.931664
-v 1.575227 0.539113 -0.851689
-v 1.575227 0.539113 0.931664
-v -1.478825 0.615250 -0.538841
-v -1.478825 0.615250 0.618816
-v -1.609456 0.615250 -0.539361
-v -1.609456 0.615250 0.619336
-v 0.510586 0.708971 -0.851689
-v 0.510586 0.708971 0.931664
-v 1.607020 0.598169 -0.837419
-v 1.607020 0.598169 0.917394
-v 1.607020 0.598170 0.039987
-v 1.607020 0.598170 -0.447010
-v 1.607020 0.598170 0.526985
-v 1.607020 0.598170 -0.525092
-v 1.607020 0.598170 0.605066
-v 1.569652 0.887299 -0.837419
-v 1.569652 0.887299 0.917394
-v 1.569652 0.887299 -0.525092
-v 1.569652 0.887299 0.605067
-v 1.198902 0.617679 0.039987
-v 1.198902 0.617679 -0.851689
-v 1.198902 0.617679 0.931663
-v 1.070532 0.825586 -0.851689
-v 1.070532 0.825586 0.931664
-v 1.070532 0.868116 -0.851689
-v 1.070532 0.868116 0.931664
-v 1.070532 0.868116 -0.876186
-v 1.070532 0.868116 0.956160
-v 1.070532 0.825586 -0.876186
-v 1.070532 0.825586 0.956160
-v 1.198902 0.617679 -0.461279
-v 1.198902 0.617679 0.541254
-v 1.198902 0.617679 -0.539361
-v 1.198902 0.617679 0.619336
-v 1.070532 0.868116 -0.539361
-v 1.070532 0.868116 0.619336
-v 1.071392 1.094569 -0.539361
-v 1.071392 1.094569 0.619336
-v 1.071392 1.111356 -0.539361
-v 1.071392 1.111356 0.619336
-v 1.071338 1.141366 0.039987
-v 1.071338 1.141366 -0.497533
-v 1.071338 1.141366 0.577508
-v 1.071338 1.141366 -0.434355
-v 1.071338 1.141366 0.514330
-v 1.083962 0.724583 -0.851689
-v 1.083962 0.724583 0.931664
-v 0.168644 0.587365 -0.851689
-v 0.168644 0.587365 0.931664
-v 0.118881 0.836713 -0.851689
-v 0.118881 0.836713 0.931664
-v 0.118881 0.879243 -0.851689
-v 0.118881 0.879243 0.931664
-v 0.118881 0.879243 -0.876186
-v 0.118881 0.879243 0.956161
-v 0.118881 0.836713 -0.876186
-v 0.118881 0.836713 0.956161
-v 0.168644 0.587365 -0.461280
-v 0.168644 0.587365 0.541254
-v 0.080240 0.232939 -0.496468
-v 0.080240 0.232939 0.594037
-v 0.080240 0.232939 0.039987
-v 0.168644 0.587365 -0.539361
-v 0.168644 0.587365 0.619336
-v 0.118881 0.879243 -0.539362
-v 0.118881 0.879243 0.619336
-v 0.120304 1.070933 -0.539362
-v 0.120304 1.070933 0.619336
-v 0.120250 1.100943 0.039987
-v 0.120250 1.100943 -0.497533
-v 0.120250 1.100943 0.577508
-v 0.120250 1.100943 -0.434355
-v 0.120250 1.100943 0.514330
-v 0.116171 0.712039 -0.851689
-v 0.116171 0.712039 0.931664
-v 0.087090 1.055393 -0.564162
-v 0.087090 1.055393 0.644137
-v 0.085903 0.895488 -0.564162
-v 0.085903 0.895488 0.644137
-v -0.245907 1.058937 -0.564162
-v -0.245907 1.058937 0.644137
-v -0.247094 0.899032 -0.564162
-v -0.247094 0.899032 0.644137
-v 0.162268 1.050261 -0.564162
-v 0.162268 1.050261 0.644137
-v 0.161145 0.899018 -0.564162
-v 0.161145 0.899018 0.644137
-v 0.477228 1.046909 -0.564162
-v 0.477228 1.046909 0.644137
-v 0.476105 0.895665 -0.564162
-v 0.476105 0.895665 0.644137
-v 1.015405 1.070430 -0.561682
-v 1.015405 1.070430 0.641656
-v 1.014755 0.892608 -0.561682
-v 1.014755 0.892608 0.641656
-v 0.669674 1.068700 -0.561682
-v 0.669674 1.068700 0.641656
-v 0.668598 0.896525 -0.561682
-v 0.668598 0.896525 0.641656
-v 1.028887 1.165599 -0.390334
-v 1.028887 1.165599 0.470309
-v 1.028887 1.165599 0.039987
-v 0.656362 1.163735 -0.390334
-v 0.656362 1.163735 0.470309
-v 0.656362 1.163735 0.039987
-v 0.505304 0.904293 -0.567322
-v 0.505304 0.904293 0.647297
-v 0.119306 0.908149 -0.567322
-v 0.119306 0.908149 0.647297
-v -0.266694 0.912005 -0.567322
-v -0.266694 0.912005 0.647297
-v 0.505304 0.904293 -0.823728
-v 0.505304 0.904293 0.903703
-v 0.119306 0.908149 -0.823728
-v 0.119306 0.908149 0.903703
-v -0.266694 0.912004 -0.823728
-v -0.266694 0.912004 0.903703
-v 0.596656 0.902754 -0.567322
-v 0.596656 0.902754 0.647297
-v 1.039513 0.898052 -0.567322
-v 1.039513 0.898052 0.647297
-v 1.218222 0.897615 -0.567322
-v 1.218222 0.897615 0.647297
-v 1.218222 0.897615 -0.823728
-v 1.218222 0.897615 0.903703
-v 1.039513 0.898052 -0.823728
-v 1.039513 0.898052 0.903703
-v 0.596656 0.902754 -0.823728
-v 0.596656 0.902754 0.903703
-v -0.936735 0.905098 -0.567322
-v -0.936735 0.905098 0.647297
-v -1.221708 0.903609 -0.567322
-v -1.221708 0.903609 0.647297
-v -1.221708 0.903609 -0.823728
-v -1.221708 0.903609 0.903703
-v -0.936735 0.905097 -0.823728
-v -0.936735 0.905097 0.903703
-vt 0.308549 0.123557
-vt 0.253325 0.122848
-vt 0.253067 0.117193
-vt 0.253349 0.139958
-vt 0.308577 0.139267
-vt 0.308568 0.145989
-vt 0.183023 0.122001
-vt 0.158248 0.121433
-vt 0.158348 0.117990
-vt 0.183042 0.140779
-vt 0.183036 0.144483
-vt 0.158364 0.144781
-vt 0.152314 0.121211
-vt 0.152446 0.117786
-vt 0.158265 0.141338
-vt 0.152461 0.144982
-vt 0.214985 0.122414
-vt 0.253089 0.145613
-vt 0.214919 0.144896
-vt 0.183019 0.118297
-vt 0.215006 0.140378
-vt 0.492649 0.246385
-vt 0.535237 0.234885
-vt 0.535927 0.240738
-vt 0.492124 0.354006
-vt 0.494118 0.349116
-vt 0.535062 0.360533
-vt 0.585555 0.236087
-vt 0.585417 0.243630
-vt 0.534252 0.366342
-vt 0.584363 0.358699
-vt 0.463307 0.264141
-vt 0.494548 0.251340
-vt 0.463307 0.335726
-vt 0.465711 0.331847
-vt 0.664057 0.234651
-vt 0.664930 0.243329
-vt 0.584342 0.366206
-vt 0.663473 0.360679
-vt 0.493000 0.238513
-vt 0.535289 0.227400
-vt 0.534146 0.373790
-vt 0.492308 0.361845
-vt 0.585836 0.227909
-vt 0.584448 0.374350
-vt 0.463933 0.256088
-vt 0.463761 0.343751
-vt 0.663896 0.225768
-vt 0.662073 0.378130
-vt 0.811601 0.436173
-vt 0.802614 0.496154
-vt 0.786727 0.496048
-vt 0.810803 0.556249
-vt 0.788516 0.558034
-vt 0.442277 0.282354
-vt 0.404022 0.282564
-vt 0.404022 0.274267
-vt 0.365766 0.282355
-vt 0.365897 0.273788
-vt 0.442269 0.292954
-vt 0.404022 0.293011
-vt 0.365774 0.292955
-vt 0.442089 0.309920
-vt 0.404022 0.309777
-vt 0.365955 0.309921
-vt 0.763778 0.495896
-vt 0.765045 0.430895
-vt 0.772344 0.431112
-vt 0.770757 0.495942
-vt 0.771483 0.560788
-vt 0.746894 0.495784
-vt 0.743486 0.436453
-vt 0.764181 0.560908
-vt 0.708182 0.495527
-vt 0.709254 0.448900
-vt 0.730512 0.441311
-vt 0.735230 0.495706
-vt 0.729790 0.550034
-vt 0.742698 0.555063
-vt 0.868206 0.461577
-vt 0.854540 0.464626
-vt 0.867741 0.531600
-vt 0.834012 0.558172
-vt 0.872835 0.460970
-vt 0.834833 0.434559
-vt 0.872361 0.532268
-vt 0.854484 0.557240
-vt 0.911661 0.461034
-vt 0.855291 0.435763
-vt 0.911184 0.532720
-vt 0.911645 0.560345
-vt 0.979206 0.497328
-vt 0.974187 0.460625
-vt 0.982738 0.457140
-vt 0.988669 0.497390
-vt 0.982204 0.537559
-vt 0.854928 0.496502
-vt 0.854117 0.528369
-vt 0.869483 0.496598
-vt 0.874108 0.496629
-vt 0.911129 0.496875
-vt 0.136089 0.117088
-vt 0.099754 0.115538
-vt 0.101582 0.072691
-vt 0.099762 0.147211
-vt 0.136102 0.145674
-vt 0.137914 0.188526
-vt 0.783567 0.418524
-vt 0.811226 0.433235
-vt 0.810389 0.559182
-vt 0.782537 0.573524
-vt 0.888966 0.115909
-vt 0.887769 0.072715
-vt 0.985366 0.070010
-vt 0.888880 0.146899
-vt 0.986444 0.149575
-vt 0.985260 0.192753
-vt 0.912868 0.426360
-vt 0.912489 0.433418
-vt 0.911931 0.567407
-vt 0.854425 0.564239
-vt 0.668731 0.122007
-vt 0.667537 0.078818
-vt 0.682622 0.078400
-vt 0.668720 0.140862
-vt 0.683800 0.141275
-vt 0.682616 0.184452
-vt 0.448435 0.282381
-vt 0.442146 0.273788
-vt 0.359609 0.282382
-vt 0.359483 0.273718
-vt 0.036927 0.112856
-vt 0.038755 0.070010
-vt 0.074779 0.071547
-vt 0.036927 0.149868
-vt 0.072956 0.148344
-vt 0.074768 0.191196
-vt 0.855326 0.428764
-vt 0.832589 0.564549
-vt 0.072951 0.114394
-vt 0.101574 0.190063
-vt 0.833496 0.428164
-vt 0.649845 0.122528
-vt 0.648652 0.079341
-vt 0.649840 0.140344
-vt 0.667535 0.184037
-vt 0.448358 0.292985
-vt 0.359686 0.292986
-vt 0.619643 0.123361
-vt 0.618451 0.080176
-vt 0.618462 0.182690
-vt 0.619647 0.139516
-vt 0.448341 0.310024
-vt 0.359703 0.310025
-vt 0.766488 0.413067
-vt 0.771261 0.413067
-vt 0.770160 0.578816
-vt 0.160109 0.075190
-vt 0.160109 0.187585
-vt 0.154273 0.187834
-vt 0.752511 0.426698
-vt 0.765387 0.578753
-vt 0.709015 0.443122
-vt 0.730115 0.439320
-vt 0.708635 0.542163
-vt 0.729366 0.552020
-vt 0.751592 0.564938
-vt 0.044546 0.369599
-vt 0.061335 0.358750
-vt 0.110398 0.366803
-vt 0.113065 0.255042
-vt 0.063663 0.260755
-vt 0.047406 0.249118
-vt 0.058568 0.351216
-vt 0.060541 0.268151
-vt 0.042183 0.257470
-vt 0.053724 0.309546
-vt 0.039727 0.361010
-vt 0.033492 0.309066
-vt 0.058891 0.309669
-vt 0.062064 0.347245
-vt 0.062780 0.354046
-vt 0.063845 0.272283
-vt 0.111043 0.360778
-vt 0.113423 0.261093
-vt 0.064883 0.265523
-vt 0.111715 0.354106
-vt 0.113776 0.267792
-vt 0.115066 0.311009
-vt 0.421111 0.124795
-vt 0.421267 0.129770
-vt 0.404622 0.129029
-vt 0.404656 0.133823
-vt 0.421301 0.133087
-vt 0.421144 0.138062
-vt 0.784172 0.233732
-vt 0.803351 0.234080
-vt 0.803032 0.239943
-vt 0.781916 0.372753
-vt 0.782135 0.367074
-vt 0.800811 0.366973
-vt 0.784185 0.225634
-vt 0.803260 0.225710
-vt 0.781757 0.380810
-vt 0.801004 0.372813
-vt 0.952899 0.465731
-vt 0.952481 0.528571
-vt 0.973699 0.533960
-vt 0.955253 0.497168
-vt 0.777672 0.118993
-vt 0.764899 0.119346
-vt 0.763703 0.076154
-vt 0.777624 0.143848
-vt 0.776440 0.187026
-vt 0.763671 0.186676
-vt 0.979772 0.446402
-vt 0.986906 0.451197
-vt 0.979095 0.548256
-vt 0.975639 0.542385
-vt 0.190218 0.393625
-vt 0.192509 0.368876
-vt 0.203758 0.369579
-vt 0.206513 0.256735
-vt 0.195231 0.256898
-vt 0.194125 0.232039
-vt 0.196839 0.312991
-vt 0.195642 0.355777
-vt 0.190747 0.356114
-vt 0.197732 0.270146
-vt 0.191184 0.312852
-vt 0.195776 0.361357
-vt 0.191845 0.362926
-vt 0.192854 0.269572
-vt 0.194281 0.262814
-vt 0.195253 0.365284
-vt 0.198135 0.264573
-vt 0.204003 0.367319
-vt 0.206650 0.259008
-vt 0.197801 0.260622
-vt 0.204267 0.361986
-vt 0.204415 0.356313
-vt 0.206657 0.264354
-vt 0.206531 0.270035
-vt 0.205354 0.313202
-vt 0.247523 0.364077
-vt 0.253931 0.364117
-vt 0.259147 0.369482
-vt 0.261898 0.259503
-vt 0.256424 0.264607
-vt 0.250021 0.264335
-vt 0.254939 0.357821
-vt 0.257122 0.270946
-vt 0.250751 0.270289
-vt 0.257856 0.314410
-vt 0.248541 0.358166
-vt 0.251725 0.314254
-vt 0.247525 0.369108
-vt 0.277173 0.369443
-vt 0.279910 0.260428
-vt 0.250266 0.259306
-vt 0.247984 0.373977
-vt 0.281975 0.388514
-vt 0.285653 0.241594
-vt 0.250963 0.254462
-vt 0.447181 0.314254
-vt 0.440903 0.314362
-vt 0.367141 0.314363
-vt 0.360864 0.314255
-vt 0.612351 0.121587
-vt 0.611160 0.078403
-vt 0.611172 0.184463
-vt 0.612358 0.141290
-vt 0.404022 0.314616
-vt 0.925926 0.225223
-vt 0.925070 0.233201
-vt 0.901245 0.234190
-vt 0.922763 0.384224
-vt 0.898275 0.382484
-vt 0.898401 0.374780
-vt 0.925500 0.237404
-vt 0.922598 0.372098
-vt 0.922081 0.376270
-vt 0.517877 0.124167
-vt 0.517969 0.127545
-vt 0.498762 0.130174
-vt 0.517906 0.138709
-vt 0.498681 0.136358
-vt 0.498794 0.132699
-vt 0.959320 0.238908
-vt 0.976952 0.249716
-vt 0.954531 0.282475
-vt 0.956273 0.371321
-vt 0.947742 0.333418
-vt 0.952437 0.327880
-vt 0.923893 0.255725
-vt 0.940238 0.236590
-vt 0.937241 0.373221
-vt 0.921389 0.353838
-vt 0.901698 0.238624
-vt 0.898945 0.370379
-vt 0.529552 0.127238
-vt 0.529580 0.135640
-vt 0.529490 0.139024
-vt 0.573138 0.126055
-vt 0.556524 0.126521
-vt 0.556426 0.123133
-vt 0.573155 0.136825
-vt 0.573060 0.140212
-vt 0.556448 0.139746
-vt 0.960737 0.234693
-vt 0.979385 0.245640
-vt 0.957593 0.375544
-vt 0.974043 0.360945
-vt 0.940328 0.232462
-vt 0.937244 0.377329
-vt 0.960677 0.227072
-vt 0.974495 0.225685
-vt 0.957371 0.383123
-vt 0.976377 0.365051
-vt 0.940755 0.224963
-vt 0.937508 0.384798
-vt 0.441065 0.336268
-vt 0.441048 0.345439
-vt 0.404023 0.345367
-vt 0.366998 0.345440
-vt 0.366980 0.336269
-vt 0.404022 0.336226
-vt 0.573043 0.122667
-vt 0.555249 0.079944
-vt 0.555271 0.182927
-vt 0.447013 0.345463
-vt 0.361032 0.345465
-vt 0.360994 0.336285
-vt 0.328085 0.255810
-vt 0.328085 0.247423
-vt 0.335893 0.247423
-vt 0.360192 0.397721
-vt 0.352385 0.397721
-vt 0.352385 0.389334
-vt 0.328085 0.231427
-vt 0.360192 0.373338
-vt 0.360192 0.389334
-vt 0.260704 0.361471
-vt 0.263674 0.314557
-vt 0.279694 0.314961
-vt 0.263060 0.267584
-vt 0.280574 0.264608
-vt 0.278042 0.365303
-vt 0.335893 0.255810
-vt 0.331777 0.271156
-vt 0.328085 0.271156
-vt 0.360192 0.413067
-vt 0.316643 0.375857
-vt 0.311161 0.364689
-vt 0.311746 0.361795
-vt 0.314055 0.269801
-vt 0.313616 0.266882
-vt 0.319651 0.256004
-vt 0.315019 0.315849
-vt 0.328085 0.316177
-vt 0.325508 0.264879
-vt 0.300901 0.315494
-vt 0.299850 0.363096
-vt 0.288108 0.365613
-vt 0.289402 0.315205
-vt 0.290641 0.264804
-vt 0.302241 0.267906
-vt 0.300603 0.366807
-vt 0.288971 0.369685
-vt 0.291708 0.260780
-vt 0.303179 0.264237
-vt 0.287988 0.369501
-vt 0.287093 0.386216
-vt 0.278264 0.386589
-vt 0.290717 0.260915
-vt 0.280650 0.260719
-vt 0.281863 0.243362
-vt 0.277923 0.369192
-vt 0.915946 0.286552
-vt 0.899396 0.275421
-vt 0.900632 0.257272
-vt 0.898281 0.351804
-vt 0.897438 0.333722
-vt 0.914140 0.323002
-vt 0.919997 0.271046
-vt 0.917839 0.338513
-vt 0.672606 0.275972
-vt 0.588687 0.273894
-vt 0.586402 0.258828
-vt 0.585664 0.343597
-vt 0.588255 0.328655
-vt 0.671802 0.328360
-vt 0.666427 0.259506
-vt 0.665306 0.344614
-vt 0.477483 0.288626
-vt 0.471661 0.278733
-vt 0.505964 0.254985
-vt 0.477923 0.311665
-vt 0.517354 0.342752
-vt 0.505551 0.345730
-vt 0.465640 0.268089
-vt 0.471924 0.321385
-vt 0.551823 0.260300
-vt 0.517759 0.258227
-vt 0.551289 0.341405
-vt 0.543894 0.250890
-vt 0.543202 0.350600
-vt 0.949934 0.276809
-vt 0.941674 0.290843
-vt 0.939825 0.319281
-vt 0.933278 0.305010
-vt 0.931774 0.305010
-vt 0.958909 0.291686
-vt 0.956988 0.318809
-vt 0.973497 0.303148
-vt 0.971743 0.307718
-vt 0.778780 0.495996
-vt 0.781048 0.432915
-vt 0.780210 0.559101
-vt 0.789340 0.434092
-vt 0.776964 0.416235
-vt 0.775904 0.575725
-vt 0.137917 0.074242
-vt 0.146096 0.074590
-vt 0.144268 0.117437
-vt 0.144281 0.145328
-vt 0.154275 0.074939
-vt 0.146093 0.188180
-vt 0.808266 0.278621
-vt 0.794123 0.278709
-vt 0.784376 0.259530
-vt 0.782666 0.347089
-vt 0.792771 0.328213
-vt 0.806840 0.328602
-vt 0.784271 0.239441
-vt 0.798428 0.347367
-vt 0.965010 0.280642
-vt 0.978050 0.294266
-vt 0.962822 0.329926
-vt 0.441031 0.322297
-vt 0.367014 0.322298
-vt 0.404022 0.322380
-vt 0.598190 0.121976
-vt 0.598201 0.140902
-vt 0.571855 0.079488
-vt 0.597015 0.184073
-vt 0.447114 0.322301
-vt 0.360930 0.322302
-vt 0.447051 0.336284
-vt 0.306667 0.381829
-vt 0.309988 0.249540
-vt 0.296421 0.386343
-vt 0.299982 0.244519
-vt 0.545341 0.126849
-vt 0.542943 0.123498
-vt 0.542967 0.139381
-vt 0.545366 0.136030
-vt 0.556545 0.136359
-vt 0.529463 0.123853
-vt 0.470014 0.131434
-vt 0.470075 0.127060
-vt 0.470108 0.135807
-vt 0.866709 0.235909
-vt 0.866932 0.241465
-vt 0.864419 0.366815
-vt 0.864079 0.372337
-vt 0.866531 0.227748
-vt 0.800737 0.381138
-vt 0.901283 0.226447
-vt 0.863729 0.380452
-vt 0.442849 0.226945
-vt 0.442163 0.269349
-vt 0.404022 0.269280
-vt 0.365194 0.226945
-vt 0.404022 0.227094
-vt 0.365880 0.269350
-vt 0.690709 0.121400
-vt 0.689513 0.078209
-vt 0.764856 0.143498
-vt 0.689506 0.184641
-vt 0.683816 0.121590
-vt 0.690690 0.141464
-vt 0.449036 0.227009
-vt 0.448601 0.269522
-vt 0.359007 0.227009
-vt 0.448560 0.273718
-vt 0.359442 0.269522
-vt 0.242735 0.371325
-vt 0.266771 0.393672
-vt 0.245586 0.256859
-vt 0.248722 0.231427
-vt 0.270704 0.235686
-vt 0.242866 0.368993
-vt 0.245605 0.259195
-vt 0.243272 0.363723
-vt 0.245757 0.264482
-vt 0.243878 0.357745
-vt 0.246075 0.270483
-vt 0.246062 0.314110
-vt 0.890605 0.275530
-vt 0.870518 0.257570
-vt 0.868329 0.350868
-vt 0.800218 0.259588
-vt 0.888694 0.333427
-vt 0.404882 0.124097
-vt 0.357402 0.126234
-vt 0.404915 0.138755
-vt 0.357582 0.142867
-vt 0.308542 0.116836
-vt 0.357433 0.136606
-vt 0.725106 0.232732
-vt 0.725407 0.240474
-vt 0.662421 0.369294
-vt 0.723588 0.364799
-vt 0.723125 0.372497
-vt 0.724923 0.224963
-vt 0.722778 0.380223
-vt 0.976238 0.452226
-vt 0.933849 0.462621
-vt 0.933392 0.531429
-vt 0.945974 0.438164
-vt 0.945190 0.556044
-vt 0.932749 0.497019
-vt 0.833319 0.117451
-vt 0.832122 0.074258
-vt 0.887696 0.190077
-vt 0.832068 0.188552
-vt 0.776475 0.075800
-vt 0.833252 0.145373
-vt 0.947884 0.431723
-vt 0.947015 0.562511
-vt 0.150046 0.362954
-vt 0.149858 0.367898
-vt 0.152550 0.255830
-vt 0.152501 0.260781
-vt 0.150278 0.356638
-vt 0.152430 0.267103
-vt 0.152416 0.311907
-vt 0.732391 0.277898
-vt 0.724813 0.259091
-vt 0.723391 0.346263
-vt 0.731330 0.327710
-vt 0.148671 0.392258
-vt 0.144048 0.388057
-vt 0.144345 0.371987
-vt 0.147235 0.251481
-vt 0.147705 0.235405
-vt 0.152525 0.231427
-vt 0.114945 0.370407
-vt 0.114819 0.385447
-vt 0.118370 0.236623
-vt 0.113461 0.232692
-vt 0.117780 0.251657
-vt 0.155493 0.371821
-vt 0.155171 0.387929
-vt 0.158815 0.236063
-vt 0.158369 0.252179
-vt 0.185669 0.373228
-vt 0.188601 0.252219
-vt 0.184943 0.389429
-vt 0.188650 0.235984
-vt 0.237035 0.392158
-vt 0.236343 0.374847
-vt 0.240889 0.235752
-vt 0.209911 0.373900
-vt 0.212876 0.252708
-vt 0.239363 0.253030
-vt 0.207944 0.390513
-vt 0.244640 0.396847
-vt 0.211706 0.235999
-vt 0.204675 0.231588
-vt 0.200720 0.394576
-vt 0.239397 0.352789
-vt 0.240349 0.314371
-vt 0.240377 0.313533
-vt 0.241358 0.275223
-vt 0.209169 0.351896
-vt 0.211068 0.274681
-vt 0.405147 0.365394
-vt 0.404325 0.398279
-vt 0.398504 0.407486
-vt 0.210967 0.313768
-vt 0.210995 0.312940
-vt 0.406595 0.077908
-vt 0.404650 0.083799
-vt 0.358724 0.084093
-vt 0.358743 0.178749
-vt 0.404673 0.179054
-vt 0.406616 0.184947
-vt 0.312618 0.085037
-vt 0.310206 0.078664
-vt 0.358676 0.184789
-vt 0.310220 0.184164
-vt 0.357961 0.113951
-vt 0.403579 0.117744
-vt 0.357989 0.148889
-vt 0.311190 0.110520
-vt 0.311214 0.152306
-vt 0.472848 0.080940
-vt 0.467860 0.086723
-vt 0.417640 0.084104
-vt 0.417663 0.178752
-vt 0.467886 0.176144
-vt 0.472873 0.181927
-vt 0.498215 0.083456
-vt 0.492137 0.088188
-vt 0.492163 0.174682
-vt 0.498241 0.179414
-vt 0.465851 0.120918
-vt 0.491730 0.120873
-vt 0.498650 0.126514
-vt 0.465883 0.141948
-vt 0.418100 0.118287
-vt 0.418131 0.144569
-vt 0.420362 0.078175
-vt 0.420384 0.184682
-vt 0.403610 0.145108
-vt 0.258434 0.085124
-vt 0.222379 0.083460
-vt 0.215614 0.078414
-vt 0.258446 0.177686
-vt 0.253209 0.183630
-vt 0.215619 0.184382
-vt 0.253200 0.079179
-vt 0.312635 0.177791
-vt 0.221613 0.112854
-vt 0.222387 0.179338
-vt 0.491761 0.141997
-vt 0.258032 0.111351
-vt 0.258052 0.151457
-vt 0.214900 0.117896
-vt 0.221631 0.149941
-vt 0.152330 0.141558
-vt 0.808976 0.496196
-vt 0.986563 0.113203
-vt 0.038739 0.192720
-vt 0.648655 0.183519
-vt 0.708319 0.547937
-vt 0.109730 0.389138
-vt 0.986292 0.543556
-vt 0.517998 0.135331
-vt 0.971087 0.384798
-vt 0.571874 0.183382
-vt 0.331777 0.231427
-vt 0.356500 0.373338
-vt 0.356500 0.413067
-vt 0.322939 0.367286
-vt 0.290661 0.244178
-vt 0.976084 0.316650
-vt 0.597000 0.078795
-vt 0.357552 0.119973
-vt 0.400446 0.361788
-vt 0.358659 0.078053
-vt 0.184153 0.076477
-vt 0.184154 0.186307
-vt 0.516704 0.080988
-vt 0.516729 0.181884
-vt 0.528300 0.080675
-vt 0.528324 0.182197
-vt 0.541775 0.080311
-vt 0.541798 0.182561
-vt 0.099034 0.616504
-vt 0.110178 0.658380
-vt 0.087801 0.658358
-vt 0.266106 0.700256
-vt 0.254873 0.658402
-vt 0.277250 0.658380
-vt 0.068434 0.647121
-vt 0.235506 0.669638
-vt 0.057266 0.627681
-vt 0.224338 0.689079
-vt 0.057290 0.605245
-vt 0.224363 0.711515
-vt 0.068500 0.585826
-vt 0.235572 0.730933
-vt 0.087891 0.574628
-vt 0.254963 0.742132
-vt 0.110268 0.574649
-vt 0.277340 0.742111
-vt 0.129635 0.585886
-vt 0.296707 0.730874
-vt 0.140802 0.605327
-vt 0.307874 0.711433
-vt 0.140778 0.627762
-vt 0.307850 0.688998
-vt 0.129569 0.647181
-vt 0.296641 0.669579
-vt 0.161177 0.926259
-vt 0.161118 0.945736
-vt 0.148301 0.945697
-vt 0.161049 0.968173
-vt 0.148232 0.968133
-vt 0.160990 0.987556
-vt 0.148173 0.987516
-vt 0.989843 0.805188
-vt 0.989825 0.824625
-vt 0.977008 0.824613
-vt 0.989803 0.847061
-vt 0.976987 0.847049
-vt 0.989785 0.866485
-vt 0.976969 0.866473
-vt 0.976882 0.464508
-vt 0.976942 0.444771
-vt 0.989759 0.444810
-vt 0.977011 0.422343
-vt 0.989827 0.422383
-vt 0.977069 0.403235
-vt 0.989886 0.403275
-vt 0.987248 0.009420
-vt 0.987189 0.028689
-vt 0.974372 0.028650
-vt 0.987120 0.051123
-vt 0.974304 0.051084
-vt 0.987060 0.070710
-vt 0.974244 0.070671
-vt 0.341734 0.950143
-vt 0.365020 0.950215
-vt 0.364964 0.968718
-vt 0.341799 0.928951
-vt 0.365085 0.929022
-vt 0.341855 0.910748
-vt 0.365141 0.910820
-vt 0.407040 0.952066
-vt 0.430326 0.951995
-vt 0.430381 0.970045
-vt 0.406975 0.930880
-vt 0.430261 0.930809
-vt 0.406918 0.912235
-vt 0.430204 0.912164
-vt 0.081073 0.953637
-vt 0.104358 0.953659
-vt 0.104341 0.972007
-vt 0.081093 0.932442
-vt 0.104379 0.932465
-vt 0.081110 0.914081
-vt 0.104396 0.914103
-vt 0.247680 0.929058
-vt 0.224394 0.929130
-vt 0.224338 0.910819
-vt 0.247745 0.950253
-vt 0.224459 0.950324
-vt 0.247801 0.968652
-vt 0.224516 0.968723
-vt 0.125567 0.810670
-vt 0.107249 0.821249
-vt 0.096722 0.781691
-vt 0.639463 0.726515
-vt 0.657781 0.737094
-vt 0.628937 0.766073
-vt 0.136156 0.792326
-vt 0.668370 0.755438
-vt 0.136179 0.771132
-vt 0.668393 0.776632
-vt 0.125629 0.752768
-vt 0.657844 0.794996
-vt 0.107334 0.742153
-vt 0.639549 0.805611
-vt 0.086196 0.742132
-vt 0.618410 0.805632
-vt 0.067878 0.752711
-vt 0.600092 0.795053
-vt 0.057289 0.771055
-vt 0.589503 0.776709
-vt 0.057266 0.792249
-vt 0.589480 0.755515
-vt 0.067816 0.810614
-vt 0.600030 0.737150
-vt 0.086111 0.821229
-vt 0.618325 0.726535
-vt 0.745307 0.891604
-vt 0.745261 0.906414
-vt 0.710605 0.906308
-vt 0.745359 0.874642
-vt 0.710651 0.891498
-vt 0.745403 0.860073
-vt 0.710702 0.874536
-vt 0.407021 0.878562
-vt 0.407060 0.865729
-vt 0.441716 0.865836
-vt 0.406964 0.897134
-vt 0.441677 0.878669
-vt 0.406918 0.912057
-vt 0.441620 0.897240
-vt 0.624151 0.899728
-vt 0.624137 0.914414
-vt 0.589480 0.914381
-vt 0.624167 0.882764
-vt 0.589494 0.899695
-vt 0.624181 0.868068
-vt 0.589510 0.882731
-vt 0.406821 0.853046
-vt 0.406777 0.867701
-vt 0.372120 0.867595
-vt 0.406873 0.836082
-vt 0.372165 0.852939
-vt 0.406918 0.821356
-vt 0.372217 0.835976
-vt 0.777691 0.813404
-vt 0.791935 0.789839
-vt 0.806596 0.798307
-vt 0.777691 0.766274
-vt 0.806596 0.781372
-vt 0.815072 0.812989
-vt 0.815072 0.766689
-vt 0.815090 0.829953
-vt 0.815090 0.749726
-vt 0.810165 0.847774
-vt 0.810165 0.731905
-vt 0.792003 0.853147
-vt 0.792003 0.726531
-vt 0.775084 0.853164
-vt 0.775084 0.726515
-vt 0.760423 0.844696
-vt 0.760423 0.734982
-vt 0.751947 0.830014
-vt 0.751947 0.749665
-vt 0.751929 0.813051
-vt 0.751929 0.766628
-vt 0.760373 0.798352
-vt 0.760373 0.781327
-vt 0.775016 0.789856
-vt 0.775016 0.789823
-vt 0.939257 0.704385
-vt 0.938523 0.944190
-vt 0.935888 0.944182
-vt 0.942275 0.704395
-vt 0.941541 0.944199
-vt 0.944868 0.704403
-vt 0.944134 0.944207
-vt 0.960273 0.464530
-vt 0.959539 0.224726
-vt 0.962110 0.224718
-vt 0.957255 0.464539
-vt 0.956521 0.224735
-vt 0.954600 0.464548
-vt 0.953866 0.224743
-vt 0.011821 0.730707
-vt 0.011595 0.970513
-vt 0.008981 0.970510
-vt 0.014840 0.730710
-vt 0.014613 0.970516
-vt 0.017455 0.730713
-vt 0.017229 0.970518
-vt 0.310482 0.490892
-vt 0.311216 0.730697
-vt 0.308608 0.730705
-vt 0.313501 0.490883
-vt 0.314235 0.730688
-vt 0.316122 0.490875
-vt 0.316856 0.730680
-vt 0.788843 0.725004
-vt 0.786227 0.726515
-vt 0.784724 0.720866
-vt 0.763690 0.475257
-vt 0.766306 0.476768
-vt 0.762187 0.480906
-vt 0.790355 0.722385
-vt 0.767818 0.479388
-vt 0.790358 0.719358
-vt 0.767821 0.482414
-vt 0.788852 0.716736
-vt 0.766315 0.485037
-vt 0.786239 0.715220
-vt 0.763702 0.486552
-vt 0.783221 0.715217
-vt 0.760684 0.486555
-vt 0.780605 0.716728
-vt 0.758068 0.485045
-vt 0.779093 0.719347
-vt 0.756556 0.482425
-vt 0.779090 0.722374
-vt 0.756553 0.479399
-vt 0.780596 0.724996
-vt 0.758059 0.476776
-vt 0.783209 0.726512
-vt 0.760671 0.475260
-vt 0.771940 0.715220
-vt 0.774958 0.715217
-vt 0.773455 0.720866
-vt 0.786227 0.486555
-vt 0.783209 0.486552
-vt 0.784724 0.480906
-vt 0.769327 0.716736
-vt 0.780596 0.485037
-vt 0.767821 0.719358
-vt 0.779090 0.482414
-vt 0.767824 0.722385
-vt 0.779093 0.479388
-vt 0.769336 0.725004
-vt 0.780605 0.476768
-vt 0.771952 0.726515
-vt 0.783221 0.475257
-vt 0.774971 0.726512
-vt 0.786239 0.475260
-vt 0.777583 0.724996
-vt 0.788852 0.476776
-vt 0.790358 0.479399
-vt 0.790355 0.482425
-vt 0.777574 0.716728
-vt 0.788843 0.485045
-vt 0.900895 0.479660
-vt 0.901628 0.719464
-vt 0.899008 0.719472
-vt 0.898274 0.479668
-vt 0.895989 0.719482
-vt 0.895255 0.479677
-vt 0.893381 0.719490
-vt 0.971300 0.704385
-vt 0.971074 0.944191
-vt 0.968458 0.944188
-vt 0.968685 0.704383
-vt 0.965439 0.944185
-vt 0.965666 0.704380
-vt 0.962826 0.944183
-vt 0.954582 0.704377
-vt 0.953848 0.464573
-vt 0.956504 0.464565
-vt 0.957237 0.704369
-vt 0.959521 0.464555
-vt 0.962826 0.704352
-vt 0.960255 0.704360
-vt 0.953848 0.704403
-vt 0.953114 0.944207
-vt 0.950522 0.944199
-vt 0.951255 0.704395
-vt 0.947503 0.944190
-vt 0.945601 0.704377
-vt 0.948237 0.704385
-vt 0.939277 0.224726
-vt 0.938543 0.464530
-vt 0.935908 0.464522
-vt 0.942295 0.224735
-vt 0.941561 0.464540
-vt 0.944888 0.224743
-vt 0.944154 0.464548
-vt 0.960255 0.944190
-vt 0.959521 0.704385
-vt 0.962092 0.704377
-vt 0.957237 0.944199
-vt 0.956504 0.704395
-vt 0.954582 0.944207
-vt 0.965684 0.224737
-vt 0.965457 0.464542
-vt 0.962844 0.464540
-vt 0.968703 0.224740
-vt 0.968476 0.464545
-vt 0.971318 0.224742
-vt 0.971091 0.464548
-vt 0.002608 0.490892
-vt 0.003342 0.730697
-vt 0.000734 0.730705
-vt 0.005627 0.490883
-vt 0.006361 0.730688
-vt 0.008247 0.490875
-vt 0.008981 0.730680
-vt 0.800111 0.725004
-vt 0.797496 0.726515
-vt 0.795992 0.720866
-vt 0.763690 0.715217
-vt 0.766306 0.716728
-vt 0.762187 0.720866
-vt 0.801624 0.722385
-vt 0.767818 0.719347
-vt 0.801627 0.719358
-vt 0.800120 0.716736
-vt 0.766315 0.724996
-vt 0.797508 0.715220
-vt 0.763702 0.726512
-vt 0.794489 0.715217
-vt 0.760684 0.726515
-vt 0.791874 0.716728
-vt 0.758068 0.725004
-vt 0.790361 0.719347
-vt 0.756556 0.722385
-vt 0.756552 0.719358
-vt 0.791865 0.724996
-vt 0.758059 0.716736
-vt 0.794477 0.726512
-vt 0.760671 0.715220
-vt 0.771940 0.475260
-vt 0.774959 0.475257
-vt 0.773455 0.480906
-vt 0.797496 0.486555
-vt 0.794477 0.486552
-vt 0.795993 0.480906
-vt 0.769328 0.476776
-vt 0.791865 0.485037
-vt 0.769336 0.485045
-vt 0.791874 0.476768
-vt 0.771952 0.486555
-vt 0.794489 0.475257
-vt 0.774971 0.486552
-vt 0.797508 0.475260
-vt 0.777583 0.485037
-vt 0.800120 0.476776
-vt 0.801627 0.479399
-vt 0.801624 0.482425
-vt 0.777574 0.476768
-vt 0.800112 0.485045
-vt 0.326724 0.490875
-vt 0.327458 0.730680
-vt 0.324837 0.730688
-vt 0.324104 0.490883
-vt 0.321819 0.730697
-vt 0.321085 0.490892
-vt 0.319211 0.730705
-vt 0.008755 0.970518
-vt 0.006139 0.970516
-vt 0.003121 0.970513
-vt 0.000507 0.970510
-vt 0.945622 0.464548
-vt 0.947543 0.224735
-vt 0.948277 0.464539
-vt 0.950561 0.224726
-vt 0.951295 0.464530
-vt 0.953132 0.224718
-vt 0.953114 0.704377
-vt 0.950522 0.704369
-vt 0.951255 0.464565
-vt 0.947503 0.704360
-vt 0.948237 0.464556
-vt 0.311993 0.730708
-vt 0.315012 0.730705
-vt 0.313509 0.736354
-vt 0.808764 0.486555
-vt 0.805746 0.486552
-vt 0.807261 0.480906
-vt 0.309381 0.732224
-vt 0.803133 0.485036
-vt 0.307874 0.734846
-vt 0.307878 0.737872
-vt 0.309390 0.740492
-vt 0.803142 0.476768
-vt 0.312006 0.742003
-vt 0.805758 0.475257
-vt 0.315024 0.742000
-vt 0.808776 0.475260
-vt 0.317637 0.740484
-vt 0.811389 0.476776
-vt 0.319143 0.737862
-vt 0.812895 0.479399
-vt 0.319140 0.734835
-vt 0.812892 0.482425
-vt 0.317628 0.732216
-vt 0.811380 0.485045
-vt 0.017229 0.490875
-vt 0.017962 0.730680
-vt 0.015342 0.730688
-vt 0.014608 0.490883
-vt 0.012323 0.730697
-vt 0.011589 0.490892
-vt 0.009715 0.730705
-vt 0.971300 0.464572
-vt 0.971074 0.704377
-vt 0.968458 0.704375
-vt 0.968685 0.464569
-vt 0.965439 0.704372
-vt 0.965666 0.464566
-vt 0.893384 0.959320
-vt 0.892650 0.719515
-vt 0.895306 0.719507
-vt 0.896040 0.959311
-vt 0.898324 0.719498
-vt 0.899057 0.959302
-vt 0.900895 0.719490
-vt 0.944868 0.464573
-vt 0.944134 0.704377
-vt 0.941541 0.704369
-vt 0.942275 0.464565
-vt 0.938523 0.704360
-vt 0.939257 0.464556
-vt 0.935888 0.704352
-vt 0.148361 0.926220
-vt 0.977027 0.805175
-vt 0.989698 0.464548
-vt 0.974431 0.009380
-vt 0.341678 0.968646
-vt 0.407096 0.970117
-vt 0.081056 0.971985
-vt 0.247624 0.910748
-vt 0.710747 0.859966
-vt 0.441575 0.912164
-vt 0.589524 0.868035
-vt 0.372262 0.821249
-vt 0.936621 0.704377
-vt 0.009208 0.730705
-vt 0.307874 0.490900
-vt 0.892647 0.479685
-vt 0.963053 0.704377
-vt 0.962092 0.464548
-vt 0.944868 0.944182
-vt 0.936641 0.224718
-vt 0.963070 0.224734
-vt 0.000000 0.490900
-vt 0.318477 0.490900
-vt 0.953866 0.464522
-vt 0.008981 0.490900
-vt 0.963053 0.464564
-vt 0.901628 0.959294
-vt 0.936621 0.464548
-vt 0.327482 0.011534
-vt 0.336355 0.031992
-vt 0.325701 0.036705
-vt 0.437870 0.454170
-vt 0.448524 0.458883
-vt 0.439651 0.479341
-vt 0.318810 0.021584
-vt 0.297606 0.010852
-vt 0.412155 0.490875
-vt 0.409775 0.480023
-vt 0.299986 0.000000
-vt 0.273615 0.017865
-vt 0.381164 0.482407
-vt 0.385784 0.473010
-vt 0.187817 0.490875
-vt 0.156825 0.482407
-vt 0.161445 0.473010
-vt 0.049276 0.017865
-vt 0.044656 0.008468
-vt 0.075647 0.000000
-vt 0.215312 0.479341
-vt 0.185437 0.480023
-vt 0.073268 0.010852
-vt 0.103143 0.011534
-vt 0.206641 0.469291
-vt 0.213531 0.454170
-vt 0.112017 0.031992
-vt 0.101362 0.036705
-vt 0.121957 0.390759
-vt 0.129683 0.385086
-vt 0.017514 0.105789
-vt 0.009788 0.100116
-vt 0.268995 0.008468
-vt 0.241852 0.105789
-vt 0.346296 0.390759
-vt 0.354022 0.385086
-vt 0.224186 0.458883
-vt 0.210965 0.380820
-vt 0.104958 0.103077
-vt 0.098796 0.110055
-vt 0.329296 0.103077
-vt 0.323134 0.110055
-vt 0.435303 0.380820
-vt 0.441465 0.387798
-vt 0.323188 0.272647
-vt 0.317364 0.271042
-vt 0.429533 0.219833
-vt 0.435358 0.218228
-vt 0.234126 0.100116
-vt 0.231657 0.272174
-vt 0.337837 0.218161
-vt 0.343826 0.218701
-vt 0.113498 0.218161
-vt 0.119487 0.218701
-vt 0.007318 0.272174
-vt 0.001329 0.272714
-vt 0.217127 0.387798
-vt 0.205195 0.219833
-vt 0.098850 0.272647
-vt 0.093026 0.271042
-vt 0.112169 0.109915
-vt 0.118478 0.112993
-vt 0.000000 0.380960
-vt 0.224338 0.380960
-vt 0.225668 0.272714
-vt 0.336507 0.109915
-vt 0.203398 0.104885
-vt 0.211019 0.218228
-vt 0.091229 0.385990
-vt 0.315567 0.385990
-vt 0.307137 0.378136
-vt 0.427736 0.104885
-vt 0.336507 0.454737
-vt 0.326931 0.450031
-vt 0.448677 0.036138
-vt 0.419306 0.112739
-vt 0.313923 0.490875
-vt 0.308846 0.486077
-vt 0.426093 0.000000
-vt 0.439100 0.040844
-vt 0.243806 0.437197
-vt 0.230647 0.377882
-vt 0.342817 0.112993
-vt 0.355975 0.053678
-vt 0.276915 0.489888
-vt 0.248977 0.433555
-vt 0.361147 0.057320
-vt 0.389084 0.000987
-vt 0.224338 0.036138
-vt 0.194968 0.112739
-vt 0.082799 0.378136
-vt 0.112169 0.454737
-vt 0.201754 0.000000
-vt 0.214762 0.040844
-vt 0.102593 0.450031
-vt 0.089585 0.490875
-vt 0.131637 0.053678
-vt 0.136808 0.057320
-vt 0.019467 0.437197
-vt 0.006309 0.377882
-vt 0.164746 0.000987
-vt 0.168313 0.008303
-vt 0.052577 0.489888
-vt 0.024639 0.433555
-vt 0.280482 0.482572
-vt 0.392651 0.008303
-vt 0.196677 0.004798
-vt 0.056144 0.482572
-vt 0.974331 0.078176
-vt 0.980835 0.078196
-vt 0.980748 0.106756
-vt 0.176070 0.981298
-vt 0.175982 0.952739
-vt 0.182486 0.952718
-vt 0.707328 0.984406
-vt 0.700824 0.984386
-vt 0.700911 0.955827
-vt 0.682409 0.955827
-vt 0.682496 0.984386
-vt 0.675992 0.984406
-vt 0.917999 0.479660
-vt 0.924503 0.479680
-vt 0.924355 0.527969
-vt 0.878783 0.479680
-vt 0.878636 0.527969
-vt 0.872132 0.527949
-vt 0.917682 0.583192
-vt 0.917851 0.527949
-vt 0.878467 0.583212
-vt 0.871963 0.583192
-vt 0.909670 0.907502
-vt 0.916174 0.907508
-vt 0.916139 0.944207
-vt 0.935483 0.892395
-vt 0.935449 0.929095
-vt 0.928945 0.929089
-vt 0.909737 0.836400
-vt 0.916241 0.836406
-vt 0.935551 0.821294
-vt 0.928980 0.892389
-vt 0.886560 0.527969
-vt 0.880056 0.527949
-vt 0.880204 0.479660
-vt 0.493415 0.523547
-vt 0.493563 0.475257
-vt 0.500067 0.475277
-vt 0.886391 0.583212
-vt 0.879887 0.583192
-vt 0.493246 0.578789
-vt 0.499919 0.523566
-vt 0.870420 0.944207
-vt 0.863916 0.944201
-vt 0.863950 0.907502
-vt 0.924503 0.464541
-vt 0.924538 0.427842
-vt 0.931042 0.427848
-vt 0.870454 0.907508
-vt 0.864017 0.836400
-vt 0.924605 0.356740
-vt 0.931109 0.356747
-vt 0.870521 0.836406
-vt 0.864119 0.728997
-vt 0.924706 0.249337
-vt 0.931210 0.249343
-vt 0.909839 0.728997
-vt 0.916343 0.729003
-vt 0.929148 0.713885
-vt 0.935652 0.713891
-vt 0.886068 0.688915
-vt 0.879564 0.688895
-vt 0.499426 0.684512
-vt 0.492922 0.684492
-vt 0.924186 0.583212
-vt 0.923863 0.688915
-vt 0.878143 0.688915
-vt 0.871639 0.688895
-vt 0.909991 0.567907
-vt 0.916495 0.567913
-vt 0.929300 0.552795
-vt 0.935804 0.552801
-vt 0.917359 0.688895
-vt 0.923353 0.855488
-vt 0.877634 0.855488
-vt 0.871130 0.855468
-vt 0.885558 0.855488
-vt 0.879054 0.855469
-vt 0.492413 0.851066
-vt 0.870775 0.567913
-vt 0.870623 0.729003
-vt 0.924858 0.088247
-vt 0.931362 0.088254
-vt 0.864271 0.567907
-vt 0.864341 0.494512
-vt 0.924928 0.014852
-vt 0.931432 0.014858
-vt 0.910060 0.494512
-vt 0.916564 0.494518
-vt 0.935874 0.479406
-vt 0.885287 0.944110
-vt 0.878783 0.944090
-vt 0.492142 0.939688
-vt 0.498917 0.851086
-vt 0.916849 0.855468
-vt 0.923082 0.944110
-vt 0.877362 0.944110
-vt 0.870858 0.944090
-vt 0.910074 0.479660
-vt 0.916578 0.479666
-vt 0.935888 0.464554
-vt 0.929370 0.479399
-vt 0.044119 0.992083
-vt 0.044052 0.970171
-vt 0.050556 0.970151
-vt 0.039005 0.968532
-vt 0.032501 0.968512
-vt 0.032568 0.946600
-vt 0.043980 0.946620
-vt 0.050484 0.946600
-vt 0.032429 0.992063
-vt 0.025831 0.970097
-vt 0.019327 0.970117
-vt 0.019255 0.946567
-vt 0.057199 0.968532
-vt 0.057127 0.992083
-vt 0.050623 0.992063
-vt 0.025898 0.992009
-vt 0.019394 0.992029
-vt 0.050762 0.946600
-vt 0.057266 0.946620
-vt 0.870844 0.494518
-vt 0.864354 0.479660
-vt 0.924942 0.000000
-vt 0.931446 0.000006
-vt 0.254873 0.574649
-vt 0.277250 0.574628
-vt 0.266106 0.616504
-vt 0.725928 0.642762
-vt 0.703551 0.642740
-vt 0.714785 0.600886
-vt 0.235506 0.585886
-vt 0.684184 0.631504
-vt 0.224338 0.605327
-vt 0.673016 0.612063
-vt 0.224363 0.627762
-vt 0.673041 0.589628
-vt 0.235572 0.647181
-vt 0.684250 0.570209
-vt 0.254963 0.658380
-vt 0.703641 0.559010
-vt 0.277340 0.658358
-vt 0.726018 0.559032
-vt 0.296707 0.647121
-vt 0.745385 0.570268
-vt 0.307874 0.627681
-vt 0.756553 0.589709
-vt 0.307850 0.605245
-vt 0.756528 0.612145
-vt 0.296641 0.585826
-vt 0.745319 0.631563
-vt 0.989866 0.629573
-vt 0.977080 0.629612
-vt 0.977020 0.610135
-vt 0.989806 0.610096
-vt 0.976951 0.587699
-vt 0.989738 0.587660
-vt 0.976892 0.568316
-vt 0.978954 0.927794
-vt 0.991740 0.927806
-vt 0.991722 0.947244
-vt 0.978935 0.947231
-vt 0.991700 0.969680
-vt 0.978914 0.969668
-vt 0.991682 0.989103
-vt 0.976969 0.704417
-vt 0.989755 0.704377
-vt 0.989815 0.724115
-vt 0.977029 0.724154
-vt 0.989884 0.746542
-vt 0.977098 0.746581
-vt 0.989943 0.765650
-vt 0.977079 0.464564
-vt 0.989866 0.464603
-vt 0.989807 0.483873
-vt 0.977020 0.483833
-vt 0.989738 0.506307
-vt 0.976952 0.506267
-vt 0.989678 0.525894
-vt 0.217778 0.847236
-vt 0.217718 0.866824
-vt 0.193010 0.866748
-vt 0.032489 0.926937
-vt 0.057139 0.927013
-vt 0.057079 0.946600
-vt 0.217846 0.824802
-vt 0.193070 0.847160
-vt 0.032557 0.904503
-vt 0.057207 0.904579
-vt 0.217905 0.805533
-vt 0.193138 0.824726
-vt 0.032616 0.885234
-vt 0.057266 0.885310
-vt 0.193139 0.885932
-vt 0.193197 0.866824
-vt 0.217905 0.866900
-vt 0.790382 0.941853
-vt 0.815032 0.941777
-vt 0.815090 0.960885
-vt 0.193070 0.908359
-vt 0.217847 0.886008
-vt 0.790313 0.919425
-vt 0.814963 0.919349
-vt 0.193010 0.928096
-vt 0.217778 0.908435
-vt 0.790253 0.899688
-vt 0.814903 0.899612
-vt 0.960634 0.205294
-vt 0.960616 0.224718
-vt 0.935908 0.224694
-vt 0.643703 0.944515
-vt 0.668353 0.944539
-vt 0.668335 0.963962
-vt 0.960655 0.182858
-vt 0.935926 0.205271
-vt 0.643724 0.922079
-vt 0.668374 0.922102
-vt 0.960674 0.163421
-vt 0.935947 0.182835
-vt 0.643743 0.902641
-vt 0.668393 0.902665
-vt 0.161049 0.784121
-vt 0.160990 0.803505
-vt 0.136282 0.803429
-vt 0.320580 0.894228
-vt 0.295930 0.894304
-vt 0.295871 0.874921
-vt 0.161118 0.761685
-vt 0.136341 0.784045
-vt 0.320649 0.916664
-vt 0.295999 0.916740
-vt 0.161177 0.742208
-vt 0.136410 0.761609
-vt 0.320708 0.936142
-vt 0.296058 0.936217
-vt 0.182570 0.700256
-vt 0.193714 0.658380
-vt 0.213105 0.669579
-vt 0.437443 0.730933
-vt 0.418052 0.742132
-vt 0.406909 0.700256
-vt 0.182570 0.532751
-vt 0.213105 0.563429
-vt 0.193714 0.574628
-vt 0.642392 0.475257
-vt 0.661783 0.486456
-vt 0.631248 0.517134
-vt 0.224314 0.688998
-vt 0.448653 0.711515
-vt 0.224314 0.544010
-vt 0.672992 0.505875
-vt 0.224338 0.711433
-vt 0.448677 0.689079
-vt 0.224338 0.521574
-vt 0.673016 0.528311
-vt 0.213171 0.730874
-vt 0.437509 0.669638
-vt 0.213171 0.502134
-vt 0.661849 0.547751
-vt 0.193804 0.742111
-vt 0.418142 0.658402
-vt 0.193804 0.490897
-vt 0.642482 0.558988
-vt 0.171427 0.742132
-vt 0.395765 0.658380
-vt 0.171427 0.490875
-vt 0.620105 0.559010
-vt 0.152036 0.730933
-vt 0.376374 0.669579
-vt 0.152036 0.502074
-vt 0.600714 0.547811
-vt 0.140826 0.711515
-vt 0.365165 0.688998
-vt 0.140827 0.521493
-vt 0.589505 0.528392
-vt 0.140802 0.689079
-vt 0.365141 0.711433
-vt 0.140802 0.543928
-vt 0.589480 0.505957
-vt 0.151970 0.669638
-vt 0.376308 0.730874
-vt 0.151970 0.563369
-vt 0.600648 0.486516
-vt 0.171337 0.658402
-vt 0.395675 0.742111
-vt 0.171337 0.574606
-vt 0.620015 0.475279
-vt 0.182570 0.616504
-vt 0.059168 0.490897
-vt 0.081544 0.490875
-vt 0.070401 0.532751
-vt 0.631248 0.684639
-vt 0.620015 0.642784
-vt 0.642392 0.642762
-vt 0.110178 0.742132
-vt 0.087801 0.742111
-vt 0.099034 0.700256
-vt 0.151970 0.647121
-vt 0.039801 0.502134
-vt 0.600648 0.654021
-vt 0.068434 0.730874
-vt 0.140802 0.627681
-vt 0.028633 0.521574
-vt 0.589480 0.673461
-vt 0.057266 0.711433
-vt 0.140827 0.605245
-vt 0.028657 0.544010
-vt 0.589505 0.695897
-vt 0.057290 0.688998
-vt 0.152036 0.585826
-vt 0.039867 0.563429
-vt 0.600714 0.715316
-vt 0.068500 0.669579
-vt 0.171427 0.574628
-vt 0.059258 0.574628
-vt 0.620105 0.726515
-vt 0.087891 0.658380
-vt 0.193804 0.574649
-vt 0.081635 0.574606
-vt 0.642482 0.726493
-vt 0.110268 0.658402
-vt 0.213171 0.585886
-vt 0.101002 0.563369
-vt 0.661849 0.715256
-vt 0.129635 0.669638
-vt 0.112169 0.543928
-vt 0.673016 0.695816
-vt 0.224314 0.627762
-vt 0.112145 0.521493
-vt 0.672992 0.673380
-vt 0.213105 0.647181
-vt 0.100936 0.502074
-vt 0.661783 0.653961
-vt 0.129569 0.730933
-vt 0.301980 0.742172
-vt 0.301920 0.761649
-vt 0.288934 0.761609
-vt 0.491753 0.962816
-vt 0.478798 0.962856
-vt 0.478738 0.943379
-vt 0.301851 0.784085
-vt 0.288865 0.784045
-vt 0.491694 0.943339
-vt 0.478670 0.920943
-vt 0.301792 0.803469
-vt 0.288806 0.803429
-vt 0.491625 0.920903
-vt 0.478610 0.901559
-vt 0.260845 0.910760
-vt 0.260827 0.930198
-vt 0.247841 0.930185
-vt 0.430439 0.912164
-vt 0.443395 0.912176
-vt 0.443376 0.931613
-vt 0.260806 0.952634
-vt 0.247819 0.952622
-vt 0.430421 0.931601
-vt 0.443355 0.954050
-vt 0.260787 0.972057
-vt 0.247801 0.972045
-vt 0.430399 0.954037
-vt 0.443337 0.973473
-vt 0.019255 0.946507
-vt 0.019316 0.926769
-vt 0.032302 0.926809
-vt 0.843280 0.910146
-vt 0.856235 0.910106
-vt 0.856296 0.929843
-vt 0.019384 0.904342
-vt 0.032370 0.904382
-vt 0.843340 0.929883
-vt 0.856364 0.952271
-vt 0.019443 0.885234
-vt 0.032429 0.885274
-vt 0.843409 0.952311
-vt 0.856423 0.971379
-vt 0.281944 0.805497
-vt 0.281885 0.824766
-vt 0.268899 0.824726
-vt 0.769108 0.906414
-vt 0.782064 0.906454
-vt 0.782005 0.925724
-vt 0.281817 0.847200
-vt 0.268831 0.847160
-vt 0.769049 0.925684
-vt 0.781936 0.948158
-vt 0.281757 0.866788
-vt 0.268771 0.866748
-vt 0.768981 0.948118
-vt 0.781877 0.967745
-vt 0.734002 0.945881
-vt 0.733946 0.964385
-vt 0.710605 0.964313
-vt 0.734067 0.924689
-vt 0.710662 0.945810
-vt 0.734123 0.906486
-vt 0.710727 0.924617
-vt 0.819884 0.928156
-vt 0.819939 0.910106
-vt 0.843280 0.910178
-vt 0.819819 0.949343
-vt 0.843225 0.928228
-vt 0.819762 0.967987
-vt 0.843160 0.949414
-vt 0.406881 0.953659
-vt 0.406864 0.972007
-vt 0.383523 0.971985
-vt 0.406901 0.932464
-vt 0.383540 0.953637
-vt 0.406918 0.914103
-vt 0.383560 0.932442
-vt 0.768800 0.946079
-vt 0.768744 0.964390
-vt 0.745403 0.964318
-vt 0.768865 0.924885
-vt 0.745459 0.946008
-vt 0.768921 0.906486
-vt 0.745524 0.924813
-vt 0.404597 0.781691
-vt 0.415123 0.742132
-vt 0.433441 0.752711
-vt 0.712473 0.766073
-vt 0.741317 0.795053
-vt 0.722999 0.805632
-vt 0.444030 0.771055
-vt 0.751906 0.776708
-vt 0.444053 0.792249
-vt 0.751929 0.755515
-vt 0.433504 0.810614
-vt 0.741380 0.737150
-vt 0.415209 0.821229
-vt 0.723085 0.726535
-vt 0.394070 0.821249
-vt 0.701946 0.726515
-vt 0.375752 0.810670
-vt 0.683628 0.737094
-vt 0.365163 0.792326
-vt 0.673039 0.755438
-vt 0.365141 0.771132
-vt 0.673016 0.776632
-vt 0.375690 0.752768
-vt 0.683566 0.794996
-vt 0.393985 0.742153
-vt 0.701861 0.805611
-vt 0.255919 0.773795
-vt 0.264344 0.805457
-vt 0.247425 0.805440
-vt 0.325066 0.742149
-vt 0.341985 0.742132
-vt 0.333560 0.773795
-vt 0.819809 0.590672
-vt 0.811315 0.559026
-vt 0.828234 0.559010
-vt 0.796558 0.559010
-vt 0.779639 0.558993
-vt 0.788133 0.527348
-vt 0.232782 0.796944
-vt 0.310423 0.750645
-vt 0.796672 0.567522
-vt 0.764996 0.550498
-vt 0.224338 0.782246
-vt 0.301980 0.765344
-vt 0.788228 0.582221
-vt 0.756553 0.535799
-vt 0.224357 0.765282
-vt 0.301998 0.782307
-vt 0.788246 0.599185
-vt 0.756571 0.518835
-vt 0.232832 0.750600
-vt 0.310473 0.796990
-vt 0.796722 0.613867
-vt 0.765046 0.504153
-vt 0.247494 0.742132
-vt 0.325135 0.805457
-vt 0.811383 0.622335
-vt 0.779708 0.495685
-vt 0.264413 0.742149
-vt 0.342054 0.805440
-vt 0.828302 0.622318
-vt 0.796627 0.495702
-vt 0.279056 0.750645
-vt 0.356697 0.796944
-vt 0.842945 0.613822
-vt 0.811270 0.504198
-vt 0.287499 0.765344
-vt 0.365141 0.782246
-vt 0.851389 0.599123
-vt 0.819714 0.518897
-vt 0.287481 0.782307
-vt 0.365122 0.765282
-vt 0.851371 0.582160
-vt 0.819695 0.535860
-vt 0.279006 0.796990
-vt 0.356647 0.750600
-vt 0.842896 0.567477
-vt 0.811220 0.550543
-vt 0.483714 0.844061
-vt 0.483669 0.858788
-vt 0.449012 0.858681
-vt 0.057266 0.885127
-vt 0.022610 0.885234
-vt 0.022565 0.870507
-vt 0.483617 0.875752
-vt 0.448960 0.875645
-vt 0.057221 0.870401
-vt 0.022513 0.853544
-vt 0.483572 0.890407
-vt 0.448916 0.890301
-vt 0.057169 0.853437
-vt 0.022468 0.838888
-vt 0.710605 0.871761
-vt 0.710591 0.886458
-vt 0.675935 0.886425
-vt 0.069740 0.867701
-vt 0.104396 0.867734
-vt 0.104382 0.882431
-vt 0.710575 0.903422
-vt 0.675919 0.903389
-vt 0.069726 0.882398
-vt 0.104366 0.899395
-vt 0.710561 0.918108
-vt 0.675905 0.918075
-vt 0.069710 0.899362
-vt 0.224338 0.910641
-vt 0.224384 0.895718
-vt 0.259040 0.895825
-vt 0.819762 0.863778
-vt 0.854418 0.863671
-vt 0.854464 0.878595
-vt 0.224436 0.878761
-vt 0.259092 0.878867
-vt 0.819808 0.878701
-vt 0.854516 0.895552
-vt 0.224480 0.864313
-vt 0.259136 0.864420
-vt 0.819860 0.895658
-vt 0.854560 0.909999
-vt 0.780201 0.860073
-vt 0.780157 0.874642
-vt 0.745500 0.874536
-vt 0.780434 0.853164
-vt 0.815090 0.853271
-vt 0.815045 0.867840
-vt 0.780105 0.891604
-vt 0.745449 0.891498
-vt 0.780389 0.867733
-vt 0.814994 0.884802
-vt 0.780060 0.906414
-vt 0.745403 0.906308
-vt 0.780337 0.884696
-vt 0.266106 0.532751
-vt 0.395675 0.490897
-vt 0.418052 0.490875
-vt 0.406909 0.532751
-vt 0.714785 0.517134
-vt 0.703551 0.475279
-vt 0.725928 0.475257
-vt 0.620015 0.642740
-vt 0.631248 0.600886
-vt 0.235506 0.563369
-vt 0.376308 0.502134
-vt 0.684184 0.486516
-vt 0.600648 0.631504
-vt 0.224338 0.543928
-vt 0.365141 0.521574
-vt 0.673016 0.505957
-vt 0.589480 0.612063
-vt 0.224363 0.521493
-vt 0.365165 0.544010
-vt 0.673041 0.528392
-vt 0.589505 0.589628
-vt 0.235572 0.502074
-vt 0.376374 0.563429
-vt 0.684250 0.547811
-vt 0.600714 0.570209
-vt 0.254963 0.490875
-vt 0.395765 0.574628
-vt 0.277340 0.490897
-vt 0.418142 0.574606
-vt 0.296707 0.502134
-vt 0.437509 0.563369
-vt 0.745385 0.547751
-vt 0.661849 0.570268
-vt 0.307874 0.521574
-vt 0.448677 0.543928
-vt 0.756553 0.528311
-vt 0.673016 0.589709
-vt 0.307850 0.544010
-vt 0.448652 0.521493
-vt 0.756528 0.505875
-vt 0.296641 0.563429
-vt 0.437443 0.502074
-vt 0.745319 0.486456
-vt 0.661783 0.631563
-vt 0.137065 0.490951
-vt 0.137005 0.510428
-vt 0.112297 0.510352
-vt 0.136179 0.933850
-vt 0.111529 0.933926
-vt 0.111469 0.914449
-vt 0.136936 0.532864
-vt 0.112228 0.532788
-vt 0.136119 0.914373
-vt 0.111400 0.892013
-vt 0.136877 0.552247
-vt 0.112169 0.552171
-vt 0.136050 0.891937
-vt 0.111341 0.872629
-vt 0.960674 0.000023
-vt 0.960655 0.019461
-vt 0.935947 0.019437
-vt 0.935965 0.061321
-vt 0.960616 0.061344
-vt 0.960597 0.080781
-vt 0.960634 0.041897
-vt 0.935926 0.041874
-vt 0.935947 0.080758
-vt 0.960576 0.103218
-vt 0.935908 0.061297
-vt 0.935926 0.103194
-vt 0.960558 0.122641
-vt 0.136282 0.926144
-vt 0.136342 0.906407
-vt 0.161050 0.906483
-vt 0.448916 0.890483
-vt 0.473565 0.890407
-vt 0.473626 0.910145
-vt 0.136411 0.883979
-vt 0.161119 0.884055
-vt 0.448976 0.910220
-vt 0.473695 0.932572
-vt 0.136469 0.864871
-vt 0.161177 0.864947
-vt 0.449045 0.932648
-vt 0.473753 0.951680
-vt 0.161177 0.803581
-vt 0.161118 0.822850
-vt 0.136410 0.822774
-vt 0.271221 0.874845
-vt 0.295812 0.894190
-vt 0.161050 0.845284
-vt 0.136342 0.845208
-vt 0.271162 0.894115
-vt 0.295743 0.916624
-vt 0.160990 0.864871
-vt 0.136282 0.864795
-vt 0.271093 0.916549
-vt 0.295683 0.936212
-vt 0.633640 0.887725
-vt 0.668297 0.887831
-vt 0.668251 0.902641
-vt 0.633692 0.870763
-vt 0.668348 0.870869
-vt 0.633737 0.856193
-vt 0.668393 0.856300
-vt 0.330445 0.897915
-vt 0.365101 0.897808
-vt 0.365141 0.910641
-vt 0.330388 0.879343
-vt 0.365045 0.879237
-vt 0.330343 0.864420
-vt 0.364999 0.864313
-vt 0.372232 0.899362
-vt 0.406888 0.899395
-vt 0.372248 0.882398
-vt 0.406904 0.882431
-vt 0.372262 0.867701
-vt 0.406918 0.867734
-vt 0.104397 0.835905
-vt 0.069741 0.836011
-vt 0.069696 0.821356
-vt 0.104449 0.852868
-vt 0.069793 0.852975
-vt 0.104494 0.867595
-vt 0.069838 0.867702
-vt 0.842896 0.706409
-vt 0.828234 0.714877
-vt 0.813990 0.691312
-vt 0.201183 0.742132
-vt 0.215845 0.750600
-vt 0.186939 0.765697
-vt 0.851371 0.691727
-vt 0.224320 0.765282
-vt 0.851389 0.674764
-vt 0.846465 0.656942
-vt 0.219414 0.800067
-vt 0.828302 0.651569
-vt 0.201251 0.805440
-vt 0.811383 0.651552
-vt 0.184332 0.805457
-vt 0.796722 0.660020
-vt 0.169671 0.796990
-vt 0.788246 0.674702
-vt 0.161196 0.782307
-vt 0.788228 0.691665
-vt 0.161177 0.765344
-vt 0.796672 0.706364
-vt 0.169621 0.750645
-vt 0.811315 0.714860
-vt 0.184264 0.742149
-vt 0.987120 0.148498
-vt 0.987060 0.168086
-vt 0.974244 0.168046
-vt 0.987189 0.126064
-vt 0.974304 0.148459
-vt 0.987248 0.106795
-vt 0.974372 0.126025
-vt 0.977011 0.327820
-vt 0.977069 0.308711
-vt 0.989886 0.308751
-vt 0.976942 0.350247
-vt 0.989827 0.327859
-vt 0.976882 0.369984
-vt 0.989759 0.350286
-vt 0.991730 0.908371
-vt 0.978896 0.927782
-vt 0.991752 0.885934
-vt 0.978914 0.908358
-vt 0.991770 0.866497
-vt 0.978935 0.885922
-vt 0.984176 0.684994
-vt 0.984117 0.704377
-vt 0.971300 0.704338
-vt 0.984245 0.662558
-vt 0.971359 0.684955
-vt 0.984304 0.643081
-vt 0.971428 0.662519
-vt 0.714784 0.684639
-vt 0.745319 0.653961
-vt 0.406909 0.698535
-vt 0.430287 0.722022
-vt 0.415440 0.730597
-vt 0.756528 0.673380
-vt 0.438869 0.707155
-vt 0.756552 0.695816
-vt 0.438887 0.689977
-vt 0.745385 0.715256
-vt 0.430337 0.675093
-vt 0.726018 0.726493
-vt 0.415509 0.666490
-vt 0.703641 0.726515
-vt 0.398377 0.666473
-vt 0.684250 0.715316
-vt 0.383531 0.675048
-vt 0.673041 0.695897
-vt 0.374948 0.689915
-vt 0.673016 0.673461
-vt 0.374930 0.707092
-vt 0.684184 0.654021
-vt 0.383480 0.721977
-vt 0.703551 0.642784
-vt 0.398308 0.730580
-vt 0.634026 0.010797
-vt 0.640870 0.025939
-vt 0.636218 0.031514
-vt 0.612855 0.000000
-vt 0.630488 0.016822
-vt 0.612584 0.006428
-vt 0.592182 0.013296
-vt 0.708952 0.475258
-vt 0.684939 0.468318
-vt 0.688279 0.461962
-vt 0.708681 0.468830
-vt 0.726585 0.458435
-vt 0.730123 0.464460
-vt 0.732315 0.443743
-vt 0.652908 0.380493
-vt 0.660675 0.376391
-vt 0.588842 0.006939
-vt 0.564578 0.098866
-vt 0.736967 0.449318
-vt 0.729584 0.372404
-vt 0.638079 0.099282
-vt 0.633487 0.102854
-vt 0.631816 0.260249
-vt 0.627378 0.259427
-vt 0.556811 0.094765
-vt 0.554674 0.260699
-vt 0.642203 0.214139
-vt 0.650771 0.214559
-vt 0.734176 0.375976
-vt 0.723474 0.215831
-vt 0.640870 0.108435
-vt 0.649117 0.111755
-vt 0.544773 0.366822
-vt 0.546106 0.261119
-vt 0.717359 0.107946
-vt 0.727913 0.215008
-vt 0.621262 0.367312
-vt 0.617895 0.363598
-vt 0.640836 0.439267
-vt 0.634141 0.433477
-vt 0.622641 0.475257
-vt 0.618529 0.468569
-vt 0.562933 0.422552
-vt 0.553020 0.363503
-vt 0.594288 0.471666
-vt 0.568146 0.417610
-vt 0.736933 0.035990
-vt 0.713992 0.111660
-vt 0.718737 0.000000
-vt 0.730238 0.041780
-vt 0.659030 0.052705
-vt 0.664243 0.057648
-vt 0.690384 0.003592
-vt 0.690595 0.010041
-vt 0.594498 0.465217
-vt 0.714626 0.006689
-vt 0.126961 0.552247
-vt 0.137065 0.553394
-vt 0.137063 0.574602
-vt 0.800249 0.624809
-vt 0.812269 0.622335
-vt 0.812242 0.648165
-vt 0.835228 0.650024
-vt 0.835159 0.622335
-vt 0.845002 0.623255
-vt 0.458759 0.978525
-vt 0.448916 0.979446
-vt 0.448984 0.951756
-vt 0.800221 0.622335
-vt 0.800249 0.648165
-vt 0.788228 0.645690
-vt 0.122537 0.552247
-vt 0.122539 0.573455
-vt 0.112434 0.574602
-vt 0.986797 0.300698
-vt 0.978913 0.297473
-vt 0.980320 0.203265
-vt 0.783777 0.997045
-vt 0.782369 0.902837
-vt 0.790253 0.899612
-vt 0.341678 0.910748
-vt 0.341520 0.980201
-vt 0.336887 0.987458
-vt 0.740612 0.906414
-vt 0.745246 0.913671
-vt 0.745403 0.983124
-vt 0.851991 0.623671
-vt 0.856981 0.622335
-vt 0.856372 0.787383
-vt 0.960674 0.168086
-vt 0.960936 0.000000
-vt 0.965985 0.000802
-vt 0.023274 0.658159
-vt 0.018225 0.658961
-vt 0.017962 0.490875
-vt 0.976283 0.464564
-vt 0.976892 0.629612
-vt 0.971902 0.628276
-vt 0.987248 0.168086
-vt 0.987259 0.062794
-vt 0.992332 0.062164
-vt 0.994951 0.674198
-vt 0.989877 0.673568
-vt 0.989866 0.568276
-vt 0.325208 0.864313
-vt 0.330230 0.865527
-vt 0.330343 0.976013
-vt 0.633595 0.856193
-vt 0.633482 0.966680
-vt 0.628461 0.967893
-vt 0.996566 0.464564
-vt 0.996457 0.533580
-vt 0.991481 0.542731
-vt 0.630616 0.805632
-vt 0.630712 0.845852
-vt 0.621435 0.845936
-vt 0.863006 0.989982
-vt 0.857018 0.988559
-vt 0.857634 0.931580
-vt 0.110818 0.931785
-vt 0.105249 0.930773
-vt 0.105246 0.872554
-vt 0.991501 0.325069
-vt 0.996477 0.334220
-vt 0.996586 0.403235
-vt 0.138896 0.926220
-vt 0.148173 0.926304
-vt 0.148077 0.966524
-vt 0.987864 0.062164
-vt 0.987248 0.005185
-vt 0.993236 0.003761
-vt 0.903540 0.990352
-vt 0.903544 0.932133
-vt 0.909113 0.931121
-vt 0.977074 0.196778
-vt 0.969845 0.199558
-vt 0.970309 0.168086
-vt 0.618609 0.983543
-vt 0.618144 0.952071
-vt 0.625374 0.954852
-vt 0.845076 0.646619
-vt 0.845002 0.622352
-vt 0.850517 0.622335
-vt 0.856904 0.794907
-vt 0.856979 0.819174
-vt 0.851463 0.819191
-vt 0.903694 0.931116
-vt 0.903737 0.884618
-vt 0.909253 0.884623
-vt 0.903788 0.831170
-vt 0.909303 0.831175
-vt 0.851389 0.519525
-vt 0.851498 0.484043
-vt 0.857013 0.484060
-vt 0.263043 0.933750
-vt 0.263255 0.864313
-vt 0.268771 0.864330
-vt 0.473753 0.951761
-vt 0.473709 0.998259
-vt 0.468194 0.998254
-vt 0.032429 0.946552
-vt 0.032378 1.000000
-vt 0.026863 0.999995
-vt 0.863916 0.479677
-vt 0.863807 0.515159
-vt 0.858292 0.515142
-vt 0.863595 0.584596
-vt 0.858079 0.584579
-vt 0.863275 0.688977
-vt 0.857760 0.688960
-vt 0.670070 0.976109
-vt 0.670390 0.871728
-vt 0.675905 0.871745
-vt 0.857002 0.519548
-vt 0.856905 0.622335
-vt 0.851389 0.622329
-vt 0.903885 0.728383
-vt 0.909400 0.728388
-vt 0.063701 0.977927
-vt 0.064180 0.821249
-vt 0.069696 0.821266
-vt 0.904038 0.566281
-vt 0.909553 0.566286
-vt 0.976815 0.866485
-vt 0.971300 0.866479
-vt 0.862796 0.845654
-vt 0.857281 0.845637
-vt 0.862578 0.917041
-vt 0.857062 0.917024
-vt 0.359246 0.727346
-vt 0.359464 0.655960
-vt 0.364980 0.655977
-vt 0.998164 0.062169
-vt 0.998082 0.148790
-vt 0.992566 0.148784
-vt 0.904120 0.479660
-vt 0.909635 0.479665
-vt 0.359246 0.741902
-vt 0.359290 0.727363
-vt 0.364806 0.727380
-vt 0.700767 0.974236
-vt 0.695252 0.974219
-vt 0.695308 0.955827
-vt 0.688012 0.955827
-vt 0.688073 0.975961
-vt 0.682558 0.975978
-vt 0.818472 0.475274
-vt 0.818411 0.495409
-vt 0.812895 0.495392
-vt 0.688130 0.955827
-vt 0.693645 0.955844
-vt 0.693589 0.974236
-vt 0.862533 0.931580
-vt 0.857018 0.931563
-vt 0.826219 0.464460
-vt 0.822224 0.446187
-vt 0.827985 0.432302
-vt 0.805048 0.475258
-vt 0.804301 0.456043
-vt 0.781036 0.468318
-vt 0.783920 0.449603
-vt 0.516758 0.000000
-vt 0.516011 0.019215
-vt 0.495630 0.025655
-vt 0.537929 0.010797
-vt 0.533933 0.029070
-vt 0.544773 0.025939
-vt 0.539695 0.042956
-vt 0.492745 0.006939
-vt 0.468222 0.106395
-vt 0.749004 0.380493
-vt 0.756512 0.368862
-vt 0.924797 0.564014
-vt 0.935907 0.032074
-vt 0.935844 0.099481
-vt 0.935704 0.247428
-vt 0.738300 0.214139
-vt 0.746968 0.216069
-vt 0.460714 0.094765
-vt 0.458678 0.259188
-vt 0.924658 0.711961
-vt 0.448677 0.366822
-vt 0.450009 0.261119
-vt 0.736967 0.108435
-vt 0.745542 0.118998
-vt 0.929047 0.821288
-vt 0.924564 0.810601
-vt 0.935611 0.346068
-vt 0.814834 0.000000
-vt 0.833030 0.035990
-vt 0.826797 0.052743
-vt 0.755126 0.052705
-vt 0.760785 0.067873
-vt 0.786481 0.003592
-vt 0.787235 0.022860
-vt 0.924503 0.875902
-vt 0.526544 0.475257
-vt 0.522977 0.455616
-vt 0.538507 0.422515
-vt 0.466836 0.422552
-vt 0.457252 0.356260
-vt 0.498191 0.471666
-vt 0.472494 0.407385
-vt 0.811267 0.019641
-vt 0.498945 0.452398
-vt 0.192851 0.952718
-vt 0.192839 0.972923
-vt 0.182826 0.973599
-vt 0.823714 0.622335
-vt 0.823714 0.647941
-vt 0.812269 0.644997
-vt 0.589532 0.952071
-vt 0.598470 0.956901
-vt 0.598832 0.978323
-vt 0.458893 0.979270
-vt 0.458842 0.951756
-vt 0.468194 0.953018
-vt 0.835159 0.647941
-vt 0.825251 0.645714
-vt 0.823714 0.625278
-vt 0.171455 0.973599
-vt 0.161177 0.967755
-vt 0.161430 0.952718
-vt 0.637229 0.994848
-vt 0.635837 0.905465
-vt 0.988188 0.203265
-vt 0.994624 0.210184
-vt 0.994644 0.295472
-vt 0.081056 0.986550
-vt 0.072446 0.981380
-vt 0.076266 0.914081
-vt 0.380827 0.914081
-vt 0.380670 0.979669
-vt 0.376038 0.986550
-vt 0.976301 0.308711
-vt 0.971893 0.463287
-vt 0.365338 0.821249
-vt 0.372120 0.826110
-vt 0.370534 0.979194
-vt 0.967461 0.168086
-vt 0.967609 0.009380
-vt 0.972658 0.010141
-vt 0.063121 0.977085
-vt 0.058137 0.970456
-vt 0.058712 0.822510
-vt 0.443509 0.895191
-vt 0.448832 0.898100
-vt 0.448773 0.995183
-vt 0.990034 0.767067
-vt 0.995107 0.766494
-vt 0.978913 0.203265
-vt 0.978651 0.307589
-vt 0.973629 0.308711
-vt 0.978896 0.971931
-vt 0.971300 0.965239
-vt 0.973611 0.866485
-vt 0.996614 0.765689
-vt 0.989943 0.759380
-vt 0.991495 0.691361
-vt 0.968387 0.206496
-vt 0.962541 0.204632
-vt 0.910355 0.999502
-vt 0.909635 0.945369
-vt 0.915586 0.944207
-vt 0.492142 0.996225
-vt 0.492263 0.940390
-vt 0.497746 0.939708
-vt 0.024634 0.658961
-vt 0.024472 0.724454
-vt 0.019515 0.733290
-vt 0.967617 0.944207
-vt 0.969075 0.982617
-vt 0.959903 0.982603
-vt 0.865627 0.944207
-vt 0.870805 0.946141
-vt 0.870858 0.999502
-vt 0.989886 0.403235
-vt 0.995894 0.407511
-vt 0.995490 0.459752
-vt 0.611762 0.983538
-vt 0.611318 0.952071
-vt 0.618144 0.954852
-vt 0.599276 0.952071
-vt 0.603483 0.956547
-vt 0.605658 0.980757
-vt 0.605732 0.952071
-vt 0.610366 0.952085
-vt 0.610292 0.976345
-vt 0.224264 0.977678
-vt 0.219630 0.977664
-vt 0.219705 0.953404
-vt 0.491351 0.901520
-vt 0.486717 0.901515
-vt 0.486758 0.857614
-vt 0.491392 0.857618
-vt 0.486806 0.807149
-vt 0.891342 0.939864
-vt 0.886708 0.939850
-vt 0.886810 0.906359
-vt 0.999799 0.832084
-vt 0.995166 0.832070
-vt 0.995366 0.766494
-vt 0.017834 0.838782
-vt 0.022468 0.838786
-vt 0.022427 0.882688
-vt 0.039119 0.946600
-vt 0.043753 0.946605
-vt 0.043706 0.997069
-vt 0.888013 0.479660
-vt 0.892545 0.513165
-vt 0.887710 0.578727
-vt 0.887911 0.513150
-vt 0.892344 0.578741
-vt 0.892043 0.677292
-vt 0.996705 0.866499
-vt 0.996404 0.965050
-vt 0.991770 0.965035
-vt 0.473845 0.890407
-vt 0.478478 0.890412
-vt 0.478387 0.987461
-vt 0.491440 0.807154
-vt 0.486898 0.710099
-vt 0.223886 0.953404
-vt 0.219252 0.953390
-vt 0.219705 0.805457
-vt 0.491531 0.710104
-vt 0.487042 0.557045
-vt 0.444198 0.742132
-vt 0.448832 0.742137
-vt 0.448687 0.895191
-vt 0.887409 0.677278
-vt 0.891590 0.825225
-vt 0.886750 0.892613
-vt 0.886956 0.825211
-vt 0.988938 0.704377
-vt 0.984304 0.704363
-vt 0.984510 0.636961
-vt 0.994722 0.203265
-vt 0.999356 0.203270
-vt 0.999278 0.285057
-vt 0.491676 0.557049
-vt 0.487120 0.475257
-vt 0.823106 0.489004
-vt 0.818472 0.488990
-vt 0.540140 0.974486
-vt 0.540083 0.956099
-vt 0.544717 0.956085
-vt 0.500067 0.956099
-vt 0.504700 0.956085
-vt 0.504762 0.976217
-vt 0.625763 0.868021
-vt 0.621129 0.868035
-vt 0.621068 0.847902
-vt 0.509396 0.956085
-vt 0.509452 0.974472
-vt 0.504818 0.974486
-vt 0.891384 0.892627
-vt 0.891342 0.906359
-vt 0.430979 0.469291
-vt 0.094472 0.021584
-vt 0.421015 0.004798
-vt 0.084508 0.486077
-vt 0.974244 0.106736
-vt 0.182573 0.981278
-vt 0.707415 0.955847
-vt 0.675905 0.955847
-vt 0.872279 0.479660
-vt 0.909635 0.944201
-vt 0.886708 0.479680
-vt 0.499750 0.578809
-vt 0.931007 0.464548
-vt 0.498646 0.939708
-vt 0.916578 0.944090
-vt 0.929384 0.464548
-vt 0.038933 0.992083
-vt 0.025759 0.946546
-vt 0.050695 0.968512
-vt 0.870858 0.479666
-vt 0.989678 0.568276
-vt 0.978896 0.989091
-vt 0.977156 0.765689
-vt 0.976892 0.525855
-vt 0.032429 0.946525
-vt 0.193197 0.805457
-vt 0.790440 0.960961
-vt 0.217718 0.928172
-vt 0.643685 0.963938
-vt 0.935965 0.163397
-vt 0.320521 0.874845
-vt 0.136469 0.742132
-vt 0.288993 0.742132
-vt 0.491566 0.901520
-vt 0.247859 0.910748
-vt 0.430381 0.973461
-vt 0.032241 0.946546
-vt 0.843467 0.971419
-vt 0.268958 0.805457
-vt 0.768921 0.967705
-vt 0.710782 0.906414
-vt 0.843103 0.968059
-vt 0.383578 0.914081
-vt 0.745580 0.906414
-vt 0.449057 0.843955
-vt 0.057124 0.838782
-vt 0.069696 0.914048
-vt 0.258995 0.910748
-vt 0.745545 0.859966
-vt 0.780292 0.899505
-vt 0.112357 0.490875
-vt 0.135991 0.872554
-vt 0.935965 0.000000
-vt 0.935908 0.122618
-vt 0.160990 0.926220
-vt 0.449103 0.951756
-vt 0.136469 0.803505
-vt 0.271033 0.936136
-vt 0.633595 0.902535
-vt 0.330484 0.910748
-vt 0.372218 0.914048
-vt 0.104352 0.821249
-vt 0.974431 0.106756
-vt 0.989698 0.370024
-vt 0.978954 0.866485
-vt 0.971488 0.643042
-vt 0.126695 0.568020
-vt 0.801840 0.645490
-vt 0.844633 0.644828
-vt 0.458389 0.956952
-vt 0.789819 0.625009
-vt 0.112169 0.558829
-vt 0.986785 0.210764
-vt 0.790241 0.989546
-vt 0.333066 0.916168
-vt 0.736791 0.977704
-vt 0.851389 0.780362
-vt 0.967461 0.162932
-vt 0.024750 0.496029
-vt 0.971300 0.471584
-vt 0.992566 0.164981
-vt 0.995184 0.571381
-vt 0.322755 0.968889
-vt 0.626007 0.863318
-vt 0.989866 0.470997
-vt 0.624636 0.807646
-vt 0.862847 0.933790
-vt 0.111341 0.877341
-vt 0.989886 0.396803
-vt 0.142097 0.964510
-vt 0.993077 0.059953
-vt 0.909635 0.985565
-vt 0.974765 0.172563
-vt 0.623065 0.979066
-vt 0.850592 0.646602
-vt 0.851389 0.794924
-vt 0.909209 0.931121
-vt 0.856904 0.519542
-vt 0.268558 0.933767
-vt 0.468238 0.951756
-vt 0.026913 0.946546
-vt 0.858400 0.479660
-vt 0.675586 0.976126
-vt 0.851486 0.519542
-vt 0.069216 0.977944
-vt 0.971453 0.704377
-vt 0.992648 0.062164
-vt 0.364761 0.741919
-vt 0.700824 0.955844
-vt 0.682496 0.955844
-vt 0.812957 0.475257
-vt 0.688073 0.974219
-vt 0.833064 0.449318
-vt 0.924861 0.496607
-vt 0.935549 0.411369
-vt 0.544739 0.439267
-vt 0.182573 0.958562
-vt 0.813806 0.624561
-vt 0.589480 0.979585
-vt 0.467832 0.974440
-vt 0.171443 0.953394
-vt 0.643664 0.987929
-vt 0.986797 0.292649
-vt 0.080898 0.920962
-vt 0.372218 0.919251
-vt 0.971318 0.315341
-vt 0.365486 0.979955
-vt 0.974244 0.163224
-vt 0.063701 0.821249
-vt 0.443699 0.994609
-vt 0.995166 0.863576
-vt 0.971318 0.209957
-vt 0.978633 0.867607
-vt 0.996452 0.700197
-vt 0.969845 0.168086
-vt 0.915532 0.997568
-vt 0.498150 0.991949
-vt 0.017962 0.665270
-vt 0.961771 0.946071
-vt 0.864908 0.998340
-vt 0.990006 0.459070
-vt 0.615969 0.979062
-vt 0.598832 0.983538
-vt 0.605658 0.976331
-vt 0.224338 0.953418
-vt 0.891444 0.906374
-vt 1.000000 0.766508
-vt 0.017793 0.882683
-vt 0.039072 0.997065
-vt 0.992072 0.866485
-vt 0.473753 0.987457
-vt 0.224338 0.805471
-vt 0.444053 0.895187
-vt 0.989144 0.636975
-vt 0.994644 0.285052
-vt 0.491753 0.475262
-vt 0.823148 0.475272
-vt 0.544773 0.974472
-vt 0.500128 0.976232
-vt 0.625701 0.847888
-vt 0.504762 0.956099
-vt 0.886708 0.906345
-vt 0.443917 0.821249
-vt 0.819898 0.819191
-vt 0.856897 0.819305
-vt 0.856761 0.863671
-vt 0.544822 0.904631
-vt 0.589075 0.904673
-vt 0.589026 0.956085
-vt 0.544368 0.904673
-vt 0.544319 0.956085
-vt 0.500067 0.956043
-vt 0.544874 0.849165
-vt 0.589127 0.849207
-vt 0.544420 0.849207
-vt 0.500115 0.904631
-vt 0.879929 0.104895
-vt 0.880138 0.036641
-vt 0.924391 0.036777
-vt 0.834419 0.036641
-vt 0.878671 0.036777
-vt 0.878462 0.105031
-vt 0.880250 0.000000
-vt 0.924503 0.000136
-vt 0.878783 0.000136
-vt 0.924182 0.105031
-vt 0.923835 0.218517
-vt 0.879582 0.218381
-vt 0.834210 0.104895
-vt 0.878115 0.218517
-vt 0.544976 0.740944
-vt 0.544522 0.740987
-vt 0.500167 0.849165
-vt 0.589229 0.740987
-vt 0.545140 0.568150
-vt 0.544685 0.568192
-vt 0.500269 0.740944
-vt 0.923316 0.388182
-vt 0.879063 0.388046
-vt 0.833863 0.218381
-vt 0.877596 0.388182
-vt 0.923098 0.459408
-vt 0.833126 0.459272
-vt 0.833344 0.388046
-vt 0.545228 0.475257
-vt 0.589480 0.475299
-vt 0.500433 0.568150
-vt 0.500521 0.475257
-vt 0.224338 0.864177
-vt 0.224432 0.833476
-vt 0.268685 0.833612
-vt 0.320708 0.805593
-vt 0.364961 0.805457
-vt 0.365055 0.836158
-vt 0.923036 0.479660
-vt 0.878783 0.479524
-vt 0.877378 0.459408
-vt 0.877316 0.479660
-vt 0.224518 0.805457
-vt 0.268771 0.805593
-vt 0.365141 0.864177
-vt 0.320888 0.864313
-vt 0.676020 0.918108
-vt 0.707415 0.918204
-vt 0.707300 0.955827
-vt 0.630712 0.856078
-vt 0.630867 0.805632
-vt 0.668393 0.805747
-vt 0.710605 0.859851
-vt 0.710771 0.805632
-vt 0.748298 0.805747
-vt 0.710543 0.871728
-vt 0.673016 0.871693
-vt 0.673079 0.805632
-vt 0.625374 0.914448
-vt 0.625338 0.952071
-vt 0.486613 0.753891
-vt 0.449086 0.753855
-vt 0.449191 0.643406
-vt 0.019740 0.733378
-vt 0.057266 0.733493
-vt 0.056944 0.838782
-vt 0.448677 0.643291
-vt 0.449191 0.475257
-vt 0.486717 0.475373
-vt 0.327458 0.655924
-vt 0.327614 0.490875
-vt 0.320708 0.805493
-vt 0.320643 0.874845
-vt 0.283116 0.874810
-vt 0.449191 0.753891
-vt 0.486717 0.754006
-vt 0.486442 0.843955
-vt 0.193125 0.965874
-vt 0.193010 0.928251
-vt 0.218740 0.928172
-vt 0.870858 0.981830
-vt 0.870894 0.944207
-vt 0.890407 0.944226
-vt 0.935908 0.125774
-vt 0.959847 0.125701
-vt 0.959962 0.163324
-vt 0.264481 0.967918
-vt 0.264385 0.936308
-vt 0.295774 0.936212
-vt 0.192705 0.952718
-vt 0.161177 0.952622
-vt 0.161323 0.904967
-vt 0.104494 0.872457
-vt 0.104651 0.821249
-vt 0.621068 0.805662
-vt 0.621009 0.868035
-vt 0.136147 0.967900
-vt 0.104618 0.967870
-vt 0.104650 0.933926
-vt 0.819762 0.819162
-vt 0.819861 0.714877
-vt 0.851389 0.714907
-vt 0.161481 0.805457
-vt 0.193010 0.805554
-vt 0.192705 0.904967
-vt 0.057266 0.574724
-vt 0.056781 0.733378
-vt 0.025253 0.733281
-vt 0.788081 0.714877
-vt 0.756553 0.714847
-vt 0.756700 0.559010
-vt 0.819714 0.558980
-vt 0.819775 0.493498
-vt 0.851304 0.493528
-vt 0.359246 0.656057
-vt 0.358986 0.740964
-vt 0.327458 0.740867
-vt 0.295967 0.936217
-vt 0.321708 0.936297
-vt 0.321611 0.967906
-vt 0.935032 0.944127
-vt 0.935002 0.975737
-vt 0.959904 0.944281
-vt 0.959807 0.975890
-vt 0.935888 0.975816
-vt 0.444053 0.865615
-vt 0.819762 0.863558
-vt 0.544773 0.956042
-vt 0.834531 0.000000
-vt 0.589392 0.568192
-vt 0.878845 0.459272
-vt 0.544773 0.475300
-vt 0.268591 0.864313
-vt 0.320802 0.836294
-vt 0.833064 0.479524
-vt 0.675905 0.955730
-vt 0.668239 0.856193
-vt 0.748132 0.859966
-vt 0.710605 0.805667
-vt 0.589480 0.952037
-vt 0.486717 0.643442
-vt 0.019418 0.838666
-vt 0.486203 0.643406
-vt 0.365141 0.490911
-vt 0.283182 0.805457
-vt 0.448916 0.843839
-vt 0.218855 0.965795
-vt 0.890371 0.981849
-vt 0.295871 0.967821
-vt 0.192851 0.905064
-vt 0.136179 0.821346
-vt 0.589539 0.805632
-vt 0.136179 0.933956
-vt 0.851291 0.819191
-vt 0.161177 0.904871
-vt 0.025738 0.574628
-vt 0.788228 0.559040
-vt 0.851242 0.559010
-vt 0.327718 0.655960
-vt 0.916578 0.975719
-vt 0.935984 0.944207
-vn -0.011000 0.999900 0.000000
-vn -0.576400 0.817200 0.000000
-vn -1.000000 0.000000 0.000000
-vn -0.005600 1.000000 0.000000
-vn -0.274000 0.961700 0.000000
-vn 0.274000 -0.961700 0.000000
-vn 0.005600 -1.000000 0.000000
-vn 0.576400 -0.817200 0.000000
-vn 0.011000 -0.999900 0.000000
-vn -0.000000 0.000000 -1.000000
-vn 0.000000 0.000000 1.000000
-vn -0.916300 -0.386200 -0.106000
-vn 0.973100 -0.230300 -0.000000
-vn -0.522200 -0.852800 0.000000
-vn -0.717500 -0.696600 0.000000
-vn 0.054100 -0.998500 0.000000
-vn -0.547500 0.836800 -0.000000
-vn 0.000000 -0.097700 -0.995200
-vn 0.241300 0.265100 0.933500
-vn -0.000000 0.073000 -0.997300
-vn 0.082900 0.174900 0.981100
-vn -0.000000 0.095100 -0.995500
-vn 0.003000 0.147400 0.989100
-vn 0.898000 -0.440000 0.000000
-vn -0.754600 -0.656200 0.000000
-vn 0.000000 -1.000000 0.000000
-vn 0.549400 -0.835600 0.000000
-vn 0.549300 -0.835600 0.000000
-vn 0.549500 -0.835500 0.000000
-vn -0.020000 -0.999800 0.000000
-vn -0.428400 -0.903600 0.000000
-vn 0.195900 -0.980600 0.000000
-vn -0.004000 0.000000 1.000000
-vn -0.004000 0.000000 -1.000000
-vn -0.004000 0.005600 1.000000
-vn -0.004000 0.005600 -1.000000
-vn -0.004000 -0.055800 -0.998400
-vn -0.972300 0.233800 0.000000
-vn -1.000000 -0.001800 0.000000
-vn -0.006000 0.812500 -0.582900
-vn -0.006000 0.812500 0.582900
-vn -0.007400 1.000000 0.000000
-vn 0.017900 0.999800 0.000000
-vn -0.017900 -0.999800 0.000000
-vn 0.339200 -0.166200 -0.925900
-vn 0.468700 -0.229600 0.853000
-vn 0.754200 -0.656600 0.000000
-vn 0.002200 -1.000000 0.000000
-vn 0.002100 -0.991800 0.127400
-vn 0.032100 -0.999500 0.000000
-vn -1.000000 0.000000 -0.001300
-vn -1.000000 0.000000 0.001300
-vn 0.014600 0.812400 -0.582900
-vn 0.014600 0.812400 0.582900
-vn 0.467200 0.882600 -0.052300
-vn 0.467200 0.882600 0.052300
-vn 0.457600 0.889100 0.000000
-vn -0.274800 -0.952700 0.129800
-vn -0.274800 -0.952700 -0.129800
-vn 0.220500 0.255300 -0.941400
-vn 0.220500 0.255300 0.941400
-vn 0.896500 -0.442900 0.000000
-vn 0.896600 -0.442900 0.000000
-vn 0.109000 -0.005700 -0.994000
-vn 0.106500 0.000000 0.994300
-vn 0.097700 -0.995200 0.000000
-vn -0.113400 0.993600 0.000000
-vn 0.041700 0.050700 -0.997800
-vn 0.060100 0.048100 0.997000
-vn 0.006300 0.121400 -0.992600
-vn 0.006300 0.121400 0.992600
-vn -0.105500 0.991600 0.075100
-vn -0.105500 0.991600 -0.075100
-vn -0.080900 0.996700 0.000000
-vn 0.995400 0.095500 0.000000
-vn -0.634500 -0.772900 0.000000
-vn -0.051600 -0.998700 0.000000
-vn 0.105800 -0.994400 0.000000
-vn 0.080900 -0.996700 0.000000
-vn -0.998300 -0.057600 0.000000
-vn 0.244800 0.969600 0.000000
-vn 0.499800 0.866200 -0.000000
-vn 0.999800 -0.018100 0.000000
-vn 0.895600 -0.444800 0.000000
-vn 0.051600 0.998700 -0.000000
-vn 0.283300 0.959000 0.000000
-vn -0.021000 0.259300 -0.965600
-vn -0.001400 0.249500 0.968400
-vn -0.005500 1.000000 0.000000
-vn -0.842700 -0.538300 0.000000
-vn -0.004000 -0.002500 1.000000
-vn -0.004000 -0.002500 -1.000000
-vn 0.847700 -0.362900 -0.386800
-vn 0.067300 0.032100 0.997200
-vn 0.200300 0.193100 -0.960500
-vn 0.128900 0.166800 0.977500
-vn 0.719900 0.694100 0.000000
-vn 0.919300 -0.393600 0.000000
-vn 0.075300 0.255000 -0.964000
-vn 0.008100 0.339700 0.940500
-vn 0.013400 0.258800 -0.965800
-vn 0.013400 0.258800 0.965800
-vn -0.015200 0.987900 -0.154300
-vn -0.015200 0.987900 0.154300
-vn 0.023600 0.991400 -0.128500
-vn 0.002600 1.000000 0.000000
-vn 0.011300 0.999900 0.000000
-vn -0.011300 -0.999900 0.000000
-vn -0.002600 -1.000000 0.000000
-vn 0.105400 -0.994400 0.000000
-vn 0.059600 -0.998200 0.000000
-vn 0.061900 -0.998100 0.000000
-vn 0.103500 -0.976400 0.189700
-vn -0.004100 0.812500 -0.582900
-vn -0.004100 0.812500 0.582900
-vn -0.005000 1.000000 0.000000
-vn 0.010600 0.999900 0.000000
-vn -0.010600 -0.999900 0.000000
-vn -0.002600 0.101300 -0.994900
-vn -0.003800 0.150900 0.988500
-vn 0.000700 0.098600 -0.995100
-vn 0.001000 0.147100 0.989100
-vn -0.006700 -1.000000 0.000000
-vn 0.025500 -0.999700 0.000000
-vn -0.004700 -1.000000 0.000000
-vn 0.014600 -0.999900 0.000000
-vn 0.008600 0.812500 -0.582900
-vn 0.008600 0.812500 0.582900
-vn 0.599600 -0.004500 -0.800300
-vn 0.599600 -0.004500 0.800300
-vn 0.009000 0.841900 -0.539600
-vn 0.009000 0.841900 0.539600
-vn -0.009000 -0.841900 -0.539600
-vn -0.009000 -0.841900 0.539600
-vn -0.599600 0.004500 -0.800300
-vn -0.599600 0.004500 0.800300
-vn -0.507400 0.003800 -0.861700
-vn -0.507400 0.003800 0.861700
-vn 0.008200 0.774900 -0.632000
-vn 0.008200 0.774900 0.632000
-vn -0.008200 -0.774900 -0.632000
-vn -0.008200 -0.774900 0.632000
-vn 0.507400 -0.003800 -0.861700
-vn 0.507400 -0.003800 0.861700
-vn 0.370800 -0.001400 -0.928700
-vn 0.371000 -0.001400 0.928600
-vn -0.003400 0.683200 -0.730300
-vn -0.003400 0.683200 0.730300
-vn -0.007700 -0.683100 -0.730300
-vn -0.007700 -0.683100 0.730300
-vn -0.370800 0.002300 -0.928700
-vn -0.371000 0.002400 0.928600
-vn 0.495800 0.868500 0.000000
-vn -0.004400 0.874200 -0.485500
-vn -0.004400 0.874200 0.485500
-vn -0.502300 0.864700 0.000000
-vn 0.006900 0.691900 0.721900
-vn 0.006900 0.691900 -0.721900
-vn 0.007000 0.698400 0.715600
-vn 0.007400 0.695200 -0.718800
-vn 0.007400 0.695200 0.718800
-vn 0.007000 0.698400 -0.715600
-vn 0.007300 0.686600 0.727000
-vn 0.007300 0.686600 -0.727000
-vn 0.001700 0.683100 0.730300
-vn 0.001700 0.683100 -0.730300
-vn 0.001800 0.683600 0.729900
-vn 0.007800 0.690600 0.723200
-vn 0.011700 0.691700 0.722100
-vn 0.011600 0.691700 -0.722100
-vn 0.011700 0.691700 -0.722100
-vn 0.012400 0.693200 0.720700
-vn -0.003600 0.692500 0.721400
-vn -0.003900 0.693900 -0.720100
-vn -0.007200 0.696000 0.718000
-vn -0.007700 0.702000 -0.712100
-vn -0.536100 0.844200 0.000000
-vn 0.628300 0.778000 -0.000000
-vn -0.007200 0.696000 -0.718000
-vn -0.003600 0.692500 -0.721400
-vn 0.010000 1.000000 -0.000000
-vn 0.002400 1.000000 0.000000
-vn 0.016800 0.999900 -0.000000
-vn -0.005200 1.000000 -0.000000
-vn -0.010300 0.999900 -0.000000
-vn -0.916300 -0.386200 0.106000
-vn 0.248800 0.236400 -0.939200
-vn 0.000000 -0.057300 0.998400
-vn 0.055900 0.117900 -0.991500
-vn -0.000000 0.109100 0.994000
-vn 0.002000 0.098900 -0.995100
-vn 0.000000 0.141800 0.989900
-vn -0.574000 -0.789700 -0.216700
-vn -0.574000 -0.789700 0.216700
-vn 0.004000 -0.000900 -1.000000
-vn 0.004000 -0.000900 1.000000
-vn 0.195800 -0.980600 0.000000
-vn -0.004000 -0.055800 0.998400
-vn -0.003200 0.101100 -0.994900
-vn -0.004800 0.150700 0.988600
-vn 0.002100 -0.991800 -0.127400
-vn 0.283700 0.779300 -0.558800
-vn 0.283700 0.779300 0.558800
-vn 0.204400 0.000000 -0.978900
-vn 0.204400 0.000000 0.978900
-vn 0.098400 0.069600 -0.992700
-vn 0.098400 0.069600 0.992700
-vn 0.106500 0.000000 -0.994300
-vn 0.109000 -0.005700 0.994000
-vn 0.060100 0.048100 -0.997000
-vn 0.041700 0.050700 0.997800
-vn 0.042000 0.053100 -0.997700
-vn 0.042000 0.053100 0.997700
-vn 0.057300 0.080300 -0.995100
-vn 0.057300 0.080300 0.995100
-vn -0.001400 0.249500 -0.968400
-vn -0.021000 0.259300 0.965600
-vn 0.067300 0.032100 -0.997200
-vn 0.847700 -0.362900 0.386800
-vn 0.128900 0.166800 -0.977500
-vn 0.200300 0.193100 0.960500
-vn 0.008100 0.339700 -0.940500
-vn 0.075300 0.255000 0.964000
-vn 0.006300 0.264000 -0.964500
-vn 0.006300 0.264000 0.964500
-vn 0.023800 0.999700 0.000000
-vn 0.023600 0.991400 0.128500
-vn 0.103500 -0.976400 -0.189700
-vn -0.001500 0.099200 -0.995100
-vn -0.002200 0.147800 0.989000
-vn 0.000500 0.098900 -0.995100
-vn 0.000700 0.147400 0.989100
-vn 0.371000 -0.001400 -0.928600
-vn 0.370800 -0.001400 0.928700
-vn -0.371000 0.002400 -0.928600
-vn -0.370800 0.002300 0.928700
-vn 0.007800 0.690600 -0.723200
-vn 0.001800 0.683600 -0.729900
-vn 0.012400 0.693200 -0.720700
-vn 0.011600 0.691700 0.722100
-vn -0.003900 0.693900 0.720100
-vn -0.007700 0.702000 0.712100
-vn -0.431300 0.902200 -0.000000
-vn -0.096600 0.995300 -0.000000
-vn -0.097700 0.995200 -0.000000
-vn -0.028600 0.999600 -0.000000
-vn 0.866000 0.500000 -0.000000
-vn 1.000000 0.000000 -0.000000
-vn 0.866000 -0.500000 -0.000000
-vn 0.500000 -0.866000 -0.000000
-vn -0.500000 -0.866000 -0.000000
-vn -0.866000 -0.500000 -0.000000
-vn -0.866000 0.500000 -0.000000
-vn -0.500000 0.866000 -0.000000
-vn -0.000000 1.000000 0.000000
-vn 0.500000 0.866000 -0.000000
-vn -0.713800 0.700300 -0.000000
-vn -0.971900 -0.235400 -0.000000
-vn 0.996300 0.085700 0.000000
-vn 0.572300 0.820100 0.000000
-vn 0.348200 0.937400 0.000000
-vn 0.416200 -0.909300 0.000000
-vn -0.301400 -0.953500 0.000000
-vn 0.058600 -0.998300 0.000000
-vn 0.027200 0.999600 0.000000
-vn -0.000900 -1.000000 0.000000
-vn -0.024600 0.999700 0.000000
-vn -0.001700 -1.000000 0.000000
-vn -0.305700 0.952100 0.000000
-vn -0.448800 -0.893600 0.000000
-vn -0.908700 -0.417500 0.000000
-vn -0.949100 0.315000 0.000000
-vn -0.152600 -0.303900 0.940400
-vn -0.292700 -0.134500 0.946700
-vn -0.344900 0.131300 0.929400
-vn -0.304600 0.101100 -0.947100
-vn -0.340100 -0.179200 -0.923200
-vn -0.158500 -0.362100 -0.918600
-vn -0.080800 0.251600 -0.964400
-vn -0.113900 0.406900 0.906400
-vn -0.000700 -0.468900 -0.883300
-vn -0.000800 -0.467500 0.884000
-vn -0.000400 -0.466300 0.884600
-vn -0.006100 0.285600 0.958300
-vn -0.006600 0.269400 -0.963000
-vn -0.000400 -0.467800 -0.883800
-vn 0.006600 0.279500 -0.960100
-vn 0.007300 0.268200 0.963300
-vn 0.027200 -0.463100 -0.885900
-vn 0.027500 -0.536600 0.843400
-vn -0.109600 -0.397600 0.911000
-vn 0.127100 -0.318400 0.939400
-vn 0.090400 0.243400 0.965700
-vn 0.183400 0.262800 0.947200
-vn -0.216100 -0.683500 -0.697200
-vn 0.110600 -0.241600 -0.964100
-vn 0.108400 0.334800 -0.936000
-vn 0.305200 0.501600 -0.809500
-vn 0.346400 0.029800 0.937600
-vn 0.364300 0.035900 -0.930600
-vn -0.995200 -0.098200 0.000000
-vn -0.519800 -0.854300 0.000000
-vn -0.308100 -0.951400 0.000000
-vn -0.370700 0.928800 0.000000
-vn 0.265700 0.964100 0.000000
-vn -0.051100 0.998700 0.000000
-vn -0.023700 -0.999700 -0.000000
-vn 0.000800 1.000000 0.000000
-vn 0.021400 -0.999800 0.000000
-vn 0.001500 1.000000 0.000000
-vn 0.269600 -0.963000 0.000000
-vn 0.401100 0.916100 0.000000
-vn 0.884700 0.466200 0.000000
-vn 0.934600 -0.355800 0.000000
-vn -0.162100 -0.349700 -0.922700
-vn -0.226300 -0.112600 -0.967500
-vn -0.221500 0.073500 -0.972400
-vn -0.227500 0.081800 0.970300
-vn -0.219000 -0.100600 0.970500
-vn -0.160900 -0.320400 0.933500
-vn -0.130600 0.440700 0.888100
-vn -0.115900 0.360800 -0.925400
-vn -0.001200 -0.705900 0.708300
-vn -0.001100 -0.706800 -0.707400
-vn -0.000600 -0.706700 -0.707500
-vn -0.011500 0.468900 -0.883200
-vn -0.010900 0.482600 0.875800
-vn -0.000600 -0.705900 0.708300
-vn 0.012600 0.463900 0.885800
-vn 0.011900 0.473600 -0.880700
-vn 0.039900 -0.735500 0.676300
-vn 0.040900 -0.696400 -0.716500
-vn -0.301200 -0.952800 -0.039000
-vn 0.134300 -0.293400 -0.946500
-vn 0.136500 0.397900 -0.907200
-vn 0.215700 0.334800 -0.917300
-vn -0.254200 -0.871200 0.419900
-vn 0.140200 -0.331900 0.932800
-vn 0.128100 0.344800 0.929900
-vn 0.188700 0.270400 0.944100
-vn 0.229800 0.021400 -0.973000
-vn 0.227500 0.019600 0.973600
-vn -0.995700 -0.092800 0.000000
-vn -0.541600 -0.840600 0.000000
-vn -0.324400 -0.945900 0.000000
-vn -0.389300 0.921100 0.000000
-vn 0.280100 0.960000 0.000000
-vn -0.054100 0.998500 0.000000
-vn -0.025100 -0.999700 0.000000
-vn 0.022700 -0.999700 -0.000000
-vn 0.001600 1.000000 0.000000
-vn 0.284200 -0.958800 0.000000
-vn 0.420600 0.907200 0.000000
-vn 0.895300 0.445500 0.000000
-vn 0.941000 -0.338300 -0.000000
-vn -0.158500 -0.362100 0.918600
-vn -0.340100 -0.179200 0.923200
-vn -0.304600 0.101100 0.947100
-vn -0.344900 0.131300 -0.929400
-vn -0.292700 -0.134500 -0.946700
-vn -0.152600 -0.303900 -0.940400
-vn -0.113900 0.406900 -0.906400
-vn -0.080800 0.251600 0.964400
-vn -0.000800 -0.467500 -0.884000
-vn -0.000700 -0.468900 0.883300
-vn -0.000400 -0.467800 0.883800
-vn -0.006600 0.269400 0.963000
-vn -0.006100 0.285600 -0.958300
-vn -0.000400 -0.466300 -0.884600
-vn 0.007300 0.268200 -0.963300
-vn 0.006600 0.279500 0.960100
-vn 0.027500 -0.536600 -0.843400
-vn 0.027200 -0.463100 0.885900
-vn -0.216100 -0.683500 0.697200
-vn 0.110600 -0.241600 0.964100
-vn 0.108400 0.334800 0.936000
-vn 0.305200 0.501600 0.809500
-vn -0.109600 -0.397600 -0.911000
-vn 0.127100 -0.318400 -0.939400
-vn 0.090400 0.243400 -0.965700
-vn 0.183400 0.262800 -0.947200
-vn 0.364300 0.035900 0.930600
-vn 0.346400 0.029800 -0.937600
-vn -0.160900 -0.320400 -0.933500
-vn -0.219000 -0.100600 -0.970500
-vn -0.227500 0.081800 -0.970300
-vn -0.221500 0.073500 0.972400
-vn -0.226300 -0.112600 0.967500
-vn -0.162100 -0.349700 0.922700
-vn -0.115900 0.360800 0.925400
-vn -0.130600 0.440700 -0.888100
-vn -0.001100 -0.706800 0.707400
-vn -0.001200 -0.705900 -0.708300
-vn -0.000600 -0.705900 -0.708400
-vn -0.010900 0.482600 -0.875800
-vn -0.011500 0.468900 0.883200
-vn -0.000600 -0.706700 0.707500
-vn 0.011900 0.473600 0.880700
-vn 0.012600 0.463900 -0.885800
-vn 0.040900 -0.696400 0.716500
-vn 0.039900 -0.735500 -0.676300
-vn -0.254200 -0.871200 -0.419900
-vn 0.140200 -0.331900 -0.932800
-vn 0.128100 0.344800 -0.929900
-vn 0.188700 0.270400 -0.944100
-vn -0.301200 -0.952800 0.039000
-vn 0.134300 -0.293400 0.946500
-vn 0.136500 0.397900 0.907200
-vn 0.215700 0.334800 0.917300
-vn 0.227500 0.019600 -0.973600
-vn 0.229800 0.021400 0.973000
-vn -0.886600 -0.462500 -0.000000
-vn -0.863300 0.504700 -0.000000
-vn -0.466200 -0.884700 0.000000
-vn -0.196400 -0.980500 0.000000
-vn 0.150800 0.988600 -0.000000
-vn -0.094700 0.995500 -0.000000
-vn -0.014900 0.999900 -0.000000
-vn -0.006100 -1.000000 0.000000
-vn 0.169100 -0.985600 0.000000
-vn -0.030900 0.999500 -0.000000
-vn 0.191100 0.981600 -0.000000
-vn 0.715800 -0.698300 0.000000
-vn 0.999600 0.028300 -0.000000
-vn 0.737400 0.675500 -0.000000
-vn 0.872200 0.489100 0.000000
-vn 0.848100 -0.529800 0.000000
-vn 0.418600 0.908200 -0.000000
-vn 0.173200 0.984900 -0.000000
-vn 0.086200 -0.996300 0.000000
-vn -0.132800 -0.991100 0.000000
-vn 0.013000 -0.999900 0.000000
-vn 0.005300 1.000000 -0.000000
-vn -0.148800 0.988900 -0.000000
-vn 0.026900 -0.999600 0.000000
-vn -0.169900 -0.985500 0.000000
-vn -0.687000 0.726700 -0.000000
-vn -0.999500 -0.031400 -0.000000
-vn -0.703200 -0.711000 0.000000
-vn 0.878200 0.478300 -0.000000
-vn 0.854400 -0.519600 -0.000000
-vn 0.438100 0.898900 0.000000
-vn 0.182600 0.983200 0.000000
-vn -0.140100 -0.990100 -0.000000
-vn 0.089800 -0.996000 -0.000000
-vn 0.013800 -0.999900 -0.000000
-vn 0.005600 1.000000 0.000000
-vn -0.157000 0.987600 0.000000
-vn 0.028500 -0.999600 -0.000000
-vn -0.178500 -0.983900 -0.000000
-vn -0.699200 0.715000 0.000000
-vn -0.999500 -0.030100 -0.000000
-vn -0.717700 -0.696400 -0.000000
-usemtl Tank
-s off
-f 927/1/1 929/2/1 915/3/1
-f 930/4/1 928/5/1 918/6/1
-f 931/7/2 933/8/2 908/9/2
-f 932/10/2 911/11/2 909/12/2
-f 933/8/3 939/13/3 889/14/3
-f 934/15/3 909/12/3 890/16/3
-f 915/3/4 929/2/4 935/17/4
-f 930/4/4 916/18/4 906/19/4
-f 935/17/5 931/7/5 910/20/5
-f 936/21/5 906/19/5 911/11/5
-f 941/22/6 937/23/6 893/24/6
-f 942/25/6 888/26/6 894/27/6
-f 937/23/7 943/28/7 884/29/7
-f 938/30/7 894/27/7 885/31/7
-f 939/32/8 941/22/8 887/33/8
-f 940/34/8 890/35/8 888/26/8
-f 943/28/9 945/36/9 882/37/9
-f 944/38/9 885/31/9 883/39/9
-f 941/22/10 931/40/10 935/41/10
-f 936/42/11 932/43/11 942/25/11
-f 937/23/10 935/41/10 929/44/10
-f 930/45/11 936/42/11 938/30/11
-f 939/32/10 933/46/10 931/40/10
-f 932/43/11 934/47/11 940/34/11
-f 943/28/10 929/44/10 927/48/10
-f 928/49/11 930/45/11 944/38/11
-f 955/50/12 864/51/12 859/52/12
-f 956/53/13 952/54/13 859/52/13
-f 963/55/14 875/56/14 870/57/14
-f 964/58/14 962/59/14 870/57/14
-f 969/60/15 897/61/15 875/56/15
-f 970/62/15 964/58/15 875/56/15
-f 971/63/16 902/64/16 897/61/16
-f 972/65/16 970/62/16 897/61/16
-f 912/66/3 973/67/3 965/68/3
-f 912/66/3 886/69/3 966/70/3
-f 913/71/2 977/72/2 973/67/2
-f 913/71/2 912/66/2 974/73/2
-f 914/74/4 975/75/4 979/76/4
-f 914/74/4 907/77/4 980/78/4
-f 907/77/17 979/76/17 977/72/17
-f 907/77/17 913/71/17 978/79/17
-f 983/80/18 981/81/18 955/50/18
-f 984/82/19 968/83/19 956/53/19
-f 985/84/20 983/80/20 967/85/20
-f 986/86/21 954/87/21 968/83/21
-f 987/88/22 985/84/22 953/89/22
-f 988/90/23 958/91/23 954/87/23
-f 991/92/24 989/93/24 959/94/24
-f 991/92/24 869/95/24 960/96/24
-f 955/50/25 981/81/25 992/97/25
-f 992/97/25 982/98/25 956/53/25
-f 983/80/26 993/99/26 992/97/26
-f 984/82/26 982/98/26 992/97/26
-f 985/84/26 994/100/26 993/99/26
-f 986/86/26 984/82/26 993/99/26
-f 987/88/26 995/101/26 994/100/26
-f 988/90/26 986/86/26 994/100/26
-f 857/102/27 862/103/27 1000/104/27
-f 863/105/27 858/106/27 997/107/27
-f 996/108/28 1000/109/28 955/50/28
-f 956/53/29 1001/110/29 997/111/29
-f 865/112/30 1002/113/30 998/114/30
-f 866/115/30 861/116/30 999/117/30
-f 1002/118/30 957/119/30 953/89/30
-f 1003/120/30 999/121/30 954/87/30
-f 873/122/14 1008/123/14 1006/124/14
-f 874/125/14 872/126/14 1007/127/14
-f 1008/128/14 963/55/14 961/129/14
-f 1009/130/14 1007/131/14 962/59/14
-f 860/132/31 998/133/31 1012/134/31
-f 861/135/31 892/136/31 1013/137/31
-f 998/138/31 953/89/31 967/85/31
-f 999/121/31 1013/139/31 968/83/31
-f 891/140/32 1012/134/32 1000/104/32
-f 892/136/32 863/105/32 1001/141/32
-f 1000/109/32 1012/142/32 967/85/32
-f 968/83/32 1013/139/32 1001/110/32
-f 898/143/15 1014/144/15 1008/123/15
-f 899/145/15 874/125/15 1009/146/15
-f 1014/147/15 969/60/15 963/55/15
-f 1015/148/15 1009/130/15 964/58/15
-f 898/143/16 900/149/16 1016/150/16
-f 1017/151/16 901/152/16 899/145/16
-f 1016/153/16 971/63/16 969/60/16
-f 972/65/16 1017/154/16 1015/148/16
-f 973/67/33 1018/155/33 1010/156/33
-f 974/73/34 966/70/34 1011/157/34
-f 1018/158/3 908/9/3 889/14/3
-f 1019/159/3 1011/160/3 890/16/3
-f 977/72/35 1028/161/35 1018/155/35
-f 978/79/36 974/73/36 1019/162/36
-f 975/75/4 1026/163/4 1030/164/4
-f 976/165/4 980/78/4 1031/166/4
-f 979/76/5 1030/164/5 1028/161/5
-f 980/78/37 978/79/37 1029/167/37
-f 1026/168/10 1034/169/10 1032/170/10
-f 1033/171/11 1035/172/11 1027/173/11
-f 1040/174/38 1034/169/38 1026/168/38
-f 1041/175/38 976/176/38 1027/173/38
-f 1042/177/38 1040/174/38 975/178/38
-f 1042/177/38 914/179/38 976/176/38
-f 1046/180/39 1047/181/39 1040/174/39
-f 1046/180/39 1042/177/39 1041/175/39
-f 1047/181/39 1049/182/39 1034/169/39
-f 1048/183/39 1041/175/39 1035/172/39
-f 1034/169/40 1049/182/40 1051/184/40
-f 1052/185/41 1050/186/41 1035/172/41
-f 1049/182/42 1047/181/42 1043/187/42
-f 1050/186/42 1052/185/42 1044/188/42
-f 1047/181/42 1046/180/42 1045/189/42
-f 1048/183/42 1044/188/42 1045/189/42
-f 919/190/43 925/191/43 1059/192/43
-f 1060/193/43 926/194/43 920/195/43
-f 1061/196/44 947/197/44 880/198/44
-f 1062/199/44 1056/200/44 881/201/44
-f 1059/202/10 925/203/10 947/197/10
-f 1060/204/11 1062/199/11 948/205/11
-f 959/94/45 989/93/45 1065/206/45
-f 1066/207/46 990/208/46 960/96/46
-f 1065/206/47 989/93/47 991/92/47
-f 1066/207/47 1067/209/47 991/92/47
-f 1053/210/48 867/211/48 1004/212/48
-f 1054/213/48 1069/214/48 1005/215/48
-f 1068/216/49 1004/217/49 959/94/49
-f 1069/218/50 1064/219/50 960/96/50
-f 1070/220/10 1072/221/10 1036/222/10
-f 1037/223/11 1073/224/11 1071/225/11
-f 1083/226/3 1079/227/3 1077/228/3
-f 1080/229/3 1083/226/3 1074/230/3
-f 1079/227/3 1081/231/3 1075/232/3
-f 1080/229/3 1078/233/3 1076/234/3
-f 1081/231/51 1084/235/51 1072/221/51
-f 1082/236/52 1076/234/52 1073/224/52
-f 1072/221/10 1084/235/10 1098/237/10
-f 1099/238/11 1085/239/11 1073/224/11
-f 1081/231/53 1086/240/53 1098/237/53
-f 1082/236/54 1085/239/54 1099/238/54
-f 1094/241/43 1086/240/43 1081/231/43
-f 1082/236/43 1087/242/43 1095/243/43
-f 1093/244/43 1094/241/43 1079/227/43
-f 1080/229/43 1095/243/43 1093/244/43
-f 1088/245/55 1108/246/55 1100/247/55
-f 1101/248/56 1109/249/56 1089/250/56
-f 1106/251/57 1108/246/57 1088/245/57
-f 1107/252/57 1091/253/57 1089/250/57
-f 1105/254/57 1106/251/57 1090/255/57
-f 1105/254/57 1092/256/57 1091/253/57
-f 1096/257/58 1100/247/58 1113/258/58
-f 1114/259/59 1101/248/59 1097/260/59
-f 1038/261/60 1113/258/60 1115/262/60
-f 1116/263/61 1114/259/61 1039/264/61
-f 1016/153/62 1123/265/62 1133/266/62
-f 1134/267/62 1124/268/62 1017/154/62
-f 900/149/63 1162/269/63 1123/270/63
-f 1124/271/62 1163/272/62 901/152/62
-f 971/63/62 1133/266/62 1161/273/62
-f 1161/273/63 1134/267/63 972/65/63
-f 1147/274/64 1137/275/64 949/276/64
-f 1148/277/65 924/278/65 950/279/65
-f 949/276/66 1137/275/66 1166/280/66
-f 1167/281/66 1138/282/66 950/279/66
-f 1153/283/67 1147/284/67 923/285/67
-f 1154/286/67 922/287/67 924/288/67
-f 1164/289/68 1159/290/68 903/291/68
-f 1165/292/69 896/293/69 904/294/69
-f 876/295/70 1168/296/70 1164/289/70
-f 1165/292/71 1169/297/71 877/298/71
-f 878/299/72 1166/280/72 1168/296/72
-f 1169/297/73 1167/281/73 879/300/73
-f 1149/301/74 1147/284/74 1153/283/74
-f 1150/302/74 1152/303/74 1154/286/74
-f 1141/304/75 1143/305/75 1155/306/75
-f 1142/307/75 1160/308/75 1156/309/75
-f 1139/310/76 1141/311/76 1159/290/76
-f 1140/312/76 1165/292/76 1160/313/76
-f 1135/314/77 1139/310/77 1164/289/77
-f 1136/315/77 1169/297/77 1165/292/77
-f 1137/275/78 1135/314/78 1168/296/78
-f 1138/282/78 1167/281/78 1169/297/78
-f 1145/316/10 1143/317/10 1141/311/10
-f 1146/318/11 1140/312/11 1142/319/11
-f 1149/320/10 1145/316/10 1139/310/10
-f 1150/321/11 1136/315/11 1140/312/11
-f 1137/275/10 1147/274/10 1149/320/10
-f 1150/321/11 1148/277/11 1138/282/11
-f 1131/322/75 1129/323/75 1157/324/75
-f 1130/325/75 1132/326/75 1158/327/75
-f 1159/328/75 1155/306/75 1119/329/75
-f 1120/330/75 1156/309/75 1160/308/75
-f 1119/331/75 1129/323/75 1131/322/75
-f 1120/332/75 1122/333/75 1132/326/75
-f 1127/334/79 1125/335/79 1115/336/79
-f 1128/337/79 1118/338/79 1116/339/79
-f 1115/336/80 1125/335/80 1111/340/80
-f 1112/341/80 1126/342/80 1116/339/80
-f 1102/343/81 1104/344/81 1110/345/81
-f 1103/346/81 1112/347/81 1110/345/81
-f 1100/247/81 1102/343/81 1111/348/81
-f 1101/248/81 1114/259/81 1112/347/81
-f 1102/343/82 1106/251/82 1105/254/82
-f 1105/254/82 1107/252/82 1103/346/82
-f 1100/247/82 1108/246/82 1106/251/82
-f 1107/252/82 1109/249/82 1101/248/82
-f 1117/349/83 1181/350/83 1175/351/83
-f 1118/338/83 1128/337/83 1176/352/83
-f 1119/353/84 1179/354/84 1173/355/84
-f 1174/356/84 1180/357/84 1120/358/84
-f 1173/355/84 1170/359/84 1157/360/84
-f 1170/359/84 1174/356/84 1130/361/84
-f 1171/362/85 1177/363/85 1175/364/85
-f 1171/362/85 1172/365/85 1176/366/85
-f 1170/359/86 1173/355/86 1177/363/86
-f 1170/359/86 1171/362/86 1178/367/86
-f 1177/363/85 1183/368/85 1181/369/85
-f 1178/367/85 1176/366/85 1182/370/85
-f 1173/355/86 1179/354/86 1183/368/86
-f 1174/356/86 1178/367/86 1184/371/86
-f 1181/372/87 1117/373/87 1115/374/87
-f 1182/375/88 1114/376/88 1116/377/88
-f 1175/364/89 1181/372/89 1113/378/89
-f 1176/366/89 1112/347/89 1114/376/89
-f 1172/365/89 1175/364/89 1111/348/89
-f 1172/365/89 1110/345/89 1112/347/89
-f 873/379/10 871/380/10 1187/381/10
-f 1188/382/11 872/383/11 874/384/11
-f 1185/385/10 1187/381/10 878/299/10
-f 879/300/11 1188/382/11 1186/386/11
-f 865/387/10 860/388/10 1193/389/10
-f 1194/390/11 861/391/11 866/392/11
-f 1191/393/10 1193/389/10 884/29/10
-f 885/31/11 1194/390/11 1192/394/11
-f 857/395/10 1198/396/10 1196/397/10
-f 858/398/11 863/399/11 1197/400/11
-f 1196/397/10 1198/396/10 889/401/10
-f 890/35/11 1199/402/11 1197/400/11
-f 891/403/10 862/404/10 1196/397/10
-f 1197/400/11 863/399/11 892/405/11
-f 1200/406/10 1196/397/10 887/33/10
-f 888/26/11 1197/400/11 1201/407/11
-f 860/388/10 891/403/10 1200/406/10
-f 1201/407/11 892/405/11 861/391/11
-f 1193/389/10 1200/406/10 893/24/10
-f 894/27/11 1201/407/11 1194/390/11
-f 876/295/10 895/408/10 1202/409/10
-f 1203/410/11 896/293/11 877/298/11
-f 1185/385/10 1202/409/10 898/411/10
-f 899/412/11 1203/410/11 1186/386/11
-f 895/408/10 903/291/10 1204/413/10
-f 1205/414/11 904/294/11 896/293/11
-f 1202/409/10 1204/413/10 900/415/10
-f 901/416/11 1205/414/11 1203/410/11
-f 859/52/90 1195/417/90 1206/418/90
-f 859/52/90 952/54/90 1207/419/90
-f 1206/418/90 1195/417/90 886/69/90
-f 1195/417/90 1207/419/90 966/70/90
-f 951/420/91 1206/418/91 1208/421/91
-f 952/54/92 997/111/92 1209/422/92
-f 1206/418/91 965/68/91 1010/156/91
-f 1207/419/92 1209/422/92 1011/157/92
-f 996/423/90 1208/424/90 1198/425/90
-f 997/107/90 858/106/90 1199/426/90
-f 1208/424/90 1010/427/90 889/14/90
-f 1209/428/90 1199/426/90 890/16/90
-f 867/429/10 1053/430/10 1210/431/10
-f 1211/432/11 1054/433/11 868/434/11
-f 1210/431/10 1055/435/10 880/198/10
-f 1211/432/11 1190/436/11 881/201/11
-f 1159/290/93 1212/437/93 1204/413/93
-f 1160/313/94 904/294/94 1205/414/94
-f 1212/437/95 1162/438/95 900/415/95
-f 1213/439/96 1205/414/96 901/416/96
-f 1161/273/97 1133/266/97 1215/440/97
-f 1216/441/97 1134/267/97 1161/273/97
-f 1215/440/98 1131/322/98 1158/327/98
-f 1216/441/98 1214/442/98 1158/327/98
-f 1123/270/97 1162/269/97 1212/443/97
-f 1213/444/97 1163/272/97 1124/271/97
-f 1212/443/98 1159/328/98 1121/445/98
-f 1160/308/98 1213/444/98 1218/446/98
-f 1133/266/97 1123/265/97 1217/447/97
-f 1218/448/97 1124/268/97 1134/267/97
-f 1217/447/98 1121/449/98 1131/322/98
-f 1218/448/98 1216/441/98 1132/326/98
-f 1221/450/99 1183/368/99 1179/354/99
-f 1222/451/100 1120/358/100 1180/357/100
-f 1117/452/101 1181/369/101 1183/368/101
-f 1184/371/102 1182/370/102 1118/453/102
-f 1143/305/103 1145/454/103 1219/455/103
-f 1220/456/104 1146/457/104 1144/458/104
-f 1151/459/105 1219/455/105 1145/454/105
-f 1152/303/85 1150/302/85 1146/457/85
-f 923/285/106 1230/460/106 1228/461/106
-f 924/288/106 922/287/106 1229/462/106
-f 1230/460/107 925/191/107 919/190/107
-f 1231/460/107 1229/462/107 920/195/107
-f 947/197/108 1232/463/108 1226/464/108
-f 948/205/108 881/201/108 1227/465/108
-f 1232/463/109 949/276/109 878/299/109
-f 1233/466/109 1227/465/109 879/300/109
-f 925/203/10 1230/467/10 1232/463/10
-f 926/468/11 948/205/11 1233/466/11
-f 1230/467/10 923/469/10 949/276/10
-f 1231/470/11 1233/466/11 950/279/11
-f 959/471/110 1234/472/110 1223/473/110
-f 960/474/110 869/475/110 1223/473/110
-f 1223/473/111 1234/472/111 961/129/111
-f 1235/476/111 1223/473/111 870/57/111
-f 867/211/112 1224/477/112 1236/478/112
-f 868/479/112 1005/215/112 1237/480/112
-f 1224/477/111 871/481/111 1006/124/111
-f 1225/482/111 1237/480/111 1007/127/111
-f 1004/483/112 1236/484/112 1234/472/112
-f 1005/485/113 960/474/113 1235/476/113
-f 1236/484/111 1006/486/111 961/129/111
-f 1237/487/111 1235/476/111 962/59/111
-f 1240/488/10 1038/261/10 1020/489/10
-f 1241/490/11 1239/491/11 1021/492/11
-f 1036/222/10 1098/237/10 1242/493/10
-f 1243/494/11 1099/238/11 1037/223/11
-f 1242/493/10 1096/257/10 1038/261/10
-f 1243/494/11 1241/490/11 1039/264/11
-f 1098/237/114 1086/240/114 1245/495/114
-f 1246/496/115 1087/242/115 1099/238/115
-f 1242/493/114 1245/495/114 1088/245/114
-f 1089/250/115 1246/496/115 1243/494/115
-f 1088/245/116 1245/495/116 1247/497/116
-f 1089/250/116 1091/253/116 1248/498/116
-f 1245/495/116 1086/240/116 1094/241/116
-f 1246/496/116 1248/498/116 1095/243/116
-f 1090/255/116 1247/497/116 1244/499/116
-f 1091/253/116 1092/256/116 1244/499/116
-f 871/380/10 1224/500/10 1249/501/10
-f 872/383/11 1188/382/11 1250/502/11
-f 1224/500/10 867/429/10 1189/503/10
-f 1225/504/11 1250/502/11 1190/436/11
-f 1187/381/10 1249/501/10 1226/464/10
-f 1188/382/11 879/300/11 1227/465/11
-f 1249/501/10 1189/503/10 880/198/10
-f 1250/502/11 1227/465/11 881/201/11
-f 1057/505/117 1059/192/117 1257/506/117
-f 1060/193/117 1058/507/117 1256/508/117
-f 1257/506/117 927/1/117 917/509/117
-f 1258/510/117 1256/508/117 918/6/117
-f 945/36/118 1259/511/118 1253/512/118
-f 946/513/118 883/39/118 1254/514/118
-f 1259/511/118 1061/196/118 1055/435/118
-f 1260/515/118 1254/514/118 1056/200/118
-f 927/48/10 1257/516/10 1259/511/10
-f 928/49/11 946/513/11 1260/515/11
-f 1257/516/10 1059/202/10 1061/196/10
-f 1258/517/11 1260/515/11 1062/199/11
-f 1063/518/119 1065/206/119 1263/519/119
-f 1264/520/120 1066/207/120 1064/219/120
-f 1261/521/121 1263/519/121 987/88/121
-f 988/90/122 1264/520/122 1262/522/122
-f 987/88/123 1263/519/123 1265/523/123
-f 988/90/123 995/101/123 1265/523/123
-f 1263/519/124 1065/206/124 1067/209/124
-f 1264/520/124 1265/523/124 1067/209/124
-f 865/112/125 1251/524/125 1266/525/125
-f 866/115/125 1003/526/125 1267/527/125
-f 1251/524/126 1053/210/126 1068/528/126
-f 1252/529/126 1267/527/126 1069/214/126
-f 1002/118/125 1266/530/125 1261/521/125
-f 1003/120/125 958/91/125 1262/522/125
-f 1266/530/126 1068/216/126 1063/518/126
-f 1267/531/126 1262/522/126 1064/219/126
-f 1051/184/127 1273/532/127 1270/533/127
-f 1052/185/128 1033/171/128 1271/534/128
-f 1273/532/127 1075/232/127 1072/221/127
-f 1274/535/128 1271/534/128 1073/224/128
-f 1075/232/117 1273/532/117 1275/536/117
-f 1076/234/117 1078/233/117 1276/537/117
-f 1273/532/117 1051/184/117 1043/187/117
-f 1274/535/117 1276/537/117 1044/188/117
-f 1077/228/117 1275/536/117 1272/538/117
-f 1078/233/117 1074/230/117 1272/538/117
-f 1275/536/117 1043/187/117 1045/189/117
-f 1276/537/117 1272/538/117 1045/189/117
-f 1053/430/10 1251/539/10 1277/540/10
-f 1054/433/11 1211/432/11 1278/541/11
-f 1251/539/10 865/387/10 1191/393/10
-f 1252/542/11 1278/541/11 1192/394/11
-f 1055/435/10 1210/431/10 1277/540/10
-f 1278/541/11 1211/432/11 1056/200/11
-f 1277/540/10 1191/393/10 882/37/10
-f 1278/541/11 1254/514/11 883/39/11
-f 1268/543/129 1281/544/129 1279/545/129
-f 1280/546/130 1282/547/130 1269/548/130
-f 1279/545/131 1283/549/131 1032/170/131
-f 1280/546/132 1271/534/132 1033/171/132
-f 1285/550/133 1281/544/133 1268/543/133
-f 1286/551/134 1025/552/134 1269/548/134
-f 1032/170/135 1283/549/135 1285/550/135
-f 1286/551/136 1284/553/136 1033/171/136
-f 1283/549/10 1279/545/10 1281/544/10
-f 1284/553/11 1286/551/11 1282/547/11
-f 1270/533/137 1287/554/137 1289/555/137
-f 1290/556/138 1288/557/138 1271/534/138
-f 1291/558/139 1287/554/139 1270/533/139
-f 1292/559/140 1073/224/140 1271/534/140
-f 1289/555/141 1293/560/141 1070/220/141
-f 1290/556/142 1269/548/142 1071/225/142
-f 1070/220/143 1293/560/143 1291/558/143
-f 1292/559/144 1294/561/144 1071/225/144
-f 1287/554/10 1291/558/10 1293/560/10
-f 1288/557/11 1290/556/11 1294/561/11
-f 1297/562/145 1295/563/145 1240/488/145
-f 1298/564/146 1239/491/146 1241/490/146
-f 1240/488/147 1295/563/147 1299/565/147
-f 1300/566/148 1296/567/148 1241/490/148
-f 1301/568/149 1297/562/149 1238/569/149
-f 1302/570/150 1023/571/150 1239/491/150
-f 1299/565/151 1301/568/151 1022/572/151
-f 1300/566/152 1037/223/152 1023/571/152
-f 1301/568/10 1299/565/10 1295/563/10
-f 1296/567/11 1300/566/11 1302/570/11
-f 1247/497/153 1303/573/153 1305/574/153
-f 1305/575/153 1304/576/153 1248/498/153
-f 1094/241/154 1306/577/154 1303/573/154
-f 1304/576/155 1307/578/155 1095/243/155
-f 1305/579/11 1308/580/11 1093/581/11
-f 1308/582/156 1306/577/156 1094/241/156
-f 1308/583/156 1093/244/156 1095/243/156
-f 1305/574/116 1303/573/116 1306/577/116
-f 1307/578/116 1304/576/116 1305/575/116
-f 1070/584/157 1309/585/157 1311/586/157
-f 1312/587/158 1310/588/158 1071/589/158
-f 1311/586/159 1313/590/159 1024/591/159
-f 1312/587/160 1269/592/160 1025/593/160
-f 1317/594/158 1315/595/158 1057/505/158
-f 1318/596/161 1256/508/161 1058/507/161
-f 917/509/162 1319/597/162 1317/594/162
-f 1318/596/159 1320/598/159 918/6/159
-f 1238/599/163 1323/600/163 1321/601/163
-f 1322/602/164 1324/603/164 1239/604/164
-f 1020/605/165 1325/606/165 1323/600/165
-f 1324/603/166 1326/607/166 1021/608/166
-f 1329/609/166 1327/610/166 921/611/166
-f 1330/612/167 1229/462/167 922/287/167
-f 1331/613/164 1329/609/164 1228/461/164
-f 1332/614/168 920/195/168 1229/462/168
-f 1022/615/169 1321/601/169 1309/585/169
-f 1310/588/170 1322/602/170 1023/616/170
-f 1315/595/171 1331/613/171 919/190/171
-f 1316/617/172 1058/507/172 920/195/172
-f 1333/618/173 1335/619/173 1030/620/173
-f 1334/621/174 1027/622/174 1031/623/174
-f 1313/590/175 1333/618/175 1026/624/175
-f 1314/625/176 1025/593/176 1027/622/176
-f 1030/620/177 1335/619/177 1337/626/177
-f 1336/627/177 1031/623/177 906/19/177
-f 1327/610/178 1325/606/178 1020/605/178
-f 1328/628/178 922/287/178 1021/608/178
-f 915/3/179 1339/629/179 1319/597/179
-f 1320/598/175 1340/630/175 916/18/175
-f 905/631/180 1337/626/180 1339/629/180
-f 1340/630/173 1338/632/173 906/19/173
-f 1317/594/181 1319/597/181 1313/590/181
-f 1318/596/181 1312/587/181 1314/625/181
-f 1315/595/181 1317/594/181 1311/586/181
-f 1316/617/181 1310/588/181 1312/587/181
-f 1323/600/117 1329/609/117 1331/613/117
-f 1332/614/117 1330/612/117 1324/603/117
-f 1327/610/182 1329/609/182 1323/600/182
-f 1328/628/182 1326/607/182 1324/603/182
-f 1321/601/183 1331/613/183 1315/595/183
-f 1316/617/183 1332/614/183 1322/602/183
-f 1335/619/184 1333/618/184 1339/629/184
-f 1340/630/184 1334/621/184 1336/627/184
-f 1319/597/185 1339/629/185 1333/618/185
-f 1334/621/185 1340/630/185 1320/598/185
-f 917/509/1 927/1/1 915/3/1
-f 916/18/1 930/4/1 918/6/1
-f 910/20/2 931/7/2 908/9/2
-f 934/15/2 932/10/2 909/12/2
-f 908/9/3 933/8/3 889/14/3
-f 940/633/3 934/15/3 890/16/3
-f 905/631/4 915/3/4 935/17/4
-f 936/21/4 930/4/4 906/19/4
-f 905/631/5 935/17/5 910/20/5
-f 932/10/5 936/21/5 911/11/5
-f 887/33/6 941/22/6 893/24/6
-f 938/30/6 942/25/6 894/27/6
-f 893/24/7 937/23/7 884/29/7
-f 944/38/7 938/30/7 885/31/7
-f 889/401/8 939/32/8 887/33/8
-f 942/25/8 940/34/8 888/26/8
-f 884/29/9 943/28/9 882/37/9
-f 946/513/9 944/38/9 883/39/9
-f 937/23/10 941/22/10 935/41/10
-f 938/30/11 936/42/11 942/25/11
-f 943/28/10 937/23/10 929/44/10
-f 944/38/11 930/45/11 938/30/11
-f 941/22/10 939/32/10 931/40/10
-f 942/25/11 932/43/11 940/34/11
-f 945/36/10 943/28/10 927/48/10
-f 946/513/11 928/49/11 944/38/11
-f 951/420/13 955/50/13 859/52/13
-f 864/51/186 956/53/186 859/52/186
-f 961/129/14 963/55/14 870/57/14
-f 875/56/14 964/58/14 870/57/14
-f 963/55/15 969/60/15 875/56/15
-f 897/61/15 970/62/15 875/56/15
-f 969/60/16 971/63/16 897/61/16
-f 902/64/16 972/65/16 897/61/16
-f 886/69/3 912/66/3 965/68/3
-f 974/73/3 912/66/3 966/70/3
-f 912/66/2 913/71/2 973/67/2
-f 978/79/2 913/71/2 974/73/2
-f 907/77/4 914/74/4 979/76/4
-f 976/165/4 914/74/4 980/78/4
-f 913/71/17 907/77/17 977/72/17
-f 980/78/17 907/77/17 978/79/17
-f 967/85/187 983/80/187 955/50/187
-f 982/98/188 984/82/188 956/53/188
-f 953/89/189 985/84/189 967/85/189
-f 984/82/190 986/86/190 968/83/190
-f 957/119/191 987/88/191 953/89/191
-f 986/86/192 988/90/192 954/87/192
-f 869/95/24 991/92/24 959/94/24
-f 990/208/24 991/92/24 960/96/24
-f 864/634/193 955/50/193 992/97/193
-f 864/634/194 992/97/194 956/53/194
-f 981/81/26 983/80/26 992/97/26
-f 993/99/26 984/82/26 992/97/26
-f 983/80/26 985/84/26 993/99/26
-f 994/100/26 986/86/26 993/99/26
-f 985/84/26 987/88/26 994/100/26
-f 995/101/26 988/90/26 994/100/26
-f 996/423/27 857/102/27 1000/104/27
-f 1001/141/27 863/105/27 997/107/27
-f 951/420/195 996/108/195 955/50/195
-f 952/54/196 956/53/196 997/111/196
-f 860/635/30 865/112/30 998/114/30
-f 1003/526/30 866/115/30 999/117/30
-f 998/138/30 1002/118/30 953/89/30
-f 958/91/30 1003/120/30 954/87/30
-f 871/481/14 873/122/14 1006/124/14
-f 1009/146/14 874/125/14 1007/127/14
-f 1006/486/14 1008/128/14 961/129/14
-f 964/58/14 1009/130/14 962/59/14
-f 891/140/31 860/132/31 1012/134/31
-f 999/636/31 861/135/31 1013/137/31
-f 1012/142/31 998/138/31 967/85/31
-f 954/87/31 999/121/31 968/83/31
-f 862/103/32 891/140/32 1000/104/32
-f 1013/137/32 892/136/32 1001/141/32
-f 955/50/32 1000/109/32 967/85/32
-f 956/53/197 968/83/197 1001/110/197
-f 873/122/15 898/143/15 1008/123/15
-f 1015/637/15 899/145/15 1009/146/15
-f 1008/128/15 1014/147/15 963/55/15
-f 970/62/15 1015/148/15 964/58/15
-f 1014/144/16 898/143/16 1016/150/16
-f 1015/637/16 1017/151/16 899/145/16
-f 1014/147/16 1016/153/16 969/60/16
-f 970/62/16 972/65/16 1015/148/16
-f 965/68/33 973/67/33 1010/156/33
-f 1019/162/34 974/73/34 1011/157/34
-f 1010/427/3 1018/158/3 889/14/3
-f 909/12/3 1019/159/3 890/16/3
-f 973/67/35 977/72/35 1018/155/35
-f 1029/167/36 978/79/36 1019/162/36
-f 979/76/4 975/75/4 1030/164/4
-f 1027/638/4 976/165/4 1031/166/4
-f 977/72/198 979/76/198 1028/161/198
-f 1031/166/5 980/78/5 1029/167/5
-f 1024/639/10 1026/168/10 1032/170/10
-f 1025/552/11 1033/171/11 1027/173/11
-f 975/178/38 1040/174/38 1026/168/38
-f 1035/172/38 1041/175/38 1027/173/38
-f 914/179/38 1042/177/38 975/178/38
-f 1041/175/38 1042/177/38 976/176/38
-f 1042/177/39 1046/180/39 1040/174/39
-f 1048/183/39 1046/180/39 1041/175/39
-f 1040/174/39 1047/181/39 1034/169/39
-f 1050/186/39 1048/183/39 1035/172/39
-f 1032/170/40 1034/169/40 1051/184/40
-f 1033/171/41 1052/185/41 1035/172/41
-f 1051/184/42 1049/182/42 1043/187/42
-f 1048/183/42 1050/186/42 1044/188/42
-f 1043/187/42 1047/181/42 1045/189/42
-f 1046/180/42 1048/183/42 1045/189/42
-f 1057/505/43 919/190/43 1059/192/43
-f 1058/507/43 1060/193/43 920/195/43
-f 1055/435/44 1061/196/44 880/198/44
-f 948/205/44 1062/199/44 881/201/44
-f 1061/196/10 1059/202/10 947/197/10
-f 926/468/11 1060/204/11 948/205/11
-f 1063/518/199 959/94/199 1065/206/199
-f 1064/219/200 1066/207/200 960/96/200
-f 1067/209/47 1065/206/47 991/92/47
-f 990/208/47 1066/207/47 991/92/47
-f 1068/528/48 1053/210/48 1004/212/48
-f 868/479/48 1054/213/48 1005/215/48
-f 1063/518/50 1068/216/50 959/94/50
-f 1005/640/201 1069/218/201 960/96/201
-f 1022/572/10 1070/220/10 1036/222/10
-f 1023/571/11 1037/223/11 1071/225/11
-f 1074/230/3 1083/226/3 1077/228/3
-f 1078/233/3 1080/229/3 1074/230/3
-f 1077/228/3 1079/227/3 1075/232/3
-f 1082/236/3 1080/229/3 1076/234/3
-f 1075/232/51 1081/231/51 1072/221/51
-f 1085/239/52 1082/236/52 1073/224/52
-f 1036/222/10 1072/221/10 1098/237/10
-f 1037/223/11 1099/238/11 1073/224/11
-f 1084/235/53 1081/231/53 1098/237/53
-f 1087/242/54 1082/236/54 1099/238/54
-f 1079/227/43 1094/241/43 1081/231/43
-f 1080/229/43 1082/236/43 1095/243/43
-f 1083/226/43 1093/244/43 1079/227/43
-f 1083/226/43 1080/229/43 1093/244/43
-f 1096/257/202 1088/245/202 1100/247/202
-f 1097/260/203 1101/248/203 1089/250/203
-f 1090/255/57 1106/251/57 1088/245/57
-f 1109/249/57 1107/252/57 1089/250/57
-f 1092/256/57 1105/254/57 1090/255/57
-f 1107/252/57 1105/254/57 1091/253/57
-f 1038/261/204 1096/257/204 1113/258/204
-f 1039/264/205 1114/259/205 1097/260/205
-f 1020/489/206 1038/261/206 1115/262/206
-f 1021/492/207 1116/263/207 1039/264/207
-f 971/63/63 1016/153/63 1133/266/63
-f 972/65/63 1134/267/63 1017/154/63
-f 1016/150/63 900/149/63 1123/270/63
-f 1017/151/63 1124/271/63 901/152/63
-f 902/64/63 971/63/63 1161/273/63
-f 902/64/62 1161/273/62 972/65/62
-f 923/469/208 1147/274/208 949/276/208
-f 1138/282/209 1148/277/209 950/279/209
-f 878/299/66 949/276/66 1166/280/66
-f 879/300/66 1167/281/66 950/279/66
-f 921/611/67 1153/283/67 923/285/67
-f 1148/641/67 1154/286/67 924/288/67
-f 895/408/210 1164/289/210 903/291/210
-f 1160/313/211 1165/292/211 904/294/211
-f 895/408/212 876/295/212 1164/289/212
-f 896/293/213 1165/292/213 877/298/213
-f 876/295/214 878/299/214 1168/296/214
-f 877/298/215 1169/297/215 879/300/215
-f 1151/459/74 1149/301/74 1153/283/74
-f 1148/641/74 1150/302/74 1154/286/74
-f 1159/328/75 1141/304/75 1155/306/75
-f 1144/458/75 1142/307/75 1156/309/75
-f 1164/289/76 1139/310/76 1159/290/76
-f 1142/319/76 1140/312/76 1160/313/76
-f 1168/296/77 1135/314/77 1164/289/77
-f 1140/312/77 1136/315/77 1165/292/77
-f 1166/280/78 1137/275/78 1168/296/78
-f 1136/315/78 1138/282/78 1169/297/78
-f 1139/310/10 1145/316/10 1141/311/10
-f 1144/642/11 1146/318/11 1142/319/11
-f 1135/314/10 1149/320/10 1139/310/10
-f 1146/318/11 1150/321/11 1140/312/11
-f 1135/314/10 1137/275/10 1149/320/10
-f 1136/315/11 1150/321/11 1138/282/11
-f 1158/327/75 1131/322/75 1157/324/75
-f 1157/324/75 1130/325/75 1158/327/75
-f 1121/445/75 1159/328/75 1119/329/75
-f 1122/643/75 1120/330/75 1160/308/75
-f 1121/449/75 1119/331/75 1131/322/75
-f 1130/325/75 1120/332/75 1132/326/75
-f 1117/349/79 1127/334/79 1115/336/79
-f 1126/342/79 1128/337/79 1116/339/79
-f 1113/644/80 1115/336/80 1111/340/80
-f 1114/645/80 1112/341/80 1116/339/80
-f 1111/348/81 1102/343/81 1110/345/81
-f 1104/344/81 1103/346/81 1110/345/81
-f 1113/258/81 1100/247/81 1111/348/81
-f 1103/346/81 1101/248/81 1112/347/81
-f 1104/344/82 1102/343/82 1105/254/82
-f 1104/344/82 1105/254/82 1103/346/82
-f 1102/343/82 1100/247/82 1106/251/82
-f 1103/346/82 1107/252/82 1101/248/82
-f 1127/334/83 1117/349/83 1175/351/83
-f 1182/646/83 1118/338/83 1176/352/83
-f 1129/647/84 1119/353/84 1173/355/84
-f 1130/361/84 1174/356/84 1120/358/84
-f 1129/647/84 1173/355/84 1157/360/84
-f 1157/360/84 1170/359/84 1130/361/84
-f 1172/365/85 1171/362/85 1175/364/85
-f 1178/367/85 1171/362/85 1176/366/85
-f 1171/362/86 1170/359/86 1177/363/86
-f 1174/356/86 1170/359/86 1178/367/86
-f 1175/364/85 1177/363/85 1181/369/85
-f 1184/371/85 1178/367/85 1182/370/85
-f 1177/363/86 1173/355/86 1183/368/86
-f 1180/357/86 1174/356/86 1184/371/86
-f 1113/378/216 1181/372/216 1115/374/216
-f 1118/648/217 1182/375/217 1116/377/217
-f 1111/348/89 1175/364/89 1113/378/89
-f 1182/375/89 1176/366/89 1114/376/89
-f 1110/345/89 1172/365/89 1111/348/89
-f 1176/366/89 1172/365/89 1112/347/89
-f 1185/385/10 873/379/10 1187/381/10
-f 1186/386/11 1188/382/11 874/384/11
-f 876/295/10 1185/385/10 878/299/10
-f 877/298/11 879/300/11 1186/386/11
-f 1191/393/10 865/387/10 1193/389/10
-f 1192/394/11 1194/390/11 866/392/11
-f 882/37/10 1191/393/10 884/29/10
-f 883/39/11 885/31/11 1192/394/11
-f 862/404/10 857/395/10 1196/397/10
-f 1199/402/11 858/398/11 1197/400/11
-f 887/33/10 1196/397/10 889/401/10
-f 888/26/11 890/35/11 1197/400/11
-f 1200/406/10 891/403/10 1196/397/10
-f 1201/407/11 1197/400/11 892/405/11
-f 893/24/10 1200/406/10 887/33/10
-f 894/27/11 888/26/11 1201/407/11
-f 1193/389/10 860/388/10 1200/406/10
-f 1194/390/11 1201/407/11 861/391/11
-f 884/29/10 1193/389/10 893/24/10
-f 885/31/11 894/27/11 1194/390/11
-f 1185/385/10 876/295/10 1202/409/10
-f 1186/386/11 1203/410/11 877/298/11
-f 873/379/10 1185/385/10 898/411/10
-f 874/384/11 899/412/11 1186/386/11
-f 1202/409/10 895/408/10 1204/413/10
-f 1203/410/11 1205/414/11 896/293/11
-f 898/411/10 1202/409/10 900/415/10
-f 899/412/11 901/416/11 1203/410/11
-f 951/420/90 859/52/90 1206/418/90
-f 1195/417/90 859/52/90 1207/419/90
-f 965/68/90 1206/418/90 886/69/90
-f 886/69/90 1195/417/90 966/70/90
-f 996/108/91 951/420/91 1208/421/91
-f 1207/419/92 952/54/92 1209/422/92
-f 1208/421/91 1206/418/91 1010/156/91
-f 966/70/92 1207/419/92 1011/157/92
-f 857/102/90 996/423/90 1198/425/90
-f 1209/428/90 997/107/90 1199/426/90
-f 1198/425/90 1208/424/90 889/14/90
-f 1011/160/90 1209/428/90 890/16/90
-f 1189/503/10 867/429/10 1210/431/10
-f 1190/436/11 1211/432/11 868/434/11
-f 1189/503/10 1210/431/10 880/198/10
-f 1056/200/11 1211/432/11 881/201/11
-f 903/291/218 1159/290/218 1204/413/218
-f 1213/439/219 1160/313/219 1205/414/219
-f 1204/413/220 1212/437/220 900/415/220
-f 1163/649/221 1213/439/221 901/416/221
-f 1214/442/97 1161/273/97 1215/440/97
-f 1214/442/97 1216/441/97 1161/273/97
-f 1214/442/98 1215/440/98 1158/327/98
-f 1132/326/98 1216/441/98 1158/327/98
-f 1217/650/97 1123/270/97 1212/443/97
-f 1218/446/97 1213/444/97 1124/271/97
-f 1217/650/98 1212/443/98 1121/445/98
-f 1122/643/98 1160/308/98 1218/446/98
-f 1215/440/97 1133/266/97 1217/447/97
-f 1216/441/97 1218/448/97 1134/267/97
-f 1215/440/98 1217/447/98 1131/322/98
-f 1122/333/98 1218/448/98 1132/326/98
-f 1119/353/222 1221/450/222 1179/354/222
-f 1184/371/223 1222/451/223 1180/357/223
-f 1221/450/224 1117/452/224 1183/368/224
-f 1222/451/225 1184/371/225 1118/453/225
-f 1155/306/226 1143/305/226 1219/455/226
-f 1156/309/226 1220/456/226 1144/458/226
-f 1149/301/85 1151/459/85 1145/454/85
-f 1220/456/227 1152/303/227 1146/457/227
-f 921/611/106 923/285/106 1228/461/106
-f 1231/460/106 924/288/106 1229/462/106
-f 1228/461/107 1230/460/107 919/190/107
-f 926/194/107 1231/460/107 920/195/107
-f 880/198/108 947/197/108 1226/464/108
-f 1233/466/108 948/205/108 1227/465/108
-f 1226/464/109 1232/463/109 878/299/109
-f 950/279/109 1233/466/109 879/300/109
-f 947/197/10 925/203/10 1232/463/10
-f 1231/470/11 926/468/11 1233/466/11
-f 1232/463/10 1230/467/10 949/276/10
-f 924/278/11 1231/470/11 950/279/11
-f 869/475/110 959/471/110 1223/473/110
-f 1235/476/110 960/474/110 1223/473/110
-f 870/57/111 1223/473/111 961/129/111
-f 962/59/111 1235/476/111 870/57/111
-f 1004/212/112 867/211/112 1236/478/112
-f 1225/482/112 868/479/112 1237/480/112
-f 1236/478/111 1224/477/111 1006/124/111
-f 872/126/111 1225/482/111 1007/127/111
-f 959/471/228 1004/483/228 1234/472/228
-f 1237/487/112 1005/485/112 1235/476/112
-f 1234/472/111 1236/484/111 961/129/111
-f 1007/131/111 1237/487/111 962/59/111
-f 1238/569/10 1240/488/10 1020/489/10
-f 1039/264/11 1241/490/11 1021/492/11
-f 1240/488/10 1036/222/10 1242/493/10
-f 1241/490/11 1243/494/11 1037/223/11
-f 1240/488/10 1242/493/10 1038/261/10
-f 1097/260/11 1243/494/11 1039/264/11
-f 1242/493/114 1098/237/114 1245/495/114
-f 1243/494/115 1246/496/115 1099/238/115
-f 1096/257/114 1242/493/114 1088/245/114
-f 1097/260/115 1089/250/115 1243/494/115
-f 1090/255/116 1088/245/116 1247/497/116
-f 1246/496/116 1089/250/116 1248/498/116
-f 1247/497/116 1245/495/116 1094/241/116
-f 1087/242/116 1246/496/116 1095/243/116
-f 1092/256/116 1090/255/116 1244/499/116
-f 1248/498/116 1091/253/116 1244/499/116
-f 1187/381/10 871/380/10 1249/501/10
-f 1225/504/11 872/383/11 1250/502/11
-f 1249/501/10 1224/500/10 1189/503/10
-f 868/434/11 1225/504/11 1190/436/11
-f 878/299/10 1187/381/10 1226/464/10
-f 1250/502/11 1188/382/11 1227/465/11
-f 1226/464/10 1249/501/10 880/198/10
-f 1190/436/11 1250/502/11 881/201/11
-f 1255/651/117 1057/505/117 1257/506/117
-f 1258/510/117 1060/193/117 1256/508/117
-f 1255/651/117 1257/506/117 917/509/117
-f 928/5/117 1258/510/117 918/6/117
-f 882/37/118 945/36/118 1253/512/118
-f 1260/515/118 946/513/118 1254/514/118
-f 1253/512/118 1259/511/118 1055/435/118
-f 1062/199/118 1260/515/118 1056/200/118
-f 945/36/10 927/48/10 1259/511/10
-f 1258/517/11 928/49/11 1260/515/11
-f 1259/511/10 1257/516/10 1061/196/10
-f 1060/204/11 1258/517/11 1062/199/11
-f 1261/521/229 1063/518/229 1263/519/229
-f 1262/522/230 1264/520/230 1064/219/230
-f 957/119/231 1261/521/231 987/88/231
-f 958/91/232 988/90/232 1262/522/232
-f 995/101/123 987/88/123 1265/523/123
-f 1264/520/123 988/90/123 1265/523/123
-f 1265/523/124 1263/519/124 1067/209/124
-f 1066/207/124 1264/520/124 1067/209/124
-f 1002/113/125 865/112/125 1266/525/125
-f 1252/529/125 866/115/125 1267/527/125
-f 1266/525/126 1251/524/126 1068/528/126
-f 1054/213/126 1252/529/126 1069/214/126
-f 957/119/125 1002/118/125 1261/521/125
-f 1267/531/125 1003/120/125 1262/522/125
-f 1261/521/126 1266/530/126 1063/518/126
-f 1069/218/126 1267/531/126 1064/219/126
-f 1032/170/127 1051/184/127 1270/533/127
-f 1274/535/128 1052/185/128 1271/534/128
-f 1270/533/127 1273/532/127 1072/221/127
-f 1076/234/128 1274/535/128 1073/224/128
-f 1077/228/117 1075/232/117 1275/536/117
-f 1274/535/117 1076/234/117 1276/537/117
-f 1275/536/117 1273/532/117 1043/187/117
-f 1052/185/117 1274/535/117 1044/188/117
-f 1074/230/117 1077/228/117 1272/538/117
-f 1276/537/117 1078/233/117 1272/538/117
-f 1272/538/117 1275/536/117 1045/189/117
-f 1044/188/117 1276/537/117 1045/189/117
-f 1210/431/10 1053/430/10 1277/540/10
-f 1252/542/11 1054/433/11 1278/541/11
-f 1277/540/10 1251/539/10 1191/393/10
-f 866/392/11 1252/542/11 1192/394/11
-f 1253/512/10 1055/435/10 1277/540/10
-f 1254/514/11 1278/541/11 1056/200/11
-f 1253/512/10 1277/540/10 882/37/10
-f 1192/394/11 1278/541/11 883/39/11
-f 1270/533/129 1268/543/129 1279/545/129
-f 1271/534/130 1280/546/130 1269/548/130
-f 1270/533/131 1279/545/131 1032/170/131
-f 1284/553/132 1280/546/132 1033/171/132
-f 1024/639/133 1285/550/133 1268/543/133
-f 1282/547/134 1286/551/134 1269/548/134
-f 1024/639/135 1032/170/135 1285/550/135
-f 1025/552/136 1286/551/136 1033/171/136
-f 1285/550/10 1283/549/10 1281/544/10
-f 1280/546/11 1284/553/11 1282/547/11
-f 1268/543/137 1270/533/137 1289/555/137
-f 1269/548/138 1290/556/138 1271/534/138
-f 1072/221/139 1291/558/139 1270/533/139
-f 1288/557/140 1292/559/140 1271/534/140
-f 1268/543/141 1289/555/141 1070/220/141
-f 1294/561/142 1290/556/142 1071/225/142
-f 1072/221/143 1070/220/143 1291/558/143
-f 1073/224/144 1292/559/144 1071/225/144
-f 1289/555/10 1287/554/10 1293/560/10
-f 1292/559/11 1288/557/11 1294/561/11
-f 1238/569/233 1297/562/233 1240/488/233
-f 1296/567/234 1298/564/234 1241/490/234
-f 1036/222/147 1240/488/147 1299/565/147
-f 1037/223/148 1300/566/148 1241/490/148
-f 1022/572/149 1301/568/149 1238/569/149
-f 1298/564/150 1302/570/150 1239/491/150
-f 1036/222/235 1299/565/235 1022/572/235
-f 1302/570/236 1300/566/236 1023/571/236
-f 1297/562/10 1301/568/10 1295/563/10
-f 1298/564/11 1296/567/11 1302/570/11
-f 1244/499/153 1247/497/153 1305/574/153
-f 1244/499/153 1305/575/153 1248/498/153
-f 1247/497/154 1094/241/154 1303/573/154
-f 1248/498/155 1304/576/155 1095/243/155
-f 1244/652/11 1305/579/11 1093/581/11
-f 1093/244/156 1308/582/156 1094/241/156
-f 1307/578/156 1308/583/156 1095/243/156
-f 1308/582/116 1305/574/116 1306/577/116
-f 1308/583/116 1307/578/116 1305/575/116
-f 1268/653/161 1070/584/161 1311/586/161
-f 1269/592/160 1312/587/160 1071/589/160
-f 1268/653/161 1311/586/161 1024/591/161
-f 1314/625/162 1312/587/162 1025/593/162
-f 1255/651/160 1317/594/160 1057/505/160
-f 1316/617/157 1318/596/157 1058/507/157
-f 1255/651/160 917/509/160 1317/594/160
-f 1256/508/161 1318/596/161 918/6/161
-f 1022/615/168 1238/599/168 1321/601/168
-f 1023/616/237 1322/602/237 1239/604/237
-f 1238/599/167 1020/605/167 1323/600/167
-f 1239/604/238 1324/603/238 1021/608/238
-f 1228/461/238 1329/609/238 921/611/238
-f 1328/628/165 1330/612/165 922/287/165
-f 919/190/237 1331/613/237 1228/461/237
-f 1330/612/163 1332/614/163 1229/462/163
-f 1070/584/172 1022/615/172 1309/585/172
-f 1071/589/239 1310/588/239 1023/616/239
-f 1057/505/239 1315/595/239 919/190/239
-f 1332/614/240 1316/617/240 920/195/240
-f 1026/624/241 1333/618/241 1030/620/241
-f 1336/627/180 1334/621/180 1031/623/180
-f 1024/591/242 1313/590/242 1026/624/242
-f 1334/621/179 1314/625/179 1027/622/179
-f 905/631/177 1030/620/177 1337/626/177
-f 1338/632/177 1336/627/177 906/19/177
-f 921/611/178 1327/610/178 1020/605/178
-f 1326/607/178 1328/628/178 1021/608/178
-f 917/509/176 915/3/176 1319/597/176
-f 918/6/242 1320/598/242 916/18/242
-f 915/3/174 905/631/174 1339/629/174
-f 916/18/241 1340/630/241 906/19/241
-f 1311/586/181 1317/594/181 1313/590/181
-f 1320/598/181 1318/596/181 1314/625/181
-f 1309/585/181 1315/595/181 1311/586/181
-f 1318/596/181 1316/617/181 1312/587/181
-f 1321/601/117 1323/600/117 1331/613/117
-f 1322/602/117 1332/614/117 1324/603/117
-f 1325/606/182 1327/610/182 1323/600/182
-f 1330/612/182 1328/628/182 1324/603/182
-f 1309/585/183 1321/601/183 1315/595/183
-f 1310/588/183 1316/617/183 1322/602/183
-f 1337/626/184 1335/619/184 1339/629/184
-f 1338/632/184 1340/630/184 1336/627/184
-f 1313/590/185 1319/597/185 1333/618/185
-f 1314/625/185 1334/621/185 1320/598/185
-s 1
-f 1028/654/243 910/20/243 908/9/2
-f 1029/655/243 1019/159/2 909/12/2
-f 1028/654/243 1030/620/5 905/631/5
-f 906/19/5 1031/623/5 1029/655/243
-f 1115/656/244 1153/283/245 921/611/67
-f 1116/657/244 1021/608/67 922/287/67
-f 1153/283/245 1115/656/244 1117/658/246
-f 1154/286/245 1152/303/246 1118/659/246
-f 1219/455/226 1221/660/226 1119/329/226
-f 1220/456/226 1156/309/226 1120/330/226
-f 1151/459/246 1117/658/246 1221/660/226
-f 1222/661/226 1118/659/246 1152/303/246
-f 1018/158/2 1028/654/243 908/9/2
-f 911/11/243 1029/655/243 909/12/2
-f 910/20/243 1028/654/243 905/631/5
-f 911/11/243 906/19/5 1029/655/243
-f 1020/605/67 1115/656/244 921/611/67
-f 1154/286/245 1116/657/244 922/287/67
-f 1151/459/246 1153/283/245 1117/658/246
-f 1116/657/244 1154/286/245 1118/659/246
-f 1155/306/226 1219/455/226 1119/329/226
-f 1222/661/226 1220/456/226 1120/330/226
-f 1219/455/226 1151/459/246 1221/660/226
-f 1220/456/226 1222/661/226 1152/303/246
-usemtl Tank_TTread.jpg
-s off
-f 217/662/10 169/663/10 171/664/10
-f 219/665/11 195/666/11 193/667/11
-f 217/662/10 171/664/10 173/668/10
-f 219/665/11 197/669/11 195/666/11
-f 217/662/10 173/668/10 175/670/10
-f 219/665/11 199/671/11 197/669/11
-f 217/662/10 175/670/10 177/672/10
-f 219/665/11 201/673/11 199/671/11
-f 217/662/10 177/672/10 179/674/10
-f 219/665/11 203/675/11 201/673/11
-f 217/662/10 179/674/10 181/676/10
-f 219/665/11 205/677/11 203/675/11
-f 217/662/10 181/676/10 183/678/10
-f 219/665/11 207/679/11 205/677/11
-f 217/662/10 183/678/10 185/680/10
-f 219/665/11 209/681/11 207/679/11
-f 217/662/10 185/680/10 187/682/10
-f 219/665/11 211/683/11 209/681/11
-f 217/662/10 187/682/10 189/684/10
-f 219/665/11 213/685/11 211/683/11
-f 217/662/10 189/684/10 191/686/10
-f 219/665/11 215/687/11 213/685/11
-f 217/662/10 191/686/10 169/663/10
-f 219/665/11 193/667/11 215/687/11
-f 193/688/247 195/689/247 171/690/247
-f 195/689/248 197/691/248 173/692/248
-f 197/691/249 199/693/249 175/694/249
-f 199/695/250 201/696/250 177/697/250
-f 201/696/26 203/698/26 179/699/26
-f 203/698/251 205/700/251 181/701/251
-f 205/702/252 207/703/252 183/704/252
-f 207/703/3 209/705/3 185/706/3
-f 209/705/253 211/707/253 187/708/253
-f 211/709/254 213/710/254 189/711/254
-f 213/710/255 215/712/255 191/713/255
-f 215/712/256 193/714/256 169/715/256
-f 330/716/256 354/717/256 376/718/256
-f 332/719/255 356/720/255 354/717/255
-f 334/721/254 358/722/254 356/720/254
-f 336/723/253 360/724/253 358/725/253
-f 338/726/3 362/727/3 360/724/3
-f 340/728/252 364/729/252 362/727/252
-f 342/730/251 366/731/251 364/732/251
-f 344/733/26 368/734/26 366/731/26
-f 346/735/250 370/736/250 368/734/250
-f 348/737/249 372/738/249 370/739/249
-f 350/740/248 374/741/248 372/738/248
-f 352/742/247 376/743/247 374/741/247
-f 330/744/10 352/745/10 326/746/10
-f 376/747/11 354/748/11 328/749/11
-f 332/750/10 330/744/10 326/746/10
-f 354/748/11 356/751/11 328/749/11
-f 334/752/10 332/750/10 326/746/10
-f 356/751/11 358/753/11 328/749/11
-f 336/754/10 334/752/10 326/746/10
-f 358/753/11 360/755/11 328/749/11
-f 338/756/10 336/754/10 326/746/10
-f 360/755/11 362/757/11 328/749/11
-f 340/758/10 338/756/10 326/746/10
-f 362/757/11 364/759/11 328/749/11
-f 342/760/10 340/758/10 326/746/10
-f 364/759/11 366/761/11 328/749/11
-f 344/762/10 342/760/10 326/746/10
-f 366/761/11 368/763/11 328/749/11
-f 346/764/10 344/762/10 326/746/10
-f 368/763/11 370/765/11 328/749/11
-f 348/766/10 346/764/10 326/746/10
-f 370/765/11 372/767/11 328/749/11
-f 350/768/10 348/766/10 326/746/10
-f 372/767/11 374/769/11 328/749/11
-f 352/745/10 350/768/10 326/746/10
-f 374/769/11 376/747/11 328/749/11
-f 485/770/256 507/771/256 531/772/256
-f 487/773/255 485/770/255 509/774/255
-f 489/775/254 487/773/254 511/776/254
-f 491/777/257 489/778/257 513/779/257
-f 493/780/258 491/777/258 515/781/258
-f 495/782/252 493/780/252 517/783/252
-f 497/784/251 495/785/251 519/786/251
-f 499/787/26 497/784/26 521/788/26
-f 501/789/250 499/787/250 523/790/250
-f 503/791/249 501/792/249 525/793/249
-f 505/794/248 503/791/248 527/795/248
-f 507/796/247 505/794/247 529/797/247
-f 481/798/11 507/799/11 485/800/11
-f 483/801/10 509/802/10 531/799/10
-f 481/798/11 485/800/11 487/803/11
-f 483/801/10 511/804/10 509/802/10
-f 481/798/11 487/803/11 489/805/11
-f 483/801/10 513/806/10 511/804/10
-f 481/798/11 489/805/11 491/807/11
-f 483/801/10 515/808/10 513/806/10
-f 481/798/11 491/807/11 493/809/11
-f 483/801/10 517/810/10 515/808/10
-f 481/798/11 493/809/11 495/811/11
-f 483/801/10 519/812/10 517/810/10
-f 481/798/11 495/811/11 497/813/11
-f 483/801/10 521/814/10 519/812/10
-f 481/798/11 497/813/11 499/815/11
-f 483/801/10 523/816/10 521/814/10
-f 481/798/11 499/815/11 501/817/11
-f 483/801/10 525/818/10 523/816/10
-f 481/798/11 501/817/11 503/819/11
-f 483/801/10 527/820/10 525/818/10
-f 481/798/11 503/819/11 505/821/11
-f 483/801/10 529/822/10 527/820/10
-f 481/798/11 505/821/11 507/799/11
-f 483/801/10 531/799/10 529/822/10
-f 561/823/256 573/824/256 584/825/256
-f 562/826/255 574/827/255 573/824/255
-f 563/828/254 575/829/254 574/827/254
-f 564/830/253 576/831/253 575/832/253
-f 565/833/3 577/834/3 576/831/3
-f 566/835/252 578/836/252 577/834/252
-f 567/837/251 579/838/251 578/839/251
-f 568/840/26 580/841/26 579/838/26
-f 569/842/250 581/843/250 580/841/250
-f 570/844/249 582/845/249 581/846/249
-f 571/847/248 583/848/248 582/845/248
-f 572/849/247 584/850/247 583/848/247
-f 561/851/10 572/852/10 559/853/10
-f 584/854/11 573/855/11 560/856/11
-f 562/857/10 561/851/10 559/853/10
-f 573/855/11 574/858/11 560/856/11
-f 563/859/10 562/857/10 559/853/10
-f 574/858/11 575/860/11 560/856/11
-f 564/861/10 563/859/10 559/853/10
-f 575/860/11 576/862/11 560/856/11
-f 565/863/10 564/861/10 559/853/10
-f 576/862/11 577/864/11 560/856/11
-f 566/865/10 565/863/10 559/853/10
-f 577/864/11 578/866/11 560/856/11
-f 567/867/10 566/865/10 559/853/10
-f 578/866/11 579/868/11 560/856/11
-f 568/869/10 567/867/10 559/853/10
-f 579/868/11 580/870/11 560/856/11
-f 569/871/10 568/869/10 559/853/10
-f 580/870/11 581/872/11 560/856/11
-f 570/873/10 569/871/10 559/853/10
-f 581/872/11 582/874/11 560/856/11
-f 571/875/10 570/873/10 559/853/10
-f 582/874/11 583/876/11 560/856/11
-f 572/852/10 571/875/10 559/853/10
-f 583/876/11 584/854/11 560/856/11
-f 586/877/11 585/878/11 609/879/11
-f 597/880/10 598/881/10 610/882/10
-f 587/883/11 586/877/11 609/879/11
-f 598/881/10 599/884/10 610/882/10
-f 588/885/11 587/883/11 609/879/11
-f 599/884/10 600/886/10 610/882/10
-f 589/887/11 588/885/11 609/879/11
-f 600/886/10 601/888/10 610/882/10
-f 590/889/11 589/887/11 609/879/11
-f 601/888/10 602/890/10 610/882/10
-f 591/891/11 590/889/11 609/879/11
-f 602/890/10 603/892/10 610/882/10
-f 592/893/11 591/891/11 609/879/11
-f 603/892/10 604/894/10 610/882/10
-f 593/895/11 592/893/11 609/879/11
-f 604/894/10 605/896/10 610/882/10
-f 594/871/11 593/895/11 609/879/11
-f 605/896/10 606/897/10 610/882/10
-f 595/869/11 594/871/11 609/879/11
-f 606/897/10 607/898/10 610/882/10
-f 596/899/11 595/869/11 609/879/11
-f 607/898/10 608/900/10 610/882/10
-f 585/878/11 596/899/11 609/879/11
-f 608/900/10 597/880/10 610/882/10
-f 597/901/247 585/902/247 586/903/247
-f 598/904/248 586/903/248 587/905/248
-f 599/906/249 587/905/249 588/907/249
-f 600/908/250 588/909/250 589/910/250
-f 601/911/26 589/910/26 590/912/26
-f 602/913/251 590/912/251 591/914/251
-f 603/915/252 591/916/252 592/917/252
-f 604/918/3 592/917/3 593/919/3
-f 606/920/253 605/921/253 593/919/253
-f 606/922/254 594/923/254 595/924/254
-f 607/925/255 595/924/255 596/926/255
-f 597/927/256 608/928/256 596/926/256
-f 613/929/256 625/930/256 636/931/256
-f 614/932/255 626/933/255 625/930/255
-f 615/934/254 627/935/254 626/933/254
-f 616/936/253 628/937/253 627/938/253
-f 617/939/3 629/940/3 628/937/3
-f 618/941/252 630/922/252 629/940/252
-f 619/942/251 631/943/251 630/944/251
-f 620/945/26 632/946/26 631/943/26
-f 621/947/250 633/948/250 632/946/250
-f 622/949/249 634/950/249 633/951/249
-f 623/952/248 635/953/248 634/950/248
-f 624/954/247 636/955/247 635/953/247
-f 613/956/10 624/957/10 611/958/10
-f 636/959/11 625/960/11 612/961/11
-f 614/962/10 613/956/10 611/958/10
-f 625/960/11 626/963/11 612/961/11
-f 615/964/10 614/962/10 611/958/10
-f 626/963/11 627/887/11 612/961/11
-f 616/965/10 615/964/10 611/958/10
-f 627/887/11 628/966/11 612/961/11
-f 617/967/10 616/965/10 611/958/10
-f 628/966/11 629/968/11 612/961/11
-f 618/969/10 617/967/10 611/958/10
-f 629/968/11 630/970/11 612/961/11
-f 619/971/10 618/969/10 611/958/10
-f 630/970/11 631/972/11 612/961/11
-f 620/973/10 619/971/10 611/958/10
-f 631/972/11 632/974/11 612/961/11
-f 621/857/10 620/973/10 611/958/10
-f 632/974/11 633/975/11 612/961/11
-f 622/976/10 621/857/10 611/958/10
-f 633/975/11 634/977/11 612/961/11
-f 623/978/10 622/976/10 611/958/10
-f 634/977/11 635/979/11 612/961/11
-f 624/957/10 623/978/10 611/958/10
-f 635/979/11 636/959/11 612/961/11
-f 638/980/11 637/981/11 661/982/11
-f 649/983/10 650/984/10 662/985/10
-f 639/986/11 638/980/11 661/982/11
-f 650/984/10 651/987/10 662/985/10
-f 640/858/11 639/986/11 661/982/11
-f 651/987/10 652/898/10 662/985/10
-f 641/860/11 640/858/11 661/982/11
-f 652/898/10 653/897/10 662/985/10
-f 642/988/11 641/860/11 661/982/11
-f 653/897/10 654/989/10 662/985/10
-f 643/990/11 642/988/11 661/982/11
-f 654/989/10 655/991/10 662/985/10
-f 644/992/11 643/990/11 661/982/11
-f 655/991/10 656/993/10 662/985/10
-f 645/994/11 644/992/11 661/982/11
-f 656/993/10 657/995/10 662/985/10
-f 646/886/11 645/994/11 661/982/11
-f 657/995/10 658/996/10 662/985/10
-f 647/888/11 646/886/11 661/982/11
-f 658/996/10 659/997/10 662/985/10
-f 648/998/11 647/888/11 661/982/11
-f 659/997/10 660/999/10 662/985/10
-f 637/981/11 648/998/11 661/982/11
-f 660/999/10 649/983/10 662/985/10
-f 649/1000/247 637/1001/247 638/1002/247
-f 650/1003/248 638/1002/248 639/1004/248
-f 651/1005/249 639/1004/249 640/1006/249
-f 652/955/250 640/1007/250 641/1008/250
-f 653/953/26 641/1008/26 642/1009/26
-f 654/950/251 642/1009/251 643/1010/251
-f 655/1011/252 643/934/252 644/1012/252
-f 656/1013/3 644/1012/3 645/1014/3
-f 657/1015/253 645/1014/253 646/1016/253
-f 658/916/254 646/1017/254 647/1018/254
-f 659/1019/255 647/1018/255 648/1020/255
-f 660/1021/256 648/1020/256 637/828/256
-f 664/1022/11 663/1023/11 687/1024/11
-f 675/1025/10 676/1026/10 688/1027/10
-f 665/1028/11 664/1022/11 687/1024/11
-f 676/1026/10 677/1029/10 688/1027/10
-f 666/1030/11 665/1028/11 687/1024/11
-f 677/1029/10 678/997/10 688/1027/10
-f 667/1031/11 666/1030/11 687/1024/11
-f 678/997/10 679/996/10 688/1027/10
-f 668/1032/11 667/1031/11 687/1024/11
-f 679/996/10 680/1033/10 688/1027/10
-f 669/1034/11 668/1032/11 687/1024/11
-f 680/1033/10 681/1035/10 688/1027/10
-f 670/1036/11 669/1034/11 687/1024/11
-f 681/1035/10 682/1037/10 688/1027/10
-f 671/1038/11 670/1036/11 687/1024/11
-f 682/1037/10 683/1039/10 688/1027/10
-f 672/1040/11 671/1038/11 687/1024/11
-f 683/1039/10 684/1041/10 688/1027/10
-f 673/1042/11 672/1040/11 687/1024/11
-f 684/1041/10 685/1043/10 688/1027/10
-f 674/1044/11 673/1042/11 687/1024/11
-f 685/1043/10 686/1045/10 688/1027/10
-f 663/1023/11 674/1044/11 687/1024/11
-f 686/1045/10 675/1025/10 688/1027/10
-f 675/1046/247 663/1047/247 664/1048/247
-f 676/1049/248 664/1048/248 665/1050/248
-f 677/1051/249 665/1050/249 666/1052/249
-f 678/1053/250 666/1054/250 667/1055/250
-f 679/1056/26 667/1055/26 668/1057/26
-f 680/1058/251 668/1057/251 669/920/251
-f 681/1059/252 669/1060/252 670/1061/252
-f 682/1062/3 670/1061/3 671/1063/3
-f 683/1064/253 671/1063/253 672/1065/253
-f 684/1066/254 672/1067/254 673/1068/254
-f 685/1069/255 673/1068/255 674/1070/255
-f 686/1071/256 674/1070/256 663/1072/256
-f 169/1073/247 193/688/247 171/690/247
-f 171/690/248 195/689/248 173/692/248
-f 173/692/249 197/691/249 175/694/249
-f 175/1074/250 199/695/250 177/697/250
-f 177/697/26 201/696/26 179/699/26
-f 179/699/251 203/698/251 181/701/251
-f 181/1075/252 205/702/252 183/704/252
-f 183/704/3 207/703/3 185/706/3
-f 185/706/253 209/705/253 187/708/253
-f 187/1076/254 211/709/254 189/711/254
-f 189/711/255 213/710/255 191/713/255
-f 191/713/256 215/712/256 169/715/256
-f 352/1077/256 330/716/256 376/718/256
-f 330/716/255 332/719/255 354/717/255
-f 332/719/254 334/721/254 356/720/254
-f 334/1078/253 336/723/253 358/725/253
-f 336/723/3 338/726/3 360/724/3
-f 338/726/252 340/728/252 362/727/252
-f 340/1079/251 342/730/251 364/732/251
-f 342/730/26 344/733/26 366/731/26
-f 344/733/250 346/735/250 368/734/250
-f 346/1080/249 348/737/249 370/739/249
-f 348/737/248 350/740/248 372/738/248
-f 350/740/247 352/742/247 374/741/247
-f 509/774/256 485/770/256 531/772/256
-f 511/776/255 487/773/255 509/774/255
-f 513/1081/254 489/775/254 511/776/254
-f 515/781/257 491/777/257 513/779/257
-f 517/783/258 493/780/258 515/781/258
-f 519/1082/252 495/782/252 517/783/252
-f 521/788/251 497/784/251 519/786/251
-f 523/790/26 499/787/26 521/788/26
-f 525/1083/250 501/789/250 523/790/250
-f 527/795/249 503/791/249 525/793/249
-f 529/797/248 505/794/248 527/795/248
-f 531/1084/247 507/796/247 529/797/247
-f 572/1085/256 561/823/256 584/825/256
-f 561/823/255 562/826/255 573/824/255
-f 562/826/254 563/828/254 574/827/254
-f 563/944/253 564/830/253 575/832/253
-f 564/830/3 565/833/3 576/831/3
-f 565/833/252 566/835/252 577/834/252
-f 566/1086/251 567/837/251 578/839/251
-f 567/837/26 568/840/26 579/838/26
-f 568/840/250 569/842/250 580/841/250
-f 569/1087/249 570/844/249 581/846/249
-f 570/844/248 571/847/248 582/845/248
-f 571/847/247 572/849/247 583/848/247
-f 598/904/247 597/901/247 586/903/247
-f 599/906/248 598/904/248 587/905/248
-f 600/1088/249 599/906/249 588/907/249
-f 601/911/250 600/908/250 589/910/250
-f 602/913/26 601/911/26 590/912/26
-f 603/1089/251 602/913/251 591/914/251
-f 604/918/252 603/915/252 592/917/252
-f 605/921/3 604/918/3 593/919/3
-f 594/1090/253 606/920/253 593/919/253
-f 607/925/254 606/922/254 595/924/254
-f 608/928/255 607/925/255 596/926/255
-f 585/1091/256 597/927/256 596/926/256
-f 624/1092/256 613/929/256 636/931/256
-f 613/929/255 614/932/255 625/930/255
-f 614/932/254 615/934/254 626/933/254
-f 615/914/253 616/936/253 627/938/253
-f 616/936/3 617/939/3 628/937/3
-f 617/939/252 618/941/252 629/940/252
-f 618/1093/251 619/942/251 630/944/251
-f 619/942/26 620/945/26 631/943/26
-f 620/945/250 621/947/250 632/946/250
-f 621/1094/249 622/949/249 633/951/249
-f 622/949/248 623/952/248 634/950/248
-f 623/952/247 624/954/247 635/953/247
-f 650/1003/247 649/1000/247 638/1002/247
-f 651/1005/248 650/1003/248 639/1004/248
-f 652/1095/249 651/1005/249 640/1006/249
-f 653/953/250 652/955/250 641/1008/250
-f 654/950/26 653/953/26 642/1009/26
-f 655/951/251 654/950/251 643/1010/251
-f 656/1013/252 655/1011/252 644/1012/252
-f 657/1015/3 656/1013/3 645/1014/3
-f 658/1096/253 657/1015/253 646/1016/253
-f 659/1019/254 658/916/254 647/1018/254
-f 660/1021/255 659/1019/255 648/1020/255
-f 649/1011/256 660/1021/256 637/828/256
-f 676/1049/247 675/1046/247 664/1048/247
-f 677/1051/248 676/1049/248 665/1050/248
-f 678/1097/249 677/1051/249 666/1052/249
-f 679/1056/250 678/1053/250 667/1055/250
-f 680/1058/26 679/1056/26 668/1057/26
-f 681/1098/251 680/1058/251 669/920/251
-f 682/1062/252 681/1059/252 670/1061/252
-f 683/1064/3 682/1062/3 671/1063/3
-f 684/1099/253 683/1064/253 672/1065/253
-f 685/1069/254 684/1066/254 673/1068/254
-f 686/1071/255 685/1069/255 674/1070/255
-f 675/1100/256 686/1071/256 663/1072/256
-usemtl Treads
-f 55/1101/11 41/1102/11 57/1103/11
-f 58/1104/10 42/1105/10 56/1106/10
-f 55/1101/11 59/1107/11 61/1108/11
-f 56/1106/10 54/1109/10 62/1110/10
-f 53/1111/11 61/1108/11 63/1112/11
-f 54/1109/10 44/1113/10 64/1114/10
-f 51/1115/10 45/1116/10 65/1117/10
-f 66/1118/11 46/1119/11 52/1120/11
-f 49/1121/10 51/1115/10 67/1122/10
-f 68/1123/11 52/1120/11 50/1124/11
-f 49/1121/10 69/1125/10 71/1126/10
-f 50/1124/11 48/1127/11 72/1128/11
-f 45/1116/10 35/1129/10 73/1130/10
-f 74/1131/11 36/1132/11 46/1119/11
-f 43/1133/11 63/1112/11 75/1134/11
-f 44/1113/10 38/1135/10 76/1136/10
-f 47/1137/10 71/1126/10 77/1138/10
-f 48/1127/11 34/1139/11 78/1140/11
-f 41/1102/11 39/1141/11 79/1142/11
-f 80/1143/10 40/1144/10 42/1105/10
-f 39/1141/11 25/1145/11 81/1146/11
-f 82/1147/10 26/1148/10 40/1144/10
-f 37/1149/11 75/1134/11 83/1150/11
-f 38/1135/10 28/1151/10 84/1152/10
-f 35/1129/10 29/1153/10 85/1154/10
-f 86/1155/11 30/1156/11 36/1132/11
-f 33/1157/10 77/1138/10 87/1158/10
-f 34/1139/11 32/1159/11 88/1160/11
-f 11/1161/10 89/1162/10 85/1154/10
-f 12/1163/11 30/1156/11 86/1155/11
-f 13/1164/11 27/1165/11 83/1150/11
-f 84/1152/10 28/1151/10 14/1166/10
-f 9/1167/10 31/1168/10 87/1158/10
-f 88/1160/11 32/1159/11 10/1169/11
-f 15/1170/11 95/1171/11 81/1146/11
-f 16/1172/10 26/1148/10 82/1147/10
-f 23/1173/11 97/1174/11 95/1171/11
-f 24/1175/10 16/1172/10 96/1176/10
-f 7/1177/11 99/1178/11 97/1174/11
-f 8/1179/10 24/1175/10 98/1180/10
-f 21/1181/11 13/1164/11 91/1182/11
-f 92/1183/10 14/1166/10 22/1184/10
-f 5/1185/11 21/1181/11 101/1186/11
-f 102/1187/10 22/1184/10 6/1188/10
-f 19/1189/10 9/1167/10 93/1190/10
-f 94/1191/11 10/1169/11 20/1192/11
-f 1/1193/10 19/1189/10 105/1194/10
-f 106/1195/11 20/1192/11 2/1196/11
-f 17/1197/10 109/1198/10 89/1162/10
-f 18/1199/11 12/1163/11 90/1200/11
-f 3/1201/10 111/1202/10 109/1198/10
-f 4/1203/11 18/1199/11 110/1204/11
-f 7/1177/11 5/1185/11 103/1205/11
-f 104/1206/10 6/1188/10 8/1179/10
-f 1/1193/10 107/1207/10 111/1202/10
-f 2/1196/11 4/1203/11 112/1208/11
-f 107/1209/259 113/1210/259 115/1211/259
-f 108/1212/259 112/1213/259 116/1214/259
-f 103/1215/259 119/1216/259 117/1217/259
-f 104/1218/259 100/1219/259 118/1220/259
-f 111/1221/260 115/1222/260 121/1223/260
-f 112/1224/260 110/1225/260 122/1226/260
-f 89/1227/261 109/1228/261 121/1223/261
-f 110/1225/261 90/1229/261 124/1230/261
-f 105/1231/262 125/1232/262 113/1233/262
-f 106/1234/262 108/1235/262 114/1236/262
-f 93/1237/263 127/1238/263 125/1232/263
-f 94/1239/263 106/1234/263 126/1240/263
-f 101/1241/260 129/1242/260 119/1243/260
-f 102/1244/260 104/1245/260 120/1246/260
-f 91/1247/261 131/1248/261 129/1242/261
-f 92/1249/261 102/1244/261 130/1250/261
-f 99/1251/262 117/1252/262 133/1253/262
-f 100/1254/262 98/1255/262 134/1256/262
-f 97/1257/263 133/1253/263 135/1258/263
-f 98/1255/263 96/1259/263 136/1260/263
-f 95/1261/264 135/1258/264 137/1262/264
-f 96/1259/264 82/1263/264 138/1264/264
-f 87/1265/264 139/1266/264 127/1238/264
-f 140/1267/264 88/1268/264 94/1239/264
-f 91/1247/265 83/1269/265 141/1270/265
-f 142/1271/265 84/1272/265 92/1249/265
-f 89/1227/265 123/1273/265 143/1274/265
-f 90/1229/265 86/1275/265 144/1276/265
-f 87/1265/266 77/1277/266 145/1278/266
-f 146/1279/266 78/1280/266 88/1268/266
-f 85/1281/267 143/1274/267 147/1282/267
-f 86/1275/267 74/1283/267 148/1284/267
-f 75/1285/267 149/1286/267 141/1270/267
-f 76/1287/267 84/1272/267 142/1271/267
-f 79/1288/266 81/1289/266 137/1262/266
-f 82/1263/266 80/1290/266 152/1291/266
-f 79/1288/268 151/1292/268 153/1293/268
-f 80/1290/268 58/1294/268 154/1295/268
-f 77/1277/268 71/1296/268 155/1297/268
-f 72/1298/268 78/1280/268 146/1279/268
-f 63/1299/269 157/1300/269 149/1286/269
-f 64/1301/269 76/1287/269 150/1302/269
-f 73/1303/269 147/1282/269 159/1304/269
-f 74/1283/269 66/1305/269 160/1306/269
-f 69/1307/270 161/1308/270 155/1297/270
-f 70/1309/270 72/1298/270 156/1310/270
-f 69/1311/271 67/1312/271 163/1313/271
-f 164/1314/271 68/1315/271 70/1316/271
-f 65/1317/272 159/1318/272 163/1313/272
-f 66/1319/272 68/1315/272 164/1314/272
-f 61/1320/272 165/1321/272 157/1322/272
-f 62/1323/272 64/1324/272 158/1325/272
-f 61/1320/271 59/1326/271 167/1327/271
-f 168/1328/271 60/1329/271 62/1323/271
-f 57/1330/270 153/1293/270 167/1331/270
-f 58/1294/270 60/1332/270 168/1333/270
-f 172/1334/11 170/1335/11 218/1336/11
-f 194/1337/10 196/1338/10 220/1339/10
-f 174/1340/11 172/1334/11 218/1336/11
-f 196/1338/10 198/1341/10 220/1339/10
-f 176/1342/11 174/1340/11 218/1336/11
-f 198/1341/10 200/1343/10 220/1339/10
-f 178/1344/11 176/1342/11 218/1336/11
-f 200/1343/10 202/1345/10 220/1339/10
-f 180/1346/11 178/1344/11 218/1336/11
-f 202/1345/10 204/1347/10 220/1339/10
-f 182/1348/11 180/1346/11 218/1336/11
-f 204/1347/10 206/1349/10 220/1339/10
-f 184/1350/11 182/1348/11 218/1336/11
-f 206/1349/10 208/1351/10 220/1339/10
-f 186/1352/11 184/1350/11 218/1336/11
-f 208/1351/10 210/1353/10 220/1339/10
-f 188/1354/11 186/1352/11 218/1336/11
-f 210/1353/10 212/1355/10 220/1339/10
-f 190/1356/11 188/1354/11 218/1336/11
-f 212/1355/10 214/1357/10 220/1339/10
-f 192/1358/11 190/1356/11 218/1336/11
-f 214/1357/10 216/1359/10 220/1339/10
-f 170/1335/11 192/1358/11 218/1336/11
-f 216/1359/10 194/1337/10 220/1339/10
-f 194/1360/247 170/1361/247 172/1362/247
-f 196/1363/248 172/1362/248 174/1364/248
-f 198/1365/249 174/1364/249 176/1366/249
-f 200/1367/250 176/1368/250 178/1369/250
-f 202/1370/26 178/1369/26 180/1371/26
-f 204/1372/251 180/1371/251 182/1373/251
-f 206/1374/252 182/1375/252 184/1376/252
-f 208/1377/3 184/1376/3 186/1378/3
-f 210/1379/253 186/1378/253 188/1380/253
-f 212/1381/254 188/1382/254 190/1383/254
-f 214/1384/255 190/1383/255 192/1385/255
-f 216/1386/256 192/1385/256 170/1387/256
-f 225/1388/256 247/1389/256 271/1390/256
-f 226/1391/256 250/1392/256 272/1393/256
-f 227/1394/255 225/1388/255 249/1395/255
-f 228/1396/255 252/1397/255 250/1392/255
-f 229/1398/254 227/1394/254 251/1399/254
-f 230/1400/254 254/1401/254 252/1397/254
-f 231/1402/253 229/1403/253 253/1404/253
-f 232/1405/253 256/1406/253 254/1407/253
-f 233/1408/3 231/1402/3 255/1409/3
-f 234/1410/3 258/1411/3 256/1406/3
-f 235/1412/252 233/1408/252 257/1413/252
-f 236/1414/252 260/1415/252 258/1411/252
-f 237/1416/251 235/1417/251 259/1418/251
-f 238/1419/251 262/1420/251 260/1421/251
-f 239/1422/26 237/1416/26 261/1423/26
-f 240/1424/26 264/1425/26 262/1420/26
-f 241/1426/250 239/1422/250 263/1427/250
-f 242/1428/250 266/1429/250 264/1425/250
-f 243/1430/249 241/1431/249 265/1432/249
-f 244/1433/249 268/1434/249 266/1435/249
-f 245/1436/248 243/1430/248 267/1437/248
-f 246/1438/248 270/1439/248 268/1434/248
-f 247/1440/247 245/1436/247 269/1441/247
-f 248/1442/247 272/1443/247 270/1439/247
-f 221/1444/11 247/1445/11 225/1446/11
-f 226/1447/10 248/1448/10 222/1449/10
-f 223/1450/10 249/1451/10 271/1452/10
-f 272/1453/11 250/1454/11 224/1455/11
-f 221/1444/11 225/1446/11 227/1456/11
-f 228/1457/10 226/1447/10 222/1449/10
-f 223/1450/10 251/1458/10 249/1451/10
-f 250/1454/11 252/1459/11 224/1455/11
-f 221/1444/11 227/1456/11 229/1460/11
-f 230/1461/10 228/1457/10 222/1449/10
-f 223/1450/10 253/1462/10 251/1458/10
-f 252/1459/11 254/1463/11 224/1455/11
-f 221/1444/11 229/1460/11 231/1464/11
-f 232/1465/10 230/1461/10 222/1449/10
-f 223/1450/10 255/1466/10 253/1462/10
-f 254/1463/11 256/1467/11 224/1455/11
-f 221/1444/11 231/1464/11 233/1468/11
-f 234/1469/10 232/1465/10 222/1449/10
-f 223/1450/10 257/1470/10 255/1466/10
-f 256/1467/11 258/1471/11 224/1455/11
-f 221/1444/11 233/1468/11 235/1472/11
-f 236/1473/10 234/1469/10 222/1449/10
-f 223/1450/10 259/1474/10 257/1470/10
-f 258/1471/11 260/1475/11 224/1455/11
-f 221/1444/11 235/1472/11 237/1476/11
-f 238/1477/10 236/1473/10 222/1449/10
-f 223/1450/10 261/1478/10 259/1474/10
-f 260/1475/11 262/1479/11 224/1455/11
-f 221/1444/11 237/1476/11 239/1480/11
-f 240/1481/10 238/1477/10 222/1449/10
-f 223/1450/10 263/1482/10 261/1478/10
-f 262/1479/11 264/1483/11 224/1455/11
-f 221/1444/11 239/1480/11 241/1484/11
-f 242/1485/10 240/1481/10 222/1449/10
-f 223/1450/10 265/1486/10 263/1482/10
-f 264/1483/11 266/1487/11 224/1455/11
-f 221/1444/11 241/1484/11 243/1488/11
-f 244/1489/10 242/1485/10 222/1449/10
-f 223/1450/10 267/1490/10 265/1486/10
-f 266/1487/11 268/1491/11 224/1455/11
-f 221/1444/11 243/1488/11 245/1492/11
-f 246/1493/10 244/1489/10 222/1449/10
-f 223/1450/10 269/1494/10 267/1490/10
-f 268/1491/11 270/1495/11 224/1455/11
-f 221/1444/11 245/1492/11 247/1445/11
-f 248/1448/10 246/1493/10 222/1449/10
-f 223/1450/10 271/1452/10 269/1494/10
-f 270/1495/11 272/1453/11 224/1455/11
-f 321/1496/10 273/1445/10 275/1492/10
-f 276/1497/11 274/1498/11 322/1499/11
-f 323/1500/11 299/1501/11 297/1502/11
-f 298/1503/10 300/1504/10 324/1505/10
-f 321/1496/10 275/1492/10 277/1506/10
-f 278/1507/11 276/1497/11 322/1499/11
-f 323/1500/11 301/1508/11 299/1501/11
-f 300/1504/10 302/1509/10 324/1505/10
-f 321/1496/10 277/1506/10 279/1510/10
-f 280/1511/11 278/1507/11 322/1499/11
-f 323/1500/11 303/1512/11 301/1508/11
-f 302/1509/10 304/1513/10 324/1505/10
-f 321/1496/10 279/1510/10 281/1514/10
-f 282/1515/11 280/1511/11 322/1499/11
-f 323/1500/11 305/1516/11 303/1512/11
-f 304/1513/10 306/1517/10 324/1505/10
-f 321/1496/10 281/1514/10 283/1518/10
-f 284/1519/11 282/1515/11 322/1499/11
-f 323/1500/11 307/1520/11 305/1516/11
-f 306/1517/10 308/1521/10 324/1505/10
-f 321/1496/10 283/1518/10 285/1522/10
-f 286/1523/11 284/1519/11 322/1499/11
-f 323/1500/11 309/1524/11 307/1520/11
-f 308/1521/10 310/1525/10 324/1505/10
-f 321/1496/10 285/1522/10 287/1526/10
-f 288/1527/11 286/1523/11 322/1499/11
-f 323/1500/11 311/1528/11 309/1524/11
-f 310/1525/10 312/1529/10 324/1505/10
-f 321/1496/10 287/1526/10 289/1530/10
-f 290/1531/11 288/1527/11 322/1499/11
-f 323/1500/11 313/1532/11 311/1528/11
-f 312/1529/10 314/1533/10 324/1505/10
-f 321/1496/10 289/1530/10 291/1342/10
-f 292/1534/11 290/1531/11 322/1499/11
-f 323/1500/11 315/1535/11 313/1532/11
-f 314/1533/10 316/1484/10 324/1505/10
-f 321/1496/10 291/1342/10 293/1536/10
-f 294/1537/11 292/1534/11 322/1499/11
-f 323/1500/11 317/1538/11 315/1535/11
-f 316/1484/10 318/1480/10 324/1505/10
-f 321/1496/10 293/1536/10 295/1539/10
-f 296/1540/11 294/1537/11 322/1499/11
-f 323/1500/11 319/1541/11 317/1538/11
-f 318/1480/10 320/1542/10 324/1505/10
-f 321/1496/10 295/1539/10 273/1445/10
-f 274/1498/11 296/1540/11 322/1499/11
-f 323/1500/11 297/1502/11 319/1541/11
-f 320/1542/10 298/1503/10 324/1505/10
-f 297/1543/247 299/1544/247 275/1545/247
-f 298/1546/247 274/1547/247 276/1548/247
-f 299/1544/248 301/1549/248 277/1550/248
-f 300/1551/248 276/1548/248 278/1552/248
-f 301/1549/249 303/1553/249 279/1554/249
-f 302/1555/249 278/1552/249 280/1556/249
-f 303/1557/250 305/1558/250 281/1559/250
-f 304/1560/250 280/1561/250 282/1562/250
-f 305/1558/26 307/1563/26 283/1564/26
-f 306/1565/26 282/1562/26 284/1566/26
-f 307/1563/251 309/1567/251 285/1568/251
-f 308/1569/251 284/1566/251 286/1570/251
-f 309/1571/252 311/1572/252 287/1573/252
-f 310/1574/252 286/1575/252 288/1576/252
-f 311/1572/3 313/1577/3 289/1578/3
-f 312/1579/3 288/1576/3 290/1580/3
-f 313/1577/253 315/1581/253 291/1582/253
-f 314/1583/253 290/1580/253 292/1584/253
-f 315/1585/254 317/1586/254 293/1587/254
-f 316/1588/254 292/1589/254 294/1590/254
-f 317/1586/255 319/1591/255 295/1592/255
-f 318/1593/255 294/1590/255 296/1594/255
-f 319/1591/256 297/1595/256 273/1596/256
-f 320/1597/256 296/1594/256 274/1598/256
-f 329/1599/256 351/1600/256 375/1601/256
-f 331/1602/255 329/1599/255 353/1603/255
-f 333/1604/254 331/1602/254 355/1605/254
-f 335/1606/253 333/1607/253 357/1608/253
-f 337/1609/3 335/1606/3 359/1610/3
-f 339/1611/252 337/1609/252 361/1612/252
-f 341/1613/251 339/1614/251 363/1615/251
-f 343/1616/26 341/1613/26 365/1617/26
-f 345/1618/250 343/1616/250 367/1619/250
-f 347/1620/249 345/1621/249 369/1622/249
-f 349/1623/248 347/1620/248 371/1624/248
-f 351/1625/247 349/1623/247 373/1626/247
-f 325/1627/11 351/1628/11 329/1629/11
-f 327/1630/10 353/1631/10 375/1632/10
-f 325/1627/11 329/1629/11 331/1633/11
-f 327/1630/10 355/1634/10 353/1631/10
-f 325/1627/11 331/1633/11 333/1635/11
-f 327/1630/10 357/1636/10 355/1634/10
-f 325/1627/11 333/1635/11 335/1637/11
-f 327/1630/10 359/1638/10 357/1636/10
-f 325/1627/11 335/1637/11 337/1639/11
-f 327/1630/10 361/1640/10 359/1638/10
-f 325/1627/11 337/1639/11 339/1641/11
-f 327/1630/10 363/1642/10 361/1640/10
-f 325/1627/11 339/1641/11 341/1643/11
-f 327/1630/10 365/1644/10 363/1642/10
-f 325/1627/11 341/1643/11 343/1645/11
-f 327/1630/10 367/1646/10 365/1644/10
-f 325/1627/11 343/1645/11 345/1647/11
-f 327/1630/10 369/1648/10 367/1646/10
-f 325/1627/11 345/1647/11 347/1649/11
-f 327/1630/10 371/1650/10 369/1648/10
-f 325/1627/11 347/1649/11 349/1651/11
-f 327/1630/10 373/1652/10 371/1650/10
-f 325/1627/11 349/1651/11 351/1628/11
-f 327/1630/10 375/1632/10 373/1652/10
-f 425/1653/10 377/1654/10 379/1655/10
-f 380/1656/11 378/1657/11 426/1658/11
-f 427/1659/11 403/1660/11 401/1661/11
-f 402/1662/10 404/1663/10 428/1664/10
-f 425/1653/10 379/1655/10 381/1665/10
-f 382/1666/11 380/1656/11 426/1658/11
-f 427/1659/11 405/1667/11 403/1660/11
-f 404/1663/10 406/1668/10 428/1664/10
-f 425/1653/10 381/1665/10 383/1669/10
-f 384/1670/11 382/1666/11 426/1658/11
-f 427/1659/11 407/1671/11 405/1667/11
-f 406/1668/10 408/1672/10 428/1664/10
-f 425/1653/10 383/1669/10 385/1673/10
-f 386/1674/11 384/1670/11 426/1658/11
-f 427/1659/11 409/1675/11 407/1671/11
-f 408/1672/10 410/1676/10 428/1664/10
-f 425/1653/10 385/1673/10 387/1677/10
-f 388/1678/11 386/1674/11 426/1658/11
-f 427/1659/11 411/1679/11 409/1675/11
-f 410/1676/10 412/1680/10 428/1664/10
-f 425/1653/10 387/1677/10 389/1681/10
-f 390/1682/11 388/1678/11 426/1658/11
-f 427/1659/11 413/1683/11 411/1679/11
-f 412/1680/10 414/1684/10 428/1664/10
-f 425/1653/10 389/1681/10 391/1685/10
-f 392/1686/11 390/1682/11 426/1658/11
-f 427/1659/11 415/1687/11 413/1683/11
-f 414/1684/10 416/1688/10 428/1664/10
-f 425/1653/10 391/1685/10 393/1689/10
-f 394/1690/11 392/1686/11 426/1658/11
-f 427/1659/11 417/1691/11 415/1687/11
-f 416/1688/10 418/1692/10 428/1664/10
-f 425/1653/10 393/1689/10 395/1693/10
-f 396/1694/11 394/1690/11 426/1658/11
-f 427/1659/11 419/1695/11 417/1691/11
-f 418/1692/10 420/1696/10 428/1664/10
-f 425/1653/10 395/1693/10 397/1697/10
-f 398/1698/11 396/1694/11 426/1658/11
-f 427/1659/11 421/1699/11 419/1695/11
-f 420/1696/10 422/1700/10 428/1664/10
-f 425/1653/10 397/1697/10 399/1701/10
-f 400/1702/11 398/1698/11 426/1658/11
-f 427/1659/11 423/1703/11 421/1699/11
-f 422/1700/10 424/1704/10 428/1664/10
-f 425/1653/10 399/1701/10 377/1654/10
-f 378/1657/11 400/1702/11 426/1658/11
-f 427/1659/11 401/1661/11 423/1703/11
-f 424/1704/10 402/1662/10 428/1664/10
-f 401/1705/247 403/1706/247 379/1707/247
-f 402/1708/247 378/1709/247 380/1710/247
-f 403/1706/248 405/1711/248 381/1712/248
-f 404/1713/248 380/1710/248 382/1714/248
-f 405/1711/249 407/1715/249 383/1716/249
-f 406/1717/249 382/1714/249 384/1718/249
-f 407/1719/250 409/1720/250 385/1721/250
-f 408/1722/250 384/1723/250 386/1724/250
-f 409/1720/26 411/1725/26 387/1726/26
-f 410/1727/26 386/1724/26 388/1728/26
-f 411/1725/251 413/1729/251 389/1730/251
-f 412/1731/251 388/1728/251 390/736/251
-f 413/1732/252 415/1733/252 391/1734/252
-f 414/1735/252 390/1736/252 392/1737/252
-f 415/1733/3 417/1738/3 393/1739/3
-f 416/1740/3 392/1737/3 394/1741/3
-f 417/1738/253 419/1742/253 395/1743/253
-f 418/1744/253 394/1741/253 396/1745/253
-f 419/1746/254 421/1747/254 397/1748/254
-f 420/1749/254 396/1750/254 398/1751/254
-f 421/1747/255 423/1752/255 399/1753/255
-f 422/1754/255 398/1751/255 400/1755/255
-f 423/1752/256 401/1756/256 377/1757/256
-f 424/1758/256 400/1755/256 378/1415/256
-f 477/1759/10 429/1335/10 431/1334/10
-f 432/1760/11 430/1761/11 478/1762/11
-f 479/1763/11 455/1764/11 453/1765/11
-f 454/1502/10 456/1766/10 480/1767/10
-f 477/1759/10 431/1334/10 433/1768/10
-f 434/1769/11 432/1760/11 478/1762/11
-f 479/1763/11 457/1770/11 455/1764/11
-f 456/1766/10 458/1771/10 480/1767/10
-f 477/1759/10 433/1768/10 435/1772/10
-f 436/1773/11 434/1769/11 478/1762/11
-f 479/1763/11 459/1774/11 457/1770/11
-f 458/1771/10 460/1775/10 480/1767/10
-f 477/1759/10 435/1772/10 437/1776/10
-f 438/1777/11 436/1773/11 478/1762/11
-f 479/1763/11 461/1778/11 459/1774/11
-f 460/1775/10 462/1779/10 480/1767/10
-f 477/1759/10 437/1776/10 439/1780/10
-f 440/1781/11 438/1777/11 478/1762/11
-f 479/1763/11 463/1782/11 461/1778/11
-f 462/1779/10 464/1783/10 480/1767/10
-f 477/1759/10 439/1780/10 441/1784/10
-f 442/1785/11 440/1781/11 478/1762/11
-f 479/1763/11 465/1349/11 463/1782/11
-f 464/1783/10 466/1475/10 480/1767/10
-f 477/1759/10 441/1784/10 443/1786/10
-f 444/1787/11 442/1785/11 478/1762/11
-f 479/1763/11 467/1351/11 465/1349/11
-f 466/1475/10 468/1471/10 480/1767/10
-f 477/1759/10 443/1786/10 445/1788/10
-f 446/1789/11 444/1787/11 478/1762/11
-f 479/1763/11 469/1790/11 467/1351/11
-f 468/1471/10 470/1791/10 480/1767/10
-f 477/1759/10 445/1788/10 447/1792/10
-f 448/1793/11 446/1789/11 478/1762/11
-f 479/1763/11 471/1794/11 469/1790/11
-f 470/1791/10 472/1795/10 480/1767/10
-f 477/1759/10 447/1792/10 449/1796/10
-f 450/1797/11 448/1793/11 478/1762/11
-f 479/1763/11 473/1798/11 471/1794/11
-f 472/1795/10 474/1343/10 480/1767/10
-f 477/1759/10 449/1796/10 451/1799/10
-f 452/1800/11 450/1797/11 478/1762/11
-f 479/1763/11 475/1801/11 473/1798/11
-f 474/1343/10 476/1802/10 480/1767/10
-f 477/1759/10 451/1799/10 429/1335/10
-f 430/1761/11 452/1800/11 478/1762/11
-f 479/1763/11 453/1765/11 475/1801/11
-f 476/1802/10 454/1502/10 480/1767/10
-f 453/1803/247 455/1804/247 431/1805/247
-f 454/1806/247 430/1807/247 432/1808/247
-f 455/1804/248 457/1809/248 433/1810/248
-f 456/1811/248 432/1808/248 434/1812/248
-f 457/1809/249 459/1813/249 435/1814/249
-f 458/1815/249 434/1812/249 436/1816/249
-f 459/1817/250 461/1818/250 437/1819/250
-f 460/1820/250 436/1821/250 438/1822/250
-f 461/1818/26 463/1823/26 439/1824/26
-f 462/1825/26 438/1822/26 440/1826/26
-f 463/1823/251 465/1821/251 441/1827/251
-f 464/1828/251 440/1826/251 442/1829/251
-f 465/1830/252 467/1831/252 443/1832/252
-f 466/1833/252 442/1834/252 444/1835/252
-f 467/1831/3 469/1836/3 445/1837/3
-f 468/1838/3 444/1835/3 446/1839/3
-f 469/1836/253 471/1840/253 447/1841/253
-f 470/1842/253 446/1839/253 448/1843/253
-f 471/1844/254 473/1845/254 449/1846/254
-f 472/1847/254 448/1435/254 450/1848/254
-f 473/1845/255 475/1849/255 451/1850/255
-f 474/1851/255 450/1848/255 452/1852/255
-f 475/1849/256 453/1853/256 429/1854/256
-f 476/1855/256 452/1852/256 430/1856/256
-f 486/1857/256 510/1858/256 532/1859/256
-f 488/1860/255 512/1861/255 510/1858/255
-f 490/1862/254 514/1863/254 512/1861/254
-f 492/1864/257 516/1865/257 514/1866/257
-f 494/1867/258 518/1868/258 516/1865/258
-f 496/1869/252 520/1870/252 518/1868/252
-f 498/1871/251 522/1872/251 520/1618/251
-f 500/1873/26 524/1874/26 522/1872/26
-f 502/1875/250 526/1876/250 524/1874/250
-f 504/1877/249 528/1878/249 526/1879/249
-f 506/1880/248 530/1881/248 528/1878/248
-f 508/1882/247 532/1883/247 530/1881/247
-f 486/1884/10 508/1885/10 482/1886/10
-f 532/1887/11 510/1888/11 484/1889/11
-f 488/1890/10 486/1884/10 482/1886/10
-f 510/1888/11 512/1891/11 484/1889/11
-f 490/1892/10 488/1890/10 482/1886/10
-f 512/1891/11 514/1669/11 484/1889/11
-f 492/1893/10 490/1892/10 482/1886/10
-f 514/1669/11 516/1894/11 484/1889/11
-f 494/1895/10 492/1893/10 482/1886/10
-f 516/1894/11 518/1896/11 484/1889/11
-f 496/1897/10 494/1895/10 482/1886/10
-f 518/1896/11 520/1898/11 484/1889/11
-f 498/1899/10 496/1897/10 482/1886/10
-f 520/1898/11 522/1900/11 484/1889/11
-f 500/1901/10 498/1899/10 482/1886/10
-f 522/1900/11 524/1902/11 484/1889/11
-f 502/1903/10 500/1901/10 482/1886/10
-f 524/1902/11 526/1904/11 484/1889/11
-f 504/1905/10 502/1903/10 482/1886/10
-f 526/1904/11 528/1906/11 484/1889/11
-f 506/1907/10 504/1905/10 482/1886/10
-f 528/1906/11 530/1908/11 484/1889/11
-f 508/1885/10 506/1907/10 482/1886/10
-f 530/1908/11 532/1887/11 484/1889/11
-f 535/1909/256 546/1910/256 558/1911/256
-f 536/1912/255 535/1909/255 547/1913/255
-f 537/1914/254 536/1912/254 548/1915/254
-f 538/1916/253 537/1917/253 549/1918/253
-f 539/1919/3 538/1916/3 550/1920/3
-f 540/1921/252 539/1919/252 551/1922/252
-f 541/1923/251 540/1368/251 552/1924/251
-f 542/1925/26 541/1923/26 553/1926/26
-f 543/1927/250 542/1925/250 554/1928/250
-f 544/1929/249 543/1930/249 555/1931/249
-f 545/1932/248 544/1929/248 556/1933/248
-f 546/1934/247 545/1932/247 557/1935/247
-f 533/1936/11 546/1337/11 535/1937/11
-f 534/1938/10 547/1939/10 558/1940/10
-f 533/1936/11 535/1937/11 536/1941/11
-f 534/1938/10 548/1942/10 547/1939/10
-f 533/1936/11 536/1941/11 537/1943/11
-f 534/1938/10 549/1944/10 548/1942/10
-f 533/1936/11 537/1943/11 538/1945/11
-f 534/1938/10 550/1946/10 549/1944/10
-f 533/1936/11 538/1945/11 539/1947/11
-f 534/1938/10 551/1948/10 550/1946/10
-f 533/1936/11 539/1947/11 540/1949/11
-f 534/1938/10 552/1950/10 551/1948/10
-f 533/1936/11 540/1949/11 541/1951/11
-f 534/1938/10 553/1952/10 552/1950/10
-f 533/1936/11 541/1951/11 542/1953/11
-f 534/1938/10 554/1954/10 553/1952/10
-f 533/1936/11 542/1953/11 543/1955/11
-f 534/1938/10 555/1956/10 554/1954/10
-f 533/1936/11 543/1955/11 544/1957/11
-f 534/1938/10 556/1958/10 555/1956/10
-f 533/1936/11 544/1957/11 545/1959/11
-f 534/1938/10 557/1960/10 556/1958/10
-f 533/1936/11 545/1959/11 546/1337/11
-f 534/1938/10 558/1940/10 557/1960/10
-f 167/1961/273 153/1962/273 696/1963/273
-f 165/1964/274 167/1961/274 689/1965/274
-f 165/1964/275 690/1966/275 694/1967/275
-f 163/1968/276 159/1969/276 693/1970/276
-f 163/1968/277 691/1971/277 692/1972/277
-f 161/1973/278 692/1972/278 695/1974/278
-f 159/1969/279 147/1975/279 699/1976/279
-f 157/1977/280 694/1967/280 698/1978/280
-f 155/1979/281 695/1974/281 700/1980/281
-f 153/1962/282 151/1981/282 697/1982/282
-f 151/1981/283 137/1983/283 704/1984/283
-f 149/1985/284 698/1978/284 702/1986/284
-f 147/1975/285 143/1987/285 701/1988/285
-f 145/1989/286 700/1980/286 703/1990/286
-f 123/1991/287 711/1992/287 701/1988/287
-f 131/1993/288 141/1994/288 702/1986/288
-f 127/1995/289 139/1996/289 703/1990/289
-f 135/1997/290 705/1998/290 704/1984/290
-f 133/1999/291 706/2000/291 705/1998/291
-f 117/2001/292 714/2002/292 706/2000/292
-f 129/2003/293 131/1993/293 707/2004/293
-f 119/2005/294 129/2003/294 708/2006/294
-f 125/2007/295 127/1995/295 709/2008/295
-f 113/2009/296 125/2007/296 710/2010/296
-f 121/2011/297 712/2012/297 711/1992/297
-f 115/2013/298 715/2014/298 712/2012/298
-f 117/2001/299 119/2005/299 713/2015/299
-f 113/2009/300 716/2016/300 715/2014/300
-f 744/2017/10 752/2018/10 745/2019/10
-f 743/2020/10 745/2021/10 746/2022/10
-f 746/2023/10 751/2024/10 741/2025/10
-f 740/2026/11 750/2027/11 747/2028/11
-f 747/2029/11 748/2030/11 738/2031/11
-f 748/2032/11 749/2033/11 737/2034/11
-f 736/2035/11 755/2036/11 750/2037/11
-f 751/2038/10 754/2039/10 735/2040/10
-f 749/2041/11 756/2042/11 734/2043/11
-f 733/2044/10 753/2045/10 752/2046/10
-f 732/2047/10 760/2048/10 753/2049/10
-f 754/2050/10 759/2051/10 731/2052/10
-f 730/2053/11 758/2054/11 755/2055/11
-f 756/2056/11 757/2057/11 729/2058/11
-f 767/2059/11 758/2060/11 730/2061/11
-f 731/2062/10 759/2063/10 766/2064/10
-f 729/2065/11 757/2066/11 768/2067/11
-f 765/2068/10 760/2069/10 732/2070/10
-f 761/2071/10 765/2072/10 725/2073/10
-f 769/2074/10 761/2075/10 724/2076/10
-f 727/2077/10 766/2078/10 762/2079/10
-f 722/2080/10 762/2081/10 770/2082/10
-f 726/2083/11 768/2084/11 763/2085/11
-f 720/2086/11 763/2087/11 772/2088/11
-f 764/2089/11 767/2090/11 728/2091/11
-f 771/2092/11 764/2093/11 718/2094/11
-f 721/2095/10 770/2096/10 769/2097/10
-f 772/2098/11 771/2099/11 717/2100/11
-f 719/2101/301 717/2102/301 715/2103/301
-f 721/2104/301 723/2105/301 714/2106/301
-f 717/2107/302 718/2108/302 712/2109/302
-f 718/2108/303 728/2110/303 711/2111/303
-f 720/2112/304 719/2113/304 716/2114/304
-f 726/2115/305 720/2116/305 710/2117/305
-f 722/2118/302 721/2119/302 713/2120/302
-f 727/2121/303 722/2122/303 708/2123/303
-f 723/2124/304 724/2125/304 706/2126/304
-f 724/2125/305 725/2127/305 705/2128/305
-f 725/2127/306 732/2129/306 704/2130/306
-f 729/2131/306 726/2132/306 709/2133/306
-f 731/2134/307 727/2135/307 707/2136/307
-f 728/2110/307 730/2137/307 701/2138/307
-f 734/2139/308 729/2140/308 703/2141/308
-f 730/2137/309 736/2142/309 699/2143/309
-f 735/1374/309 731/2144/309 702/2145/309
-f 732/2129/308 733/2146/308 697/2147/308
-f 733/2146/310 744/2148/310 696/2149/310
-f 737/2150/310 734/2151/310 700/2152/310
-f 741/2153/311 735/2154/311 698/2155/311
-f 736/2142/311 740/2156/311 693/2157/311
-f 738/2158/312 737/2159/312 695/2160/312
-f 691/2161/313 739/2162/313 738/2163/313
-f 740/2164/314 739/2165/314 691/2166/314
-f 742/2167/314 741/2168/314 694/2169/314
-f 689/2170/313 743/2171/313 742/2172/313
-f 744/2148/312 743/2173/312 689/2174/312
-f 168/2175/315 773/2176/315 780/2177/315
-f 166/2178/316 774/2179/316 773/2176/316
-f 166/2178/317 158/2180/317 778/2181/317
-f 164/2182/318 775/2183/318 777/2184/318
-f 164/2182/319 162/2185/319 776/2186/319
-f 162/2185/320 156/2187/320 779/2188/320
-f 160/2189/321 777/2184/321 783/2190/321
-f 158/2180/322 150/2191/322 782/2192/322
-f 156/1310/323 146/1279/323 784/2193/323
-f 154/1295/324 780/2194/324 781/2195/324
-f 152/1291/325 781/2195/325 788/2196/325
-f 150/2191/326 142/2197/326 786/2198/326
-f 148/2199/327 783/2190/327 785/2200/327
-f 146/1279/328 140/1267/328 787/2201/328
-f 124/2202/329 144/2203/329 785/2200/329
-f 132/2204/330 791/2205/330 786/2198/330
-f 128/2206/331 793/2207/331 787/2201/331
-f 136/1260/332 138/1264/332 788/2196/332
-f 134/1256/333 136/1260/333 789/2208/333
-f 118/2209/334 134/2210/334 790/2211/334
-f 130/2212/335 792/2213/335 791/2205/335
-f 120/2214/336 797/2215/336 792/2213/336
-f 126/1240/337 794/2216/337 793/2207/337
-f 114/2217/338 800/2218/338 794/2219/338
-f 122/2220/339 124/2202/339 795/2221/339
-f 116/2222/340 122/2220/340 796/2223/340
-f 118/2209/341 798/2224/341 797/2215/341
-f 114/2217/342 116/2222/342 799/2225/342
-f 829/2226/11 836/2227/11 828/2228/11
-f 830/2229/11 829/2230/11 827/2231/11
-f 830/2232/11 826/2233/11 825/2234/11
-f 831/2235/10 834/2236/10 824/2237/10
-f 831/2238/10 823/2239/10 822/2240/10
-f 832/2241/10 822/2242/10 821/2243/10
-f 834/2244/10 839/2245/10 820/1428/10
-f 835/2246/11 825/2247/11 819/2248/11
-f 833/2249/10 821/2250/10 818/2251/10
-f 836/2252/11 837/2253/11 817/2254/11
-f 837/2255/11 844/702/11 816/2256/11
-f 838/2257/11 819/2258/11 815/2259/11
-f 839/2260/10 842/2261/10 814/2262/10
-f 840/2263/10 818/2264/10 813/2265/10
-f 851/2266/10 812/2267/10 814/2268/10
-f 850/700/11 843/2269/11 815/2270/11
-f 852/2271/10 841/2272/10 813/2273/10
-f 849/2274/11 809/2275/11 816/2276/11
-f 845/2277/11 808/2278/11 809/2279/11
-f 853/2280/11 807/2281/11 808/2050/11
-f 846/2282/11 850/2283/11 811/2284/11
-f 854/2285/11 846/2286/11 806/2287/11
-f 847/2288/10 852/2289/10 810/2290/10
-f 856/2291/10 847/2292/10 804/2293/10
-f 848/2294/10 802/2295/10 812/2296/10
-f 855/2297/10 801/2298/10 802/2299/10
-f 853/2300/11 854/2301/11 805/2302/11
-f 856/2303/10 803/2304/10 801/2305/10
-f 803/2306/343 800/2307/343 799/2308/343
-f 805/2309/343 797/2310/343 798/2311/343
-f 801/2312/344 799/2313/344 796/2314/344
-f 802/2315/345 796/2314/345 795/2316/345
-f 804/2317/346 794/2318/346 800/2319/346
-f 810/2320/347 793/2321/347 794/2322/347
-f 806/2323/344 792/2324/344 797/2325/344
-f 811/2326/345 791/2327/345 792/2328/345
-f 807/2329/346 798/1088/346 790/2330/346
-f 809/2331/347 808/2332/347 790/2330/347
-f 809/2331/348 789/2333/348 788/2334/348
-f 810/2335/348 813/2336/348 787/2337/348
-f 815/2338/349 786/2339/349 791/2340/349
-f 812/2341/349 795/2316/349 785/2342/349
-f 818/2343/308 784/2344/308 787/2345/308
-f 814/2346/350 785/2342/350 783/2347/350
-f 819/2348/350 782/2349/350 786/2350/350
-f 816/2351/308 788/2334/308 781/2352/308
-f 828/2353/351 817/2354/351 781/2352/351
-f 821/2355/351 779/2356/351 784/2357/351
-f 825/2358/352 778/2359/352 782/2360/352
-f 820/2361/352 783/2347/352 777/2362/352
-f 822/2363/353 776/2364/353 779/2167/353
-f 822/2365/354 823/2366/354 775/2367/354
-f 824/2368/355 777/2369/355 775/2370/355
-f 826/2371/355 774/2372/355 778/2373/355
-f 826/2374/354 827/2375/354 773/2376/354
-f 828/2353/353 780/2377/353 773/2378/353
-f 59/1107/11 55/1101/11 57/1103/11
-f 60/2379/10 58/1104/10 56/1106/10
-f 53/1111/11 55/1101/11 61/1108/11
-f 60/2379/10 56/1106/10 62/1110/10
-f 43/1133/11 53/1111/11 63/1112/11
-f 62/1110/10 54/1109/10 64/1114/10
-f 67/1122/10 51/1115/10 65/1117/10
-f 68/1123/11 66/1118/11 52/1120/11
-f 69/1125/10 49/1121/10 67/1122/10
-f 70/2380/11 68/1123/11 50/1124/11
-f 47/1137/10 49/1121/10 71/1126/10
-f 70/2380/11 50/1124/11 72/1128/11
-f 65/1117/10 45/1116/10 73/1130/10
-f 66/1118/11 74/1131/11 46/1119/11
-f 37/1149/11 43/1133/11 75/1134/11
-f 64/1114/10 44/1113/10 76/1136/10
-f 33/1157/10 47/1137/10 77/1138/10
-f 72/1128/11 48/1127/11 78/1140/11
-f 57/1103/11 41/1102/11 79/1142/11
-f 58/1104/10 80/1143/10 42/1105/10
-f 79/1142/11 39/1141/11 81/1146/11
-f 80/1143/10 82/1147/10 40/1144/10
-f 27/1165/11 37/1149/11 83/1150/11
-f 76/1136/10 38/1135/10 84/1152/10
-f 73/1130/10 35/1129/10 85/1154/10
-f 74/1131/11 86/1155/11 36/1132/11
-f 31/1168/10 33/1157/10 87/1158/10
-f 78/1140/11 34/1139/11 88/1160/11
-f 29/1153/10 11/1161/10 85/1154/10
-f 90/1200/11 12/1163/11 86/1155/11
-f 91/1182/11 13/1164/11 83/1150/11
-f 92/1183/10 84/1152/10 14/1166/10
-f 93/1190/10 9/1167/10 87/1158/10
-f 94/1191/11 88/1160/11 10/1169/11
-f 25/1145/11 15/1170/11 81/1146/11
-f 96/1176/10 16/1172/10 82/1147/10
-f 15/1170/11 23/1173/11 95/1171/11
-f 98/1180/10 24/1175/10 96/1176/10
-f 23/1173/11 7/1177/11 97/1174/11
-f 100/2381/10 8/1179/10 98/1180/10
-f 101/1186/11 21/1181/11 91/1182/11
-f 102/1187/10 92/1183/10 22/1184/10
-f 103/1205/11 5/1185/11 101/1186/11
-f 104/1206/10 102/1187/10 6/1188/10
-f 105/1194/10 19/1189/10 93/1190/10
-f 106/1195/11 94/1191/11 20/1192/11
-f 107/1207/10 1/1193/10 105/1194/10
-f 108/2382/11 106/1195/11 2/1196/11
-f 11/1161/10 17/1197/10 89/1162/10
-f 110/1204/11 18/1199/11 90/1200/11
-f 17/1197/10 3/1201/10 109/1198/10
-f 112/1208/11 4/1203/11 110/1204/11
-f 99/1178/11 7/1177/11 103/1205/11
-f 100/2381/10 104/1206/10 8/1179/10
-f 3/1201/10 1/1193/10 111/1202/10
-f 108/2382/11 2/1196/11 112/1208/11
-f 111/2383/259 107/1209/259 115/1211/259
-f 114/2384/259 108/1212/259 116/1214/259
-f 99/2385/259 103/1215/259 117/1217/259
-f 120/2386/259 104/1218/259 118/1220/259
-f 109/1228/260 111/1221/260 121/1223/260
-f 116/2387/260 112/1224/260 122/1226/260
-f 123/1273/261 89/1227/261 121/1223/261
-f 122/1226/261 110/1225/261 124/1230/261
-f 107/2388/262 105/1231/262 113/1233/262
-f 126/1240/262 106/1234/262 114/1236/262
-f 105/1231/263 93/1237/263 125/1232/263
-f 128/2206/263 94/1239/263 126/1240/263
-f 103/2389/260 101/1241/260 119/1243/260
-f 130/1250/260 102/1244/260 120/1246/260
-f 101/1241/261 91/1247/261 129/1242/261
-f 132/2390/261 92/1249/261 130/1250/261
-f 97/1257/262 99/1251/262 133/1253/262
-f 118/2391/262 100/1254/262 134/1256/262
-f 95/1261/263 97/1257/263 135/1258/263
-f 134/1256/263 98/1255/263 136/1260/263
-f 81/1289/264 95/1261/264 137/1262/264
-f 136/1260/264 96/1259/264 138/1264/264
-f 93/1237/264 87/1265/264 127/1238/264
-f 128/2206/264 140/1267/264 94/1239/264
-f 131/1248/265 91/1247/265 141/1270/265
-f 132/2390/265 142/1271/265 92/1249/265
-f 85/1281/265 89/1227/265 143/1274/265
-f 124/1230/265 90/1229/265 144/1276/265
-f 139/1266/266 87/1265/266 145/1278/266
-f 140/1267/266 146/1279/266 88/1268/266
-f 73/1303/267 85/1281/267 147/1282/267
-f 144/1276/267 86/1275/267 148/1284/267
-f 83/1269/267 75/1285/267 141/1270/267
-f 150/1302/267 76/1287/267 142/1271/267
-f 151/1292/266 79/1288/266 137/1262/266
-f 138/1264/266 82/1263/266 152/1291/266
-f 57/1330/268 79/1288/268 153/1293/268
-f 152/1291/268 80/1290/268 154/1295/268
-f 145/1278/268 77/1277/268 155/1297/268
-f 156/1310/268 72/1298/268 146/1279/268
-f 75/1285/269 63/1299/269 149/1286/269
-f 158/2392/269 64/1301/269 150/1302/269
-f 65/2393/269 73/1303/269 159/1304/269
-f 148/1284/269 74/1283/269 160/1306/269
-f 71/1296/270 69/1307/270 155/1297/270
-f 162/2394/270 70/1309/270 156/1310/270
-f 161/1325/271 69/1311/271 163/1313/271
-f 162/2326/271 164/1314/271 70/1316/271
-f 67/1312/272 65/1317/272 163/1313/272
-f 160/2395/272 66/1319/272 164/1314/272
-f 63/2396/272 61/1320/272 157/1322/272
-f 166/2397/272 62/1323/272 158/1325/272
-f 165/1321/271 61/1320/271 167/1327/271
-f 166/2397/271 168/1328/271 62/1323/271
-f 59/2398/270 57/1330/270 167/1331/270
-f 154/1295/270 58/1294/270 168/1333/270
-f 196/1363/247 194/1360/247 172/1362/247
-f 198/1365/248 196/1363/248 174/1364/248
-f 200/2399/249 198/1365/249 176/1366/249
-f 202/1370/250 200/1367/250 178/1369/250
-f 204/1372/26 202/1370/26 180/1371/26
-f 206/2400/251 204/1372/251 182/1373/251
-f 208/1377/252 206/1374/252 184/1376/252
-f 210/1379/3 208/1377/3 186/1378/3
-f 212/2401/253 210/1379/253 188/1380/253
-f 214/1384/254 212/1381/254 190/1383/254
-f 216/1386/255 214/1384/255 192/1385/255
-f 194/2402/256 216/1386/256 170/1387/256
-f 249/1395/256 225/1388/256 271/1390/256
-f 248/2403/256 226/1391/256 272/1393/256
-f 251/1399/255 227/1394/255 249/1395/255
-f 226/1391/255 228/1396/255 250/1392/255
-f 253/2404/254 229/1398/254 251/1399/254
-f 228/1396/254 230/1400/254 252/1397/254
-f 255/1409/253 231/1402/253 253/1404/253
-f 230/2405/253 232/1405/253 254/1407/253
-f 257/1413/3 233/1408/3 255/1409/3
-f 232/1405/3 234/1410/3 256/1406/3
-f 259/2406/252 235/1412/252 257/1413/252
-f 234/1410/252 236/1414/252 258/1411/252
-f 261/1423/251 237/1416/251 259/1418/251
-f 236/2407/251 238/1419/251 260/1421/251
-f 263/1427/26 239/1422/26 261/1423/26
-f 238/1419/26 240/1424/26 262/1420/26
-f 265/2408/250 241/1426/250 263/1427/250
-f 240/1424/250 242/1428/250 264/1425/250
-f 267/1437/249 243/1430/249 265/1432/249
-f 242/2409/249 244/1433/249 266/1435/249
-f 269/1441/248 245/1436/248 267/1437/248
-f 244/1433/248 246/1438/248 268/1434/248
-f 271/2410/247 247/1440/247 269/1441/247
-f 246/1438/247 248/1442/247 270/1439/247
-f 273/2411/247 297/1543/247 275/1545/247
-f 300/1551/247 298/1546/247 276/1548/247
-f 275/1545/248 299/1544/248 277/1550/248
-f 302/1555/248 300/1551/248 278/1552/248
-f 277/1550/249 301/1549/249 279/1554/249
-f 304/2412/249 302/1555/249 280/1556/249
-f 279/2413/250 303/1557/250 281/1559/250
-f 306/1565/250 304/1560/250 282/1562/250
-f 281/1559/26 305/1558/26 283/1564/26
-f 308/1569/26 306/1565/26 284/1566/26
-f 283/1564/251 307/1563/251 285/1568/251
-f 310/2414/251 308/1569/251 286/1570/251
-f 285/2415/252 309/1571/252 287/1573/252
-f 312/1579/252 310/1574/252 288/1576/252
-f 287/1573/3 311/1572/3 289/1578/3
-f 314/1583/3 312/1579/3 290/1580/3
-f 289/1578/253 313/1577/253 291/1582/253
-f 316/2416/253 314/1583/253 292/1584/253
-f 291/2417/254 315/1585/254 293/1587/254
-f 318/1593/254 316/1588/254 294/1590/254
-f 293/1587/255 317/1586/255 295/1592/255
-f 320/1597/255 318/1593/255 296/1594/255
-f 295/1592/256 319/1591/256 273/1596/256
-f 298/2418/256 320/1597/256 274/1598/256
-f 353/1603/256 329/1599/256 375/1601/256
-f 355/1605/255 331/1602/255 353/1603/255
-f 357/2419/254 333/1604/254 355/1605/254
-f 359/1610/253 335/1606/253 357/1608/253
-f 361/1612/3 337/1609/3 359/1610/3
-f 363/2420/252 339/1611/252 361/1612/252
-f 365/1617/251 341/1613/251 363/1615/251
-f 367/1619/26 343/1616/26 365/1617/26
-f 369/2421/250 345/1618/250 367/1619/250
-f 371/1624/249 347/1620/249 369/1622/249
-f 373/1626/248 349/1623/248 371/1624/248
-f 375/2422/247 351/1625/247 373/1626/247
-f 377/2423/247 401/1705/247 379/1707/247
-f 404/1713/247 402/1708/247 380/1710/247
-f 379/1707/248 403/1706/248 381/1712/248
-f 406/1717/248 404/1713/248 382/1714/248
-f 381/1712/249 405/1711/249 383/1716/249
-f 408/2424/249 406/1717/249 384/1718/249
-f 383/2133/250 407/1719/250 385/1721/250
-f 410/1727/250 408/1722/250 386/1724/250
-f 385/1721/26 409/1720/26 387/1726/26
-f 412/1731/26 410/1727/26 388/1728/26
-f 387/1726/251 411/1725/251 389/1730/251
-f 414/2425/251 412/1731/251 390/736/251
-f 389/2426/252 413/1732/252 391/1734/252
-f 416/1740/252 414/1735/252 392/1737/252
-f 391/1734/3 415/1733/3 393/1739/3
-f 418/1744/3 416/1740/3 394/1741/3
-f 393/1739/253 417/1738/253 395/1743/253
-f 420/1607/253 418/1744/253 396/1745/253
-f 395/2427/254 419/1746/254 397/1748/254
-f 422/1754/254 420/1749/254 398/1751/254
-f 397/1748/255 421/1747/255 399/1753/255
-f 424/1758/255 422/1754/255 400/1755/255
-f 399/1753/256 423/1752/256 377/1757/256
-f 402/2428/256 424/1758/256 378/1415/256
-f 429/2429/247 453/1803/247 431/1805/247
-f 456/1811/247 454/1806/247 432/1808/247
-f 431/1805/248 455/1804/248 433/1810/248
-f 458/1815/248 456/1811/248 434/1812/248
-f 433/1810/249 457/1809/249 435/1814/249
-f 460/2430/249 458/1815/249 436/1816/249
-f 435/2431/250 459/1817/250 437/1819/250
-f 462/1825/250 460/1820/250 438/1822/250
-f 437/1819/26 461/1818/26 439/1824/26
-f 464/1828/26 462/1825/26 440/1826/26
-f 439/1824/251 463/1823/251 441/1827/251
-f 466/2432/251 464/1828/251 442/1829/251
-f 441/2433/252 465/1830/252 443/1832/252
-f 468/1838/252 466/1833/252 444/1835/252
-f 443/1832/3 467/1831/3 445/1837/3
-f 470/1842/3 468/1838/3 446/1839/3
-f 445/1837/253 469/1836/253 447/1841/253
-f 472/2434/253 470/1842/253 448/1843/253
-f 447/2435/254 471/1844/254 449/1846/254
-f 474/1851/254 472/1847/254 450/1848/254
-f 449/1846/255 473/1845/255 451/1850/255
-f 476/1855/255 474/1851/255 452/1852/255
-f 451/1850/256 475/1849/256 429/1854/256
-f 454/2436/256 476/1855/256 430/1856/256
-f 508/2437/256 486/1857/256 532/1859/256
-f 486/1857/255 488/1860/255 510/1858/255
-f 488/1860/254 490/1862/254 512/1861/254
-f 490/2438/257 492/1864/257 514/1866/257
-f 492/1864/258 494/1867/258 516/1865/258
-f 494/1867/252 496/1869/252 518/1868/252
-f 496/2439/251 498/1871/251 520/1618/251
-f 498/1871/26 500/1873/26 522/1872/26
-f 500/1873/250 502/1875/250 524/1874/250
-f 502/2440/249 504/1877/249 526/1879/249
-f 504/1877/248 506/1880/248 528/1878/248
-f 506/1880/247 508/1882/247 530/1881/247
-f 547/1913/256 535/1909/256 558/1911/256
-f 548/1915/255 536/1912/255 547/1913/255
-f 549/2441/254 537/1914/254 548/1915/254
-f 550/1920/253 538/1916/253 549/1918/253
-f 551/1922/3 539/1919/3 550/1920/3
-f 552/2442/252 540/1921/252 551/1922/252
-f 553/1926/251 541/1923/251 552/1924/251
-f 554/1928/26 542/1925/26 553/1926/26
-f 555/2443/250 543/1927/250 554/1928/250
-f 556/1933/249 544/1929/249 555/1931/249
-f 557/1935/248 545/1932/248 556/1933/248
-f 558/2444/247 546/1934/247 557/1935/247
-f 689/1965/356 167/1961/356 696/1963/356
-f 690/1966/357 165/1964/357 689/1965/357
-f 157/1977/358 165/1964/358 694/1967/358
-f 691/1971/359 163/1968/359 693/1970/359
-f 161/1973/360 163/1968/360 692/1972/360
-f 155/1979/361 161/1973/361 695/1974/361
-f 693/1970/362 159/1969/362 699/1976/362
-f 149/1985/363 157/1977/363 698/1978/363
-f 145/1989/364 155/1979/364 700/1980/364
-f 696/1963/365 153/1962/365 697/1982/365
-f 697/1982/366 151/1981/366 704/1984/366
-f 141/1994/367 149/1985/367 702/1986/367
-f 699/1976/368 147/1975/368 701/1988/368
-f 139/1996/369 145/1989/369 703/1990/369
-f 143/1987/370 123/1991/370 701/1988/370
-f 707/2004/371 131/1993/371 702/1986/371
-f 709/2008/372 127/1995/372 703/1990/372
-f 137/1983/373 135/1997/373 704/1984/373
-f 135/1997/374 133/1999/374 705/1998/374
-f 133/1999/375 117/2001/375 706/2000/375
-f 708/2006/376 129/2003/376 707/2004/376
-f 713/2015/377 119/2005/377 708/2006/377
-f 710/2010/378 125/2007/378 709/2008/378
-f 716/2016/379 113/2009/379 710/2010/379
-f 123/1991/380 121/2011/380 711/1992/380
-f 121/2011/381 115/2013/381 712/2012/381
-f 714/2002/382 117/2001/382 713/2015/382
-f 115/2013/383 113/2009/383 715/2014/383
-f 743/2445/10 744/2017/10 745/2019/10
-f 742/2446/10 743/2020/10 746/2022/10
-f 742/2447/10 746/2023/10 741/2025/10
-f 739/2448/11 740/2026/11 747/2028/11
-f 739/2449/11 747/2029/11 738/2031/11
-f 738/2450/11 748/2032/11 737/2034/11
-f 740/2451/11 736/2035/11 750/2037/11
-f 741/2452/10 751/2038/10 735/2040/10
-f 737/2453/11 749/2041/11 734/2043/11
-f 744/2454/10 733/2044/10 752/2046/10
-f 733/2455/10 732/2047/10 753/2049/10
-f 735/2456/10 754/2050/10 731/2052/10
-f 736/2457/11 730/2053/11 755/2055/11
-f 734/2458/11 756/2056/11 729/2058/11
-f 728/2459/11 767/2059/11 730/2061/11
-f 727/2460/10 731/2062/10 766/2064/10
-f 726/2461/11 729/2065/11 768/2067/11
-f 725/2462/10 765/2068/10 732/2070/10
-f 724/2463/10 761/2071/10 725/2073/10
-f 723/2464/10 769/2074/10 724/2076/10
-f 722/2465/10 727/2077/10 762/2079/10
-f 721/2466/10 722/2080/10 770/2082/10
-f 720/2467/11 726/2083/11 763/2085/11
-f 719/2468/11 720/2086/11 772/2088/11
-f 718/2469/11 764/2089/11 728/2091/11
-f 717/2470/11 771/2092/11 718/2094/11
-f 723/2471/10 721/2095/10 769/2097/10
-f 719/2472/11 772/2098/11 717/2100/11
-f 716/2473/301 719/2101/301 715/2103/301
-f 713/2474/301 721/2104/301 714/2106/301
-f 715/2475/302 717/2107/302 712/2109/302
-f 712/2109/303 718/2108/303 711/2111/303
-f 710/2476/304 720/2112/304 716/2114/304
-f 709/2477/305 726/2115/305 710/2117/305
-f 708/2478/302 722/2118/302 713/2120/302
-f 707/2479/303 727/2121/303 708/2123/303
-f 714/2480/304 723/2124/304 706/2126/304
-f 706/2126/305 724/2125/305 705/2128/305
-f 705/2128/306 725/2127/306 704/2130/306
-f 703/2481/306 729/2131/306 709/2133/306
-f 702/2482/307 731/2134/307 707/2136/307
-f 711/2111/307 728/2110/307 701/2138/307
-f 700/2483/308 734/2139/308 703/2141/308
-f 701/2138/309 730/2137/309 699/2143/309
-f 698/2484/309 735/1374/309 702/2145/309
-f 704/2130/308 732/2129/308 697/2147/308
-f 697/2147/310 733/2146/310 696/2149/310
-f 695/2160/310 737/2150/310 700/2152/310
-f 694/2485/311 741/2153/311 698/2155/311
-f 699/2143/311 736/2142/311 693/2157/311
-f 692/2486/312 738/2158/312 695/2160/312
-f 692/2487/313 691/2161/313 738/2163/313
-f 693/2488/314 740/2164/314 691/2166/314
-f 690/2489/314 742/2167/314 694/2169/314
-f 690/2490/313 689/2170/313 742/2172/313
-f 696/2149/312 744/2148/312 689/2174/312
-f 154/2491/384 168/2175/384 780/2177/384
-f 168/2175/385 166/2178/385 773/2176/385
-f 774/2179/386 166/2178/386 778/2181/386
-f 160/2189/387 164/2182/387 777/2184/387
-f 775/2183/388 164/2182/388 776/2186/388
-f 776/2186/389 162/2185/389 779/2188/389
-f 148/2199/390 160/2189/390 783/2190/390
-f 778/2181/391 158/2180/391 782/2192/391
-f 779/2492/392 156/1310/392 784/2193/392
-f 152/1291/393 154/1295/393 781/2195/393
-f 138/1264/394 152/1291/394 788/2196/394
-f 782/2192/395 150/2191/395 786/2198/395
-f 144/2203/396 148/2199/396 785/2200/396
-f 784/2193/397 146/1279/397 787/2201/397
-f 795/2221/398 124/2202/398 785/2200/398
-f 142/2197/399 132/2204/399 786/2198/399
-f 140/1267/400 128/2206/400 787/2201/400
-f 789/2208/401 136/1260/401 788/2196/401
-f 790/2493/402 134/1256/402 789/2208/402
-f 798/2224/403 118/2209/403 790/2211/403
-f 132/2204/404 130/2212/404 791/2205/404
-f 130/2212/405 120/2214/405 792/2213/405
-f 128/2206/406 126/1240/406 793/2207/406
-f 126/2494/407 114/2217/407 794/2219/407
-f 796/2223/408 122/2220/408 795/2221/408
-f 799/2225/409 116/2222/409 796/2223/409
-f 120/2214/410 118/2209/410 797/2215/410
-f 800/2218/411 114/2217/411 799/2225/411
-f 827/2495/11 829/2226/11 828/2228/11
-f 826/2496/11 830/2229/11 827/2231/11
-f 835/2497/11 830/2232/11 825/2234/11
-f 823/2498/10 831/2235/10 824/2237/10
-f 832/2024/10 831/2238/10 822/2240/10
-f 833/2499/10 832/2241/10 821/2243/10
-f 824/2500/10 834/2244/10 820/1428/10
-f 838/2501/11 835/2246/11 819/2248/11
-f 840/2502/10 833/2249/10 818/2251/10
-f 828/2503/11 836/2252/11 817/2254/11
-f 817/2504/11 837/2255/11 816/2256/11
-f 843/2505/11 838/2257/11 815/2259/11
-f 820/2506/10 839/2260/10 814/2262/10
-f 841/2507/10 840/2263/10 813/2265/10
-f 842/2508/10 851/2266/10 814/2268/10
-f 811/2509/11 850/700/11 815/2270/11
-f 810/2510/10 852/2271/10 813/2273/10
-f 844/2511/11 849/2274/11 816/2276/11
-f 849/2512/11 845/2277/11 809/2279/11
-f 845/2513/11 853/2280/11 808/2050/11
-f 806/2514/11 846/2282/11 811/2284/11
-f 805/2515/11 854/2285/11 806/2287/11
-f 804/2516/10 847/2288/10 810/2290/10
-f 803/2517/10 856/2291/10 804/2293/10
-f 851/2518/10 848/2294/10 812/2296/10
-f 848/2519/10 855/2297/10 802/2299/10
-f 807/2520/11 853/2300/11 805/2302/11
-f 855/2521/10 856/2303/10 801/2305/10
-f 801/2522/343 803/2306/343 799/2308/343
-f 807/2523/343 805/2309/343 798/2311/343
-f 802/2315/344 801/2312/344 796/2314/344
-f 812/2341/345 802/2315/345 795/2316/345
-f 803/2524/346 804/2317/346 800/2319/346
-f 804/2525/347 810/2320/347 794/2322/347
-f 805/2526/344 806/2323/344 797/2325/344
-f 806/2527/345 811/2326/345 792/2328/345
-f 808/2332/346 807/2329/346 790/2330/346
-f 789/2333/347 809/2331/347 790/2330/347
-f 816/2351/348 809/2331/348 788/2334/348
-f 793/2528/348 810/2335/348 787/2337/348
-f 811/2529/349 815/2338/349 791/2340/349
-f 814/2346/349 812/2341/349 785/2342/349
-f 813/2530/308 818/2343/308 787/2345/308
-f 820/2361/350 814/2346/350 783/2347/350
-f 815/2531/350 819/2348/350 786/2350/350
-f 817/2354/308 816/2351/308 781/2352/308
-f 780/2377/351 828/2353/351 781/2352/351
-f 818/2532/351 821/2355/351 784/2357/351
-f 819/2533/352 825/2358/352 782/2360/352
-f 824/2534/352 820/2361/352 777/2362/352
-f 821/2535/353 822/2363/353 779/2167/353
-f 776/2536/354 822/2365/354 775/2367/354
-f 823/2537/355 824/2368/355 775/2370/355
-f 825/2538/355 826/2371/355 778/2373/355
-f 774/2539/354 826/2374/354 773/2376/354
-f 827/2540/353 828/2353/353 773/2378/353
-s 1
-f 3/778/412 5/796/412 7/2541/413
-f 4/2542/412 2/2543/413 8/2544/413
-f 17/2545/414 21/2546/414 5/2547/412
-f 18/2548/414 4/2549/412 6/2550/412
-f 11/2551/415 13/2552/415 21/2546/414
-f 12/2553/415 18/2548/414 22/2554/414
-f 9/2555/416 19/2556/417 23/2557/417
-f 24/2558/417 20/2559/417 10/2560/416
-f 1/2561/413 7/2562/413 23/2557/417
-f 2/2563/413 20/2559/417 24/2558/417
-f 15/2564/416 25/2565/418 31/2566/418
-f 16/2567/416 10/2560/416 32/2568/418
-f 13/2552/415 11/2551/415 29/2569/419
-f 30/2570/419 12/2553/415 14/2571/415
-f 27/2572/419 29/2569/419 35/2573/420
-f 36/2574/420 30/2570/419 28/2575/419
-f 25/2565/418 39/2576/421 33/2577/421
-f 26/2578/418 32/2568/418 34/2579/421
-f 33/2577/421 39/2576/421 41/2580/422
-f 42/2581/422 40/2582/421 34/2579/421
-f 35/2573/420 45/2583/423 43/2584/423
-f 36/2574/420 38/2585/420 44/2586/423
-f 45/2587/423 51/2588/424 53/2589/424
-f 46/2590/423 44/2591/423 54/2592/424
-f 41/2580/422 55/2593/425 49/2594/425
-f 42/2581/422 48/2595/422 50/2596/425
-f 49/2597/425 55/2598/425 53/2589/424
-f 54/2592/424 56/2599/425 50/2600/425
-f 771/2601/426 772/2602/427 769/2603/427
-f 764/2604/428 771/2605/426 770/2606/426
-f 767/2607/429 764/2608/428 762/2609/428
-f 761/2610/430 763/2611/430 768/2612/431
-f 772/786/427 763/2613/430 761/2614/430
-f 765/2615/431 768/2616/431 757/2617/432
-f 767/2618/429 766/2619/429 759/2620/433
-f 755/2621/434 758/2622/433 759/2623/433
-f 760/2152/432 757/2624/432 756/2625/435
-f 752/2626/436 753/2627/435 756/2628/435
-f 755/2629/434 754/2630/434 751/2631/437
-f 750/2632/437 751/2633/437 746/2634/438
-f 752/2635/436 749/2636/436 748/2637/439
-f 746/2638/438 745/2639/439 748/2640/439
-f 855/2641/440 854/2642/440 853/2643/441
-f 848/2644/442 846/2645/442 854/2646/440
-f 851/2430/443 850/2647/443 846/2648/442
-f 852/2649/444 847/2650/445 845/1083/445
-f 856/2651/441 853/2652/441 845/2653/445
-f 849/2654/444 844/2655/446 841/2656/446
-f 850/2657/443 851/2658/443 842/2659/447
-f 842/2660/447 839/2661/448 838/2662/448
-f 841/2663/446 844/2664/446 837/2665/449
-f 837/2666/449 836/2667/450 833/2668/450
-f 839/2669/448 834/2670/451 835/2671/451
-f 834/2672/451 831/2673/452 830/2674/452
-f 836/2393/450 829/2675/453 832/2676/453
-f 832/2677/453 829/2678/453 830/2679/452
-f 1/2680/413 3/778/412 7/2541/413
-f 6/2681/412 4/2542/412 8/2544/413
-f 3/2682/412 17/2545/414 5/2547/412
-f 22/2554/414 18/2548/414 6/2550/412
-f 17/2545/414 11/2551/415 21/2546/414
-f 14/2571/415 12/2553/415 22/2554/414
-f 15/2564/416 9/2555/416 23/2557/417
-f 16/2567/416 24/2558/417 10/2560/416
-f 19/2556/417 1/2561/413 23/2557/417
-f 8/2683/413 2/2563/413 24/2558/417
-f 9/2555/416 15/2564/416 31/2566/418
-f 26/2578/418 16/2567/416 32/2568/418
-f 27/2572/419 13/2552/415 29/2569/419
-f 28/2575/419 30/2570/419 14/2571/415
-f 37/2684/420 27/2572/419 35/2573/420
-f 38/2585/420 36/2574/420 28/2575/419
-f 31/2566/418 25/2565/418 33/2577/421
-f 40/2582/421 26/2578/418 34/2579/421
-f 47/2685/422 33/2577/421 41/2580/422
-f 48/2595/422 42/2581/422 34/2579/421
-f 37/2684/420 35/2573/420 43/2584/423
-f 46/2686/423 36/2574/420 44/2586/423
-f 43/2687/423 45/2587/423 53/2589/424
-f 52/2688/424 46/2590/423 54/2592/424
-f 47/2685/422 41/2580/422 49/2594/425
-f 56/2689/425 42/2581/422 50/2596/425
-f 51/2588/424 49/2597/425 53/2589/424
-f 52/2688/424 54/2592/424 50/2600/425
-f 770/2690/426 771/2601/426 769/2603/427
-f 762/2691/428 764/2604/428 770/2606/426
-f 766/2692/429 767/2607/429 762/2609/428
-f 765/2693/431 761/2610/430 768/2612/431
-f 769/2694/427 772/786/427 761/2614/430
-f 760/2695/432 765/2615/431 757/2617/432
-f 758/2696/433 767/2618/429 759/2620/433
-f 754/2697/434 755/2621/434 759/2623/433
-f 753/2698/435 760/2152/432 756/2625/435
-f 749/2699/436 752/2626/436 756/2628/435
-f 750/2700/437 755/2629/434 751/2631/437
-f 747/2701/438 750/2632/437 746/2634/438
-f 745/2702/439 752/2635/436 748/2637/439
-f 747/2408/438 746/2638/438 748/2640/439
-f 856/2703/441 855/2641/440 853/2643/441
-f 855/2704/440 848/2644/442 854/2646/440
-f 848/2705/442 851/2430/443 846/2648/442
-f 849/2706/444 852/2649/444 845/1083/445
-f 847/2707/445 856/2651/441 845/2653/445
-f 852/2708/444 849/2654/444 841/2656/446
-f 843/2709/447 850/2657/443 842/2659/447
-f 843/2710/447 842/2660/447 838/2662/448
-f 840/2711/449 841/2663/446 837/2665/449
-f 840/2712/449 837/2666/449 833/2668/450
-f 838/2713/448 839/2669/448 835/2671/451
-f 835/2703/451 834/2672/451 830/2674/452
-f 833/2714/450 836/2393/450 832/2676/453
-f 831/2715/452 832/2677/453 830/2679/452
diff --git a/contrib/tinks/assets/models/textures/TTread.jpg b/contrib/tinks/assets/models/textures/TTread.jpg
deleted file mode 100644
index fb497cdd25..0000000000
Binary files a/contrib/tinks/assets/models/textures/TTread.jpg and /dev/null differ
diff --git a/contrib/tinks/assets/models/textures/tank.jpg b/contrib/tinks/assets/models/textures/tank.jpg
deleted file mode 100644
index 0d80a163aa..0000000000
Binary files a/contrib/tinks/assets/models/textures/tank.jpg and /dev/null differ
diff --git a/contrib/tinks/assets/particles/blackSmoke12.png b/contrib/tinks/assets/particles/blackSmoke12.png
deleted file mode 100644
index 576091a2a7..0000000000
Binary files a/contrib/tinks/assets/particles/blackSmoke12.png and /dev/null differ
diff --git a/contrib/tinks/assets/particles/explosion00.png b/contrib/tinks/assets/particles/explosion00.png
deleted file mode 100644
index d0fc59c8b0..0000000000
Binary files a/contrib/tinks/assets/particles/explosion00.png and /dev/null differ
diff --git a/contrib/tinks/assets/sounds/turret_fire.wav b/contrib/tinks/assets/sounds/turret_fire.wav
deleted file mode 100644
index dc0b717850..0000000000
Binary files a/contrib/tinks/assets/sounds/turret_fire.wav and /dev/null differ
diff --git a/contrib/tinks/assets/sounds/turret_ready.mp3 b/contrib/tinks/assets/sounds/turret_ready.mp3
deleted file mode 100644
index ff21920fed..0000000000
Binary files a/contrib/tinks/assets/sounds/turret_ready.mp3 and /dev/null differ
diff --git a/contrib/tinks/assets/textures/blast.png b/contrib/tinks/assets/textures/blast.png
deleted file mode 100644
index 64322a2253..0000000000
Binary files a/contrib/tinks/assets/textures/blast.png and /dev/null differ
diff --git a/contrib/tinks/assets/textures/fastgras01.png b/contrib/tinks/assets/textures/fastgras01.png
deleted file mode 100644
index f64b137af8..0000000000
Binary files a/contrib/tinks/assets/textures/fastgras01.png and /dev/null differ
diff --git a/contrib/tinks/assets/textures/splash.png b/contrib/tinks/assets/textures/splash.png
deleted file mode 100644
index a1878dd280..0000000000
Binary files a/contrib/tinks/assets/textures/splash.png and /dev/null differ
diff --git a/contrib/tinks/bin/.gitignore b/contrib/tinks/bin/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/contrib/tinks/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/contrib/tinks/doc/tinks3d.png b/contrib/tinks/doc/tinks3d.png
deleted file mode 100644
index 950a7aaab9..0000000000
Binary files a/contrib/tinks/doc/tinks3d.png and /dev/null differ
diff --git a/contrib/tinks/net.xymus.tinks.txt b/contrib/tinks/net.xymus.tinks.txt
deleted file mode 100644
index ceed2bce7a..0000000000
--- a/contrib/tinks/net.xymus.tinks.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Categories:Nit,Games
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/tinks
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Multiplayer crossplatform action game with destructible procedurally generated worlds
-Description:
-Each player controls a tank, opens fire from the turret and navigates between the terrain features.
-Explosions from turret fire and tank destruction have different forces and destroy the terrain.
-Each tank needs 4 hits to be destroyed.
-Destroyed tanks drop health power-ups which can repair other tanks.
-.
diff --git a/contrib/tinks/package.ini b/contrib/tinks/package.ini
deleted file mode 100644
index d4daf5f187..0000000000
--- a/contrib/tinks/package.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name=tinks
-tags=game
-maintainer=Alexis Laferrière
-license=Apache-2.0
-desc=Tinks! a multiplayer crossplatform action game with destructible procedurally generated worlds
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/tinks/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/tinks/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/tinks.apk
diff --git a/contrib/tinks/src/client/base.nit b/contrib/tinks/src/client/base.nit
deleted file mode 100644
index 29f40c34c5..0000000000
--- a/contrib/tinks/src/client/base.nit
+++ /dev/null
@@ -1,80 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Shader client code to manage the game context
-module base
-
-import app
-
-import context
-
-redef class App
-
- # Context of the game, either local or remote
- var context: GameContext is lazy do
-
- # Server info
- var address = null
- var port = default_listening_port
-
- if args.not_empty then
- # Use first argument as the server address
- address = args[0]
- if args.length > 1 then port = args[1].to_i
- else
- print "Looking for a server..."
-
- var servers = discover_local_servers
- if servers.not_empty then
- address = servers.first.address
- port = servers.first.port
- end
- end
-
- if address == null then
- print "Launching a local server"
-
- # No command line
- return new LocalServerContext
- else
- print "Connecting to {address}:{port}"
-
- # Args are: tinks server_address {port}
- if args.length > 1 then port = args[1].to_i
-
- # Setup connection config
- var server_config = new RemoteServerConfig(address, port)
- var server = new RemoteServer(server_config)
-
- # Connect then complete handshake
- assert server.connect else print_error "Connection to server failed with {server.socket.last_error or else "none"}"
- assert server.handshake else print_error "Handshake with server failed"
-
- # Download and setup remote game
- var context = new RemoteGameContext(server)
- context.setup
-
- return context
- end
- end
-
- # `Tank` of the local player, if any
- fun local_tank: nullable Tank
- do
- # FIXME use a ? to one line this
- var local_player = context.local_player
- if local_player == null then return null
- return local_player.tank
- end
-end
diff --git a/contrib/tinks/src/client/client3d.nit b/contrib/tinks/src/client/client3d.nit
deleted file mode 100644
index 4f63709c8f..0000000000
--- a/contrib/tinks/src/client/client3d.nit
+++ /dev/null
@@ -1,547 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# 3D client for Tinks!
-module client3d is
- app_name "Tinks! 3D"
- app_namespace "org.nitlanguage.tinks3d"
- app_version(1, 0, git_revision)
-
- android_api_target 10
- android_manifest """"""
-end
-
-import gamnit::depth
-
-import base
-
-redef class App
-
- # ---
- # Config
-
- # Maximum distance from the camera to hear events and display explosions
- private var far_dist2 = 2000.0
-
- # Approximate maximum distance from the camera to display features
- private var features_radius = 24
-
- # ---
- # Models
-
- # Models of rocks
- var models_rock = [
- new Model("models/Tall_Rock_1_01.obj"),
- new Model("models/Tall_Rock_2_01.obj"),
- new Model("models/Tall_Rock_3_01.obj"),
- new Model("models/Tall_Rock_4_01.obj")]
-
- # Models of trees
- var models_tree = [
- new Model("models/Oak_Dark_01.obj"),
- new Model("models/Oak_Green_01.obj"),
- new Model("models/Large_Oak_Dark_01.obj"),
- new Model("models/Large_Oak_Green_01.obj")]
-
- # Models of the debris left by a destroyed tank
- var models_debris = [
- new Model("models/debris0.obj"),
- new Model("models/debris1.obj")]
-
- # Model the health pickup
- var model_health = new Model("models/health.obj")
-
- # Model of the tank base (without the turret)
- var model_tank_base = new Model("models/tank.obj")
-
- # Model of the tank turret
- var model_tank_turret = new Model("models/tank-turret.obj")
-
- # Blast effect on the ground after an explosion
- private var blast_texture = new Texture("textures/blast.png")
- private var blast_material: TexturedMaterial do
- var mat = new TexturedMaterial([1.0]*4, [0.0]*4, [0.0]*4)
- mat.ambient_texture = blast_texture
- return mat
- end
- private var blast_model = new LeafModel(new Plane, blast_material)
-
- # ---
- # Particle effects
-
- # Explosion image for particle effect
- private var texture_explosion = new Texture("particles/explosion00.png")
-
- # Explosion particles
- var explosion_system = new ParticleSystem(20, explosion_program, texture_explosion)
-
- # Explosion image for particle effect
- private var texture_smoke = new Texture("particles/blackSmoke12.png")
-
- # Explosion particles
- var smoke_system = new ParticleSystem(200, smoke_program, texture_smoke)
-
- # ---
- # Sounds
-
- # Firing sound
- var turret_fire = new Sound("sounds/turret_fire.wav")
-
- # Turret is ready to fire sound
- var turret_ready = new Sound("sounds/turret_ready.mp3")
-
- # ---
- # Scene objects
-
- # Ground
- var ground: Actor is noinit
- private var ground_texture = new Texture("textures/fastgras01.png")
-
- # All `Feature` with an associated model, to be drawn on screen
- var features_in_sight = new Set[Feature]
-
- redef fun on_create
- do
- super
-
- # Show splash screen
- var logo = new Texture("textures/splash.png")
- show_splash_screen logo
-
- # Load everything
- for texture in all_root_textures do
- texture.load
- var error = texture.error
- if error != null then print_error error
- end
- for model in models do
- model.load
- if model.errors.not_empty then print_error model.errors.join("\n")
- end
-
- # Modify all textures so they have a higher ambient color
- for model in models do
- for leaf in model.leaves do
- var mat = leaf.material
- if mat isa TexturedMaterial then
- var mod = 0.25
- mat.ambient_color[0] = mat.diffuse_color[0] * mod
- mat.ambient_color[1] = mat.diffuse_color[1] * mod
- mat.ambient_color[2] = mat.diffuse_color[2] * mod
-
- var tex = mat.diffuse_texture
- if tex != null then mat.ambient_texture = tex
- end
- end
- end
-
- # Setup ground
- # TODO we may need to move this plane if the player goes far from the center
- var ground_mesh = new Plane
- ground_mesh.repeat_x = 1000.0
- ground_mesh.repeat_y = 1000.0
-
- var ground_material = new TexturedMaterial(
- [0.0, 0.1, 0.0, 1.0], [0.4, 0.4, 0.4, 1.0], [0.0]*4)
- ground_material.diffuse_texture = ground_texture
-
- var ground_model = new LeafModel(ground_mesh, ground_material)
- var ground = new Actor(ground_model, new Point3d[Float](0.0, 0.0, 0.0))
- ground.scale = 5000.0
-
- self.ground = ground
- actors.add ground
-
- # Config the view
- world_camera.near = 0.1
-
- # Sky color
- glClearColor(100.0/256.0, 120.0/256.0, 224.0/256.0, 1.0)
-
- # Move the sun a bit off right above
- light.position.x = 1000.0
- light.position.z = 500.0
-
- # Register our two systems
- particle_systems.add explosion_system
- particle_systems.add smoke_system
-
- # Connect to server (or launch one) and assign models to rules
- var context = context
- context.game.story.assign_models
- end
-
- redef fun update(dt)
- do
- # Game logic
- var turn = context.do_turn
- for event in turn.events do event.client_react
-
- # Is the player alive?
- var local_player = context.local_player
- var local_tank = null
- if local_player != null then local_tank = local_player.tank
-
- if local_tank != null then
- # Update camera position above the tank
- var pos = local_tank.pos
- world_camera.position.x = pos.x
- world_camera.position.z = pos.y
- world_camera.yaw = 1.5 * pi - local_tank.heading
- world_camera.position.y = 1.8
- end
- end
-
- redef fun accept_event(event)
- do
- # Let `pressed_keys` be populated first
- var s = super
-
- var local_player = context.local_player
- var local_tank = null
- if local_player != null then local_tank = local_player.tank
-
- # Quit game?
- if event isa QuitEvent or (event isa KeyEvent and event.name == "escape") then
- exit 0
- end
-
- if event isa KeyEvent then
- # Move tank?
- var direction_change = ["w", "a", "s", "d"].has(event.name)
- if direction_change and local_tank != null and local_player != null then
- var forward = pressed_keys.has("w")
- var backward = pressed_keys.has("s")
- var left = pressed_keys.has("a")
- var right = pressed_keys.has("d")
-
- # Cancel contradictory commands
- if forward and backward then
- forward = false
- backward = false
- end
-
- if left and right then
- left = false
- right = false
- end
-
- # Set movement and direction
- var move = 0.0
- if forward then
- move = 0.5
- else if backward then move = -0.5
-
- var ori = 0.0
- if left then
- ori = -local_tank.rule.max_direction/2.0
- else if right then ori = local_tank.rule.max_direction/2.0
-
- # Activate to invert the orientation on reverse, (for @R4p4Ss)
- #if backward then ori = -ori
-
- # Bonus when only moving or only turning
- if not forward and not backward then ori *= 2.0
- if not left and not right then move *= 2.0
-
- # Give order
- local_player.orders.add new TankDirectionOrder(local_tank, ori, move)
- return true
- end
-
- # Open fire?
- if event.name == "space" and local_tank != null and event.is_down then
- if local_player == null then return false
-
- # Open fire
- var heading = local_tank.heading
- var dist = 200.0
- var target = new Pos(local_tank.pos.x + dist*heading.cos, local_tank.pos.y + dist*heading.sin)
- local_player.orders.add new AimAndFireOrder(local_tank, target)
- end
- end
-
- # Open fire with a target?
- if event isa PointerEvent and event.pressed and not event.is_move then
- if local_player == null then return false
-
- var display = display
- if display == null then return false
-
- if local_tank == null then
- local_player.orders.add new SpawnTankOrder(local_player)
- return true
- end
-
- # Compute approximate target
- var dx = event.x / display.width.to_f
- dx = dx * 2.0 - 1.0 # center of the screen
- var fovx = display.aspect_ratio * world_camera.field_of_view_y
- fovx *= 0.8
- var heading = local_tank.heading + dx * fovx
-
- var dy = event.y / display.height.to_f
- dy = dy - 0.5
- if dy >= 0.0 then
- var ty = dy * world_camera.field_of_view_y
- var dist = world_camera.position.y / ty.tan / 1.6
- if dist > 200.0 then dist = 200.0
-
- # Issue fire order
- var target = new Pos(local_tank.pos.x + dist*heading.cos, local_tank.pos.y + dist*heading.sin)
- local_player.orders.add new AimAndFireOrder(local_tank, target)
- end
- end
-
- return s
- end
-end
-
-# ---
-# Story and rules (meta game objects)
-
-redef class FeatureRule
- # Models of different alternatives
- var models: Array[Model] is noinit
-end
-
-redef class TankRule
- # Models of the tank base
- var base_model: Model is noinit
-
- # Models of the turret
- var turret_model: Model is noinit
-end
-
-redef class Story
-
- # Assign models from `app` to the corresponding rules
- fun assign_models
- do
- tree.models = app.models_tree
- rock.models = app.models_rock
- debris.models = app.models_debris
-
- for tank in tanks do
- tank.base_model = app.model_tank_base
- tank.turret_model = app.model_tank_turret
- end
-
- health.models = [app.model_health]
- end
-end
-
-# ---
-# Game entities
-
-redef class Feature
- # Actor representing this feature, if in sight
- var actor: nullable Actor = null
-
- # Instantiate `actor` and add it to the 3D world
- fun add_actor_to_scene
- do
- app.features_in_sight.add self
-
- var actor = actor
- if actor != null then
- # Reuse existing actor
- if not app.actors.has(actor) then app.actors.add actor
- return
- end
-
- # Apply a random model and rotation to new features
- actor = new Actor(rule.models.rand,
- new Point3d[Float](pos.x, 0.0, pos.y))
- actor.yaw = 2.0*pi.rand
- actor.scale = 0.75
-
- self.actor = actor
- app.actors.add actor
- end
-
- # Remove `actor` from the `actors` list as it will net be used anymore
- fun destroy_actor
- do
- var actor = actor
- if actor != null then
- app.actors.remove actor
- self.actor = null
- end
- end
-end
-
-redef class Tank
- # Actors representing this tank, both the base and the turret
- var actors: Array[Actor] is lazy do
- var actors = new Array[Actor]
- var actor = new Actor(app.model_tank_base, new Point3d[Float](0.0, 0.0, 0.0))
- app.actors.add actor
- actors.add actor
-
- var tank_turret = new Actor(app.model_tank_turret, new Point3d[Float](0.0, 0.0, 0.0))
- app.actors.add tank_turret
- actors.add tank_turret
- return actors
- end
-end
-
-# ---
-# Events
-
-redef class TEvent
- private fun client_react do end
-end
-
-redef class FeatureChangeEvent
- redef fun client_react
- do
- var old_feature = old_feature
- if old_feature != null then old_feature.destroy_actor
-
- var feature = feature
- if feature != null then feature.add_actor_to_scene
- end
-end
-
-redef class ExplosionEvent
- redef fun client_react
- do
- for feature in destroyed_features do feature.destroy_actor
-
- # Particles
- app.explosion_system.add(new Point3d[Float](pos.x, 1.0, pos.y), 4096.0, 0.3)
- for i in 8.times do
- app.explosion_system.add(
- new Point3d[Float](pos.x & 1.0, 1.0 & 1.0, pos.y & 1.0),
- 2048.0 & 1024.0, 0.3 & 0.1)
- end
-
- # Blast mark on the ground
- var blast = new Actor(app.blast_model, new Point3d[Float](pos.x, 0.05 & 0.04, pos.y))
- blast.scale = 3.0
- blast.yaw = 2.0*pi.rand
- app.actors.add blast
-
- # Smoke
- for s in 32.times do
- var dt = 0.2 * s.to_f + 0.1.rand
- app.smoke_system.add(
- new Point3d[Float](pos.x & 0.2, 0.0, pos.y & 0.2),
- 1024.0 & 512.0, 10.0 & 4.0, dt)
- end
- end
-end
-
-redef class OpenFireEvent
- redef fun client_react
- do
- if tank.pos.dist2_3d(app.world_camera.position) < app.far_dist2 then
- # Within earshot
- app.turret_fire.play
-
- # Particle
- var d = 1.7
- var a = tank.turret.heading - 0.025 # Correct to center the art
- var pos = new Point3d[Float](tank.pos.x + d*a.cos, 1.25, tank.pos.y + d*a.sin)
- app.explosion_system.add(pos, 0.75*256.0, 0.15)
- end
- end
-end
-
-redef class TurretReadyEvent
- redef fun client_react
- do
- if tank.pos.dist2_3d(app.world_camera.position) < app.far_dist2 then
- # Within earshot
- app.turret_ready.play
- end
- end
-end
-
-redef class TankMoveEvent
- redef fun client_react
- do
- var pos = tank.pos
- for actor in tank.actors do
- actor.center.x = pos.x
- actor.center.z = pos.y
- end
-
- tank.actors[0].yaw = -tank.heading + pi
- tank.actors[1].yaw = -tank.turret.heading + pi
-
- # Keep going only for the local tank
- var local_player = app.context.local_player
- if local_player != tank.player then return
-
- var center = tank.pos
- var d = app.features_radius
- var l = center.x.to_i - d
- var r = center.x.to_i + d
- var t = center.y.to_i - d
- var b = center.y.to_i + d
-
- # Remove out of range features
- for feature in app.features_in_sight.to_a do
- var x = feature.pos.x.to_i
- var y = feature.pos.y.to_i
- if x < l or x > r or y < t or y > b then
- var actor = feature.actor
- app.actors.remove actor
- app.features_in_sight.remove feature
- end
- end
-
- # Add newly in range features
- for x in [l..r[ do
- for y in [t..b[ do
- var feature = app.context.game.world[x, y]
- if feature != null then
- feature.add_actor_to_scene
- end
- end
- end
- end
-end
-
-redef class TankDeathEvent
- redef fun client_react
- do
- for actor in tank.actors do app.actors.remove actor
- tank.actors.clear
- end
-end
-
-# ---
-# Misc services
-
-redef class Point[N]
- # Square of the distance to 3D coordinates `other`
- #
- # Same as `dist2` but using `other.z` as the Y value
- # to adapt from the flat plane on X/Y to X/Z.
- private fun dist2_3d(other: Point3d[Numeric]): N
- do
- var dx = other.x.sub(x)
- var dy = other.z.sub(y)
- var s = (dx.mul(dx)).add(dy.mul(dy))
- return x.value_of(s)
- end
-end
-
-redef class Float
- # Fuzzy value in `[self-variation..self+variation]`
- fun &(variation: Float): Float do return self - variation + 2.0*variation.rand
-end
diff --git a/contrib/tinks/src/client/context.nit b/contrib/tinks/src/client/context.nit
deleted file mode 100644
index a8323ebc4b..0000000000
--- a/contrib/tinks/src/client/context.nit
+++ /dev/null
@@ -1,116 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Provides context to abstract the exchanges with a local game or a remote game
-module context
-
-import gamnit::network
-
-import game
-intrude import game::players
-import server
-
-# Interface to a game
-abstract class GameContext
-
- # The current game
- var game: TGame
-
- # The local player on this client, if any
- var local_player: nullable Player = null
-
- # Do a turn
- fun do_turn: TTurn is abstract
-end
-
-# Simple local single-player game
-class LocalGameContext
- super GameContext
-
- noautoinit
-
- init
- do
- # Create basic game
- game = new TGame
- var setup_turn = game.do_turn
-
- var local_player = new Player
- game.players.add local_player
- self.local_player = local_player
- setup_turn.spawn_tank local_player
- end
-
- redef fun do_turn do return game.do_turn
-end
-
-# Multiplayer game running on a remote server
-class RemoteGameContext
- super GameContext
-
- autoinit remote_server
-
- # Remote server that controls the `game`
- var remote_server: RemoteServer
-
- # Setup `game` from `remote_server`
- fun setup
- do
- var game = remote_server.reader.deserialize
- var errors = remote_server.reader.errors
- assert errors.is_empty else print_error errors.join("\n")
- assert game isa TGame else print_error "Server sent a {game.class_name}"
- self.game = game
-
- var local_player = remote_server.reader.deserialize
- errors = remote_server.reader.errors
- assert errors.is_empty else print_error errors.join("\n")
- assert local_player isa Player else print_error "Server sent a {local_player.class_name}"
- self.local_player = local_player
- end
-
- redef fun do_turn
- do
- # Get turn from server
- var turn = remote_server.reader.deserialize
- var errors = remote_server.reader.errors
- assert errors.is_empty else print_error errors.join("\n")
- assert turn isa TTurn else print_error "Server sent a {turn.class_name}"
-
- # Apply the turn locally
- game.apply_turn turn
-
- # Send orders to server
- var local_player = local_player
- if local_player != null and local_player.orders.not_empty then
- remote_server.writer.serialize local_player.orders
- remote_server.socket.flush
- local_player.orders = new Array[TOrder]
- end
-
- return turn
- end
-end
-
-# Local game ran by a server accepting other clients
-class LocalServerContext
- super LocalGameContext
-
- # The server managing the game and other clients
- var server = new Server(default_listening_port)
-
- init do server.game = game
-
- redef fun do_turn do return server.do_turn
-end
diff --git a/contrib/tinks/src/client/tinks_vr.nit b/contrib/tinks/src/client/tinks_vr.nit
deleted file mode 100644
index 0e2a300899..0000000000
--- a/contrib/tinks/src/client/tinks_vr.nit
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# VR mode for Android with Google Cardboard
-#
-# This version is not playable and very laggy as it is not modified
-# or optimized in any way for VR.
-# This module is made available as a minimal example of a VR game.
-module tinks_vr
-
-import gamnit::vr
diff --git a/contrib/tinks/src/common.nit b/contrib/tinks/src/common.nit
deleted file mode 100644
index e7a82c9fb5..0000000000
--- a/contrib/tinks/src/common.nit
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services common to the client and server
-module common
-
-import gamnit::network
-
-redef class Sys
- # Name of this app
- redef fun handshake_app_name do return "tinks"
-
- redef fun handshake_app_version do return "0.1"
-
- # Default listening port of the server
- fun default_listening_port: Int do return 18721
-
- redef fun discovery_port do return 18722
-end
diff --git a/contrib/tinks/src/game/framework.nit b/contrib/tinks/src/game/framework.nit
deleted file mode 100644
index df30aac6cd..0000000000
--- a/contrib/tinks/src/game/framework.nit
+++ /dev/null
@@ -1,138 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Structure of a client/server game, based on turns, events, orders and rules
-module framework is serialize
-
-import geometry
-import realtime
-
-# Main game object containing the world, players and tanks
-#
-# The game object is shared by both the client and the server.
-# So a method using the game object as visitor is to be executed client-side.
-class TGame
-
- # `Story`, or rule book, with all the stats for this game
- var story = new Story
-
- # `Clock` timing the elapsed time between turns
- private var clock = new Clock is noserialize
-
- # Tick count of the last turn (The first turn as a tick of 0)
- var tick = -1
-
- # Execute the next turn and return it as a `TTurn`
- #
- # This is to be executed server-side only.
- fun do_turn: TTurn
- do
- var dt = clock.lapse
- tick += 1
-
- var turn = new TTurn(self, tick, dt, ((dt-dt.floor)*1000.0).to_i)
- return turn
- end
-
- # Apply `turn` locally by updating `tick` and applying all events
- #
- # This is to be executed client-side only.
- fun apply_turn(turn: TTurn)
- do
- tick = turn.tick
- for event in turn.events do event.apply self
- end
-end
-
-# A single turn of a `TGame`
-#
-# The turn object is created and populated by the server (using `TGame::do_turn`).
-# It is transmitted to the client but it cannot modify it.
-# So methods using the turn object as visitor are to be executed server-side.
-class TTurn
-
- # `TGame` of which `self` is part of
- var game: TGame
-
- # Tick of this turn
- var tick: Int
-
- # Elapsed seconds since previous turn (as a `Float`)
- var dts: Float
-
- # Elapsed milliseconds since previous turn (as a `Int`)
- var dt: Int
-
- # `TEvent` that happened during this turn
- #
- # Events are added using `add`.
- # This information is used to apply the turn client-side to update its game object.
- # It is also used by effects on the UI and could be used by an AI.
- var events: SequenceRead[TEvent] = new Array[TEvent]
-
- # Add an `event` to `events` and apply it right away server-side
- fun add(event: TEvent)
- do
- event.apply game
- events.as(Array[TEvent]).add event
- end
-end
-
-# Game event sent from the server to the client
-class TEvent
-
- # Executed client-side to apply this event on the `game`
- fun apply(game: TGame) do end
-end
-
-# An order sent from the client to the server
-class TOrder
-
- # Apply order server-side on `turn`, usually spawns `GameEvent`
- fun apply(turn: TTurn) do end
-end
-
-# An entity acting on each turn
-class TTurnable
-
- # Act on `turn`
- fun do_turn(turn: TTurn) do end
-end
-
-# A collection of `Rule` guiding the game
-#
-# Changing the story could (in theory) be enough to completely change the context of the game.
-# In _Tinks!_ however, we use this class lightly and fill it with static content.
-class Story
-end
-
-# Metadata of in game `Ruled` entities, keep their stats and assets in a single place
-class Rule
-
- # `Story` to which `self` belongs
- var story: Story
-end
-
-# A game entity with metadata in its `rule`
-class Ruled
-
- # Kind of `Rule` for `rule`
- type R: Rule
-
- # Metadata of this entity
- var rule: R
-end
-
-# Should the game show more information for debugging?
-fun debug: Bool do return false
diff --git a/contrib/tinks/src/game/game.nit b/contrib/tinks/src/game/game.nit
deleted file mode 100644
index 06a0a09929..0000000000
--- a/contrib/tinks/src/game/game.nit
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import tanks
-import players
-import world
-import powerups
diff --git a/contrib/tinks/src/game/players.nit b/contrib/tinks/src/game/players.nit
deleted file mode 100644
index ac5bb7639f..0000000000
--- a/contrib/tinks/src/game/players.nit
+++ /dev/null
@@ -1,149 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Player related and tank spawning logic
-module players is serialize
-
-import tanks
-
-redef class TGame
-
- # All the known players in the game
- var players = new Array[Player]
-
- redef fun do_turn
- do
- var turn = super
- for player in players do
- player.do_turn turn
- end
- return turn
- end
-end
-
-redef class TTurn
-
- # Range around the center of the world (0, 0) where a tank can spawn
- var spawn_range = 256.0
-
- # Spawn a new tank for `player`
- fun spawn_tank(player: Player)
- do
- var pos = new Pos(spawn_range.rand, spawn_range.rand)
- var tank = new Tank(game.story.tanks.rand, pos, 2.0*pi.rand)
-
- if tank.next_move_collisions(self).not_empty then
- # Clear the way
- game.world.explode(self, pos, 3)
- end
-
- add new TankSpawnEvent(tank, player)
- end
-end
-
-# A player in the game
-class Player
- super TTurnable
-
- # Queue of orders to apply at the end of the turn
- var orders = new Array[TOrder]
-
- # The tank controlled by this player, if any
- var tank: nullable Tank = null
-
- # Index of the "unique" player stencil applied on all its tanks
- var stencil_index: Int do
- var counter = once new Ref[Int](0)
- var val = counter.item
- counter.item = (counter.item+1) % 4
- return val
- end
-
- redef fun do_turn(turn)
- do
- # Apply orders if they are legal
- for order in orders do
- if order.is_legal(turn.game, self) then
- order.apply turn
- else print "Server Warning: Order {order} is now illegal"
- end
-
- orders.clear
- end
-end
-
-redef class Tank
- # The player controlling this tank, if any
- var player: nullable Player = null
-end
-
-redef class TOrder
-
- # Is this order (still) legal?
- #
- # This is executed client-side.
- fun is_legal(game: TGame, issed_by: Player): Bool do return true
-end
-
-redef abstract class TankOrder
- redef fun is_legal(game, issed_by) do return issed_by == tank.player
-end
-
-# A request to spawn a new tank
-class SpawnTankOrder
- super TOrder
-
- # Requester
- var player: Player
-
- redef fun is_legal(turn, issed_by) do return issed_by == player and player.tank == null
-
- redef fun apply(turn)
- do
- turn.spawn_tank player
- end
-end
-
-# A new tank appeared
-class TankSpawnEvent
- super TEvent
-
- # The new tank
- var tank: Tank
-
- # The `tank` owner
- var player: nullable Player
-
- redef fun apply(game)
- do
- var player = player
- if player != null then player.tank = tank
- tank.player = player
- game.tanks.add tank
- end
-end
-
-redef class TankDeathEvent
-
- redef fun apply(game)
- do
- super
-
- # `player` has no tank anymore
- var player = tank.player
- if player != null then
- player.tank = null
- end
- end
-end
diff --git a/contrib/tinks/src/game/powerups.nit b/contrib/tinks/src/game/powerups.nit
deleted file mode 100644
index 8fc5af7f16..0000000000
--- a/contrib/tinks/src/game/powerups.nit
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Support for pickable powerups (only health for now)
-module powerups is serialize
-
-import tanks
-
-# A powerup item
-class Powerup
- super Feature
- redef type R: PowerupRule
-end
-
-# Metadata of a powerup item
-class PowerupRule
- super FeatureRule
-
- # Restore all health when picked up
- var restore_health: Bool
-end
-
-redef class Story
- # A powerup that restores all health
- var health = new PowerupRule(self, 2, true)
-
- # All `PowerupRule` in this story
- var powerups: Array[PowerupRule] = [health]
-end
-
-redef class Tank
-
- redef fun destroy(turn)
- do
- super
-
- # Put a random powerup at the center of the old tank
- var pos = new Pos(pos.x.floor+0.5, pos.y.floor+0.5)
- var powerup = new Powerup(turn.game.story.powerups.rand, pos)
- turn.add new FeatureChangeEvent(powerup, null, pos)
-
- # Add some debris around it
- var forward = new Pos((pos.x+heading.cos*1.1).floor+0.5, (pos.y+heading.sin*1.1).floor+0.5)
- var backward = new Pos((pos.x-heading.cos*1.1).floor+0.5, (pos.y-heading.sin*1.1).floor+0.5)
- turn.add new FeatureChangeEvent(new Feature(turn.game.story.debris, forward), null, forward)
- turn.add new FeatureChangeEvent(new Feature(turn.game.story.debris, backward), null, backward)
- end
-
- # Intercept collision detection of "absorb" powerups
- #
- # This is a wee bit hackish.
- # The collision detection on tank move can return a max of 4 items (1 per side).
- # If there is powerups, they may have hidden other features.
- # This could cause the tank to move over a feature and get stuck.
- # This is not a big problem as the tank can open fire to liberate itself,
- # or even simply go back as the speed is static.
- redef fun next_move_collisions(turn)
- do
- var collisions = super
- if collisions.is_empty then return collisions
-
- for coll in collisions do if not coll isa Powerup then
- # An unavoidable collision
- return collisions
- end
-
- # Only powerups! absorb them
- for powerup in collisions do
- if powerup isa Powerup then
- turn.add new FeatureChangeEvent(null, powerup, powerup.pos)
-
- if powerup.rule.restore_health then
- turn.add new TankHealthChange(self, rule.max_health)
- end
- end
- end
-
- return new HashSet[Feature]
- end
-end
diff --git a/contrib/tinks/src/game/tanks.nit b/contrib/tinks/src/game/tanks.nit
deleted file mode 100644
index 9970941cbd..0000000000
--- a/contrib/tinks/src/game/tanks.nit
+++ /dev/null
@@ -1,386 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Tank and tank turret related logic
-module tanks is serialize
-
-import world
-
-redef class TGame
- # All of the tanks in game
- var tanks = new TankSet
-
- redef fun do_turn
- do
- var turn = super
- for tank in tanks do tank.do_turn turn
- return turn
- end
-end
-
-# Stats of a tank kind, its config should be move to the `Story` if we want more than 1
-class TankRule
- super Rule
-
- # Width of this tank
- var width: Float = 64.0/32.0
-
- # Height of this tank
- var length: Float = 100.0/32.0
-
- # Maximum `health` this tank can normally have
- var max_health = 4
-
- # Maximum speed of this tank (in world coordinate units per seconds)
- var max_speed = 2.0
-
- # Turret turning speed (in radians per second)
- var turret_turn_speed = 1.6
-
- # Waiting time between shots can be fired
- var turret_cooldown_time = 2.0
-
- # Maximum `direction_heading` heading, may be double
- var max_direction = 1.0
-end
-
-redef class Story
- # The main (and only) tank configuration in this game
- var tanks: Array[TankRule] = [new TankRule(self)]
-end
-
-# A tank!
-class Tank
- super TTurnable
- super Ruled
- redef type R: TankRule
-
- # In world `Pos` of this entity
- var pos: Pos
-
- # Orientation of this entity
- var heading: Float
-
- # The turret mounted on this tank
- var turret = new Turret(self)
-
- # Commanded direction
- var direction_heading = 0.0
-
- # Commanded speed
- var direction_forwards = 0.0
-
- # Health of this tank, out of `rule.max_health`
- var health: Int = rule.max_health is lazy
-
- redef fun do_turn(turn)
- do
- var collisions = next_move_collisions(turn)
-
- if collisions.is_empty then
- var next = normal_next_pos(turn)
- self.pos = next.first
- self.heading = next.second
- end
-
- turret.do_turn turn
-
- if health > 0 then
- turn.add new TankMoveEvent(self, pos, direction_heading, direction_forwards, heading, turret.relative_heading)
- end
- end
-
- # What would be the next position if not blocked by terrain features?
- #
- # Returns a couple of the new position and heading.
- fun normal_next_pos(turn: TTurn): Couple[Pos, Float]
- do
- var heading = (heading + direction_heading * turn.dts).angle_normalize
-
- var speed = direction_forwards * rule.max_speed * turn.dts
- var pos = pos
- if speed != 0.0 then
- pos += heading.to_vector(speed)
- end
-
- return new Couple[Pos, Float](pos, heading)
- end
-
- # Damage this tank, server-side
- fun hit(turn: TTurn)
- do
- var damage = 1
- var health = health - damage
-
- if health <= 0 then
- destroy turn
- else
- turn.add new TankHealthChange(self, health)
- end
- end
-
- # Destroy this tank, server-side
- fun destroy(turn: TTurn)
- do
- turn.add new TankDeathEvent(self)
- turn.game.world.explode(turn, pos, 3)
- end
-
- # Collisions on the next move
- fun next_move_collisions(turn: TTurn): HashSet[Feature]
- do
- var next = normal_next_pos(turn)
- var features = new HashSet[Feature]
-
- # Use the lines between the corners to detect collisions
- var corners = corners_at(next)
- var prev_corner = corners.last
- for corner in corners do
- var feature = turn.game.world.first_collision(prev_corner, corner)
- if feature != null then features.add feature
- prev_corner = corner
- end
-
- return features
- end
-
- # Get the 4 corners at a `next` position
- fun corners_at(next: Couple[Pos, Float]): Array[Pos]
- do
- var next_pos = next.first
- var heading = next.second
-
- var corners = new Array[Pos]
-
- var hwy = rule.width/2.0 * (heading+pi/2.0).sin
- var hwx = rule.width/2.0 * (heading+pi/2.0).cos
- var hly = rule.length/2.0 * heading.sin
- var hlx = rule.length/2.0 * heading.cos
- corners.add new Pos(next_pos.x + hlx + hwx, next_pos.y + hly + hwy)
- corners.add new Pos(next_pos.x + hlx - hwx, next_pos.y + hly - hwy)
- corners.add new Pos(next_pos.x - hlx - hwx, next_pos.y - hly - hwy)
- corners.add new Pos(next_pos.x - hlx + hwx, next_pos.y - hly + hwy)
-
- return corners
- end
-end
-
-# A tank turret
-class Turret
- super TTurnable
-
- # The `Tank` on which is mounted this turret
- var tank: Tank
-
- # Orientation of this turret relative to the tank
- var relative_heading = 0.0
-
- # Absolute orientation of this turret
- fun heading: Float do return (tank.heading+relative_heading).angle_normalize
-
- # Current target to aim for and fire upon
- var target: nullable Pos = null
-
- # Seconds left before the turret can open fire again
- var cooldown = 0.0
-
- redef fun do_turn(turn)
- do
- if cooldown > 0.0 then
- cooldown = cooldown - turn.dts
-
- if cooldown <= 0.0 then
- cooldown = 0.0
-
- # Notify clients
- turn.add new TurretReadyEvent(tank)
- end
- end
-
- var target = target
- if target != null then
-
- var angle_to_target = tank.pos.atan2(target)
- var d = (heading - angle_to_target).angle_normalize
-
- var max_angle = tank.rule.turret_turn_speed * turn.dts
- if d.abs < max_angle then
- self.relative_heading = angle_to_target - tank.heading
-
- if cooldown == 0.0 then
- # On target, fire
- fire turn
- self.target = null
- end
- else
- # Turn towards target
- if d < 0.0 then
- self.relative_heading += max_angle
- else self.relative_heading -= max_angle
- end
- end
- end
-
- # Open fire!
- fun fire(turn: TTurn)
- do
- var dst = target
- assert dst != null
-
- # Is there something between the tank and the target?
- var hit = turn.game.world.first_collision(tank.pos, dst)
- if hit != null then dst = hit.pos
-
- # Events!
- turn.add new OpenFireEvent(tank)
- turn.game.world.explode(turn, dst, 2)
-
- # The turret need time to reload, cooldown!
- cooldown = tank.rule.turret_cooldown_time
- end
-end
-
-redef class World
- redef fun explode(turn, center, force)
- do
- super
-
- for tank in game.tanks do
- if tank.health == 0 then continue
- if center.dist(tank.pos) <= force.to_f + 1.0 then
- tank.hit turn
- end
- end
- end
-end
-
-# A collection of `Tank` that could be optimized
-class TankSet
- super HashSet[Tank]
-end
-
-# A `tank` centric order
-abstract class TankOrder
- super TOrder
-
- # The `Tank` at the center of this order
- var tank: Tank
-end
-
-# A command to change the behavior of `tank`
-class TankDirectionOrder
- super TankOrder
-
- # Desired direction, in [-1.0..1.0]
- var direction_heading: Float
-
- # Desired speed, in [-1.0..1.0]
- var direction_forwards: Float
-
- redef fun apply(game)
- do
- # TODO use events
- var direction_heading = direction_heading
- direction_heading = direction_heading.clamp(-1.0, 1.0)
- tank.direction_heading = direction_heading*tank.rule.max_direction
-
- var direction_forwards = direction_forwards
- direction_forwards = direction_forwards.clamp(-1.0, 1.0)
- tank.direction_forwards = direction_forwards*tank.rule.max_speed
- end
-end
-
-# Order to aim and fire at `target`
-class AimAndFireOrder
- super TankOrder
-
- # Target for the turret
- var target: Pos
-
- redef fun apply(game)
- do
- tank.turret.target = target
- end
-end
-
-# A `tank` centric event
-abstract class TankEvent
- super TEvent
-
- # The `Tank` at the center of this event
- var tank: Tank
-end
-
-# `tank` opens fire
-class OpenFireEvent
- super TankEvent
-end
-
-# The turret of `tank` is ready to open fire
-class TurretReadyEvent
- super TankEvent
-end
-
-# `tank` has been destroyed
-class TankDeathEvent
- super TankEvent
-
- redef fun apply(game)
- do
- tank.health = 0
- game.tanks.remove tank
- end
-end
-
-# The health of `tank` changes to `new_health`
-class TankHealthChange
- super TankEvent
-
- # The new health for `tank`
- var new_health: Int
-
- redef fun apply(game)
- do
- tank.health = new_health
- end
-end
-
-# A `tank` moved
-#
-# TODO this event is too big, divide in 2 or more and move more logic client-side
-class TankMoveEvent
- super TankEvent
-
- # The position
- var pos: Pos
-
- # The direction of the "wheels"
- var direction_heading: Float
-
- # The speed
- var direction_forwards: Float
-
- # Orientation of the tank
- var tank_heading: Float
-
- # Orientation of the turret
- var turret_heading: Float
-
- redef fun apply(game)
- do
- tank.pos = pos
- tank.direction_heading = direction_heading
- tank.direction_forwards = direction_forwards
- tank.heading = tank_heading
- tank.turret.relative_heading = turret_heading
- end
-end
diff --git a/contrib/tinks/src/game/world.nit b/contrib/tinks/src/game/world.nit
deleted file mode 100644
index 9ba1d8bc21..0000000000
--- a/contrib/tinks/src/game/world.nit
+++ /dev/null
@@ -1,279 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Physical world logic
-module world is serialize
-
-import noise
-import more_collections
-
-import framework
-
-redef class TGame
- # The physical world in which this game happens
- var world = new World(self)
-end
-
-# A terrain features (a rock, a tree, etc.)
-class Feature
- super Ruled
- redef type R: FeatureRule
-
- # Top-left corner of this feature
- var pos: Pos
-end
-
-# Metadata for a `Feature`
-class FeatureRule
- super Rule
-
- # Strength to resist on `World::explode`
- var strength: Int
-end
-
-# The physical world of the `game`
-class World
- # Associated `TGame`
- var game: TGame
-
- # Past blast sites
- var blast_sites = new Array[Pos]
-
- private var mountain_map: Noise do
- var map = new PerlinNoise
- map.period = 10.0
- return map
- end
-
- private var forest_map: Noise do
- var map = new PerlinNoise
- map.period = 24.0
- return map
- end
-
- # Cache of discovered features, also keeps tracks of changes
- private var features_cache = new FeatureMap
-
- # Get the `Feature` at `x, y`, if any
- fun [](x, y: Int): nullable Feature
- do
- if features_cache.has(x, y) then return features_cache[x, y]
-
- # Generate a feature from the noise map
- var pos = new Pos(x.to_f+0.5, y.to_f+0.5)
-
- var feature = null
- if mountain_map[x.to_f, y.to_f] > 0.55 then
- feature = new Feature(game.story.rock, pos)
- else if forest_map[x.to_f, y.to_f] > 0.5 then
- feature = new Feature(game.story.tree, pos)
- end
-
- # Update cache
- features_cache[x, y] = feature
-
- return feature
- end
-
- # Detect the first collision with a `Feature` from `src` to `dst`
- #
- # This is the main collision detection method used by tanks shots, and at tank movement.
- # The idea is to check all cases between `src` and `dst` and return the first feature found.
- # Returns `null` if there is no obstacle features.
- #
- # Example of the cases that would be checked between `s` and `d`:
- #
- # ~~~raw
- # ................
- # .s###...........
- # ....######......
- # .........####d..
- # ................
- # ~~~
- fun first_collision(src, dst: Pos): nullable Feature
- do
- var going_left = dst.x < src.x
- var angle = src.atan2(dst)
- var slope = angle.tan
-
- # Soften slopes approaching infinity
- if slope > 100.0 then slope = 100.0
- if slope < -100.0 then slope = -100.0
-
- # For each column (over x) from src.x to dst.x
- var x0 = src.x.floor.to_i
- var x1 = dst.x.floor.to_i
- for x in [x0 .. x1].smart_step do
- var dx = x.to_f - src.x
- var y0 = src.y + dx*slope
- var y1 = src.y + (dx+1.0)*slope
-
- var first = y0.floor.to_i
- var last = y1.floor.to_i
- if going_left then
- # Invert the first and last element of the range
- var swap = first
- first = last
- last = swap
- end
-
- # For each row (over y)
- # from where the line enters the column to where it leaves it
- for y in [first .. last].smart_step do
- if not y.in_between_floats(src.y, dst.y) then continue
-
- var feature = self[x.to_i, y]
- if feature != null then return feature
- end
- end
-
- return null
- end
-
- # Apply an explosion at `center` of the given `power`
- fun explode(turn: TTurn, center: Pos, power: Int)
- do
- var x = center.x.floor.to_i
- var y = center.y.floor.to_i
- var range = [-power .. power]
- var features = new Array[Feature]
-
- for dx in range do
- for dy in range do
- var f = self[x+dx, y+dy]
- var force = (power-dx.abs) + (power-dy.abs)
- if f != null and f.rule.strength <= force then features.add f
- end
- end
-
- turn.add new ExplosionEvent(center, power, features)
- end
-end
-
-# Map of features organized by their coordinates
-#
-# The naive implementation is using a `HashMap2`.
-# This class can be redefed with optimizations as needed.
-class FeatureMap
- super HashMap2[Int, Int, nullable Feature]
-end
-
-redef class Story
- # Forest tree
- var tree = new FeatureRule(self, 2)
-
- # Big rock
- var rock = new FeatureRule(self, 3)
-
- # Metallic debris
- var debris = new FeatureRule(self, 4)
-end
-
-# An explosion
-class ExplosionEvent
- super TEvent
-
- # Center of the explosion
- var pos: Pos
-
- # Power of the blast
- var power: Int
-
- # All the features this explosion destroys
- var destroyed_features: Array[Feature]
-
- redef fun apply(game)
- do
- for feature in destroyed_features do
- game.world.features_cache[feature.pos.x.floor.to_i, feature.pos.y.floor.to_i] = null
- end
-
- game.world.blast_sites.add pos
- if game.world.blast_sites.length > 100 then game.world.blast_sites.shift
- end
-end
-
-# The feature at `pos` changes to `feature`
-class FeatureChangeEvent
- super TEvent
-
- # New `Feature`, if any
- var feature: nullable Feature
-
- # Previous feature, if any
- var old_feature: nullable Feature
-
- # `Pos` of this change
- var pos: Pos
-
- redef fun apply(game)
- do
- game.world.features_cache[pos.x.floor.to_i, pos.y.floor.to_i] = feature
- end
-end
-
-# ---
-# Services
-
-# Position in the world
-class Pos
- super Point[Float]
-
- # Add `self` to `other` and return the new position
- fun +(other: Point[Float]): Pos
- do
- var nx = other.x.add(x)
- var ny = other.y.add(y)
- return new Pos(x.value_of(nx), y.value_of(ny))
- end
-end
-
-redef universal Int
- # Is `self` in between `a` and `b`?
- #
- # ~~~
- # assert 1.in_between_floats(0.0, 2.0)
- # assert 1.in_between_floats(2.0, 0.0)
- # assert not 1.in_between_floats(2.0, 4.0)
- # ~~~
- fun in_between_floats(a, b: Float): Bool
- do
- var f = to_f
- if a < b then return a.floor - 1.0 < f and f < b.ceil
- return a.ceil > f and f > b.floor - 1.0
- end
-end
-
-redef universal Float
- # Get the vector with `self` as direction and the given `magnitude`
- fun to_vector(magnitude: Float): Pos
- do
- return new Pos(cos*magnitude, sin*magnitude)
- end
-end
-
-redef class Range[E]
- # Step appropriately to go from `first` to `last`
- #
- # ~~~
- # assert [1..3].smart_step.to_a == [1, 2, 3]
- # assert [3..1].smart_step.to_a == [3, 2, 1]
- # ~~~
- fun smart_step: Iterator[E]
- do
- var step = 1
- if first > last then step = -1
- return self.step(step)
- end
-end
diff --git a/contrib/tinks/src/server/dedicated.nit b/contrib/tinks/src/server/dedicated.nit
deleted file mode 100644
index db7bd9cfae..0000000000
--- a/contrib/tinks/src/server/dedicated.nit
+++ /dev/null
@@ -1,24 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Dedicated server program
-module dedicated
-
-import server
-
-var port = sys.default_listening_port
-if args.length > 0 then port = args[0].to_i
-
-var server = new Server(port)
-server.run_dedicated
diff --git a/contrib/tinks/src/server/server.nit b/contrib/tinks/src/server/server.nit
deleted file mode 100644
index 69f2bdbc84..0000000000
--- a/contrib/tinks/src/server/server.nit
+++ /dev/null
@@ -1,108 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Server to host multiplayer games
-module server
-
-import gamnit::network
-
-import game
-import common
-
-redef class RemoteClient
- # `Player` associated to this client
- var player = new Player
-end
-
-redef class Server
-
- # The current game
- var game = new TGame is lazy, writable
-
- # Is this a dedicated server
- var dedicated = false
-
- # Create and run a new `Game`
- fun run_dedicated
- do
- dedicated = true
-
- # Setup game
- print "Server: Setup game"
- game
-
- # Play
- print "Server: Starting play"
- loop do_turn
- end
-
- # Run the server logic over a single turn
- fun do_turn: TTurn
- do
- var game = game
-
- # Do game logic
- var turn = game.do_turn
-
- # Respond to discovery requests sent over UDP
- answer_discovery_requests
-
- # Setup clients
- var new_clients = accept_clients
- for client in new_clients do
- # Register player and spawn first tank
- game.players.add client.player
- turn.spawn_tank client.player
-
- client.writer.serialize game
- client.writer.serialize client.player
- client.socket.flush
- end
-
- if dedicated and clients.is_empty then
- # No clients, sleep for a while
- nanosleep(0, 10000000)
- return turn
- end
-
- # Update clients
- broadcast turn
-
- # Get orders from players
- var clients_to_remove = new Array[RemoteClient]
- for client in clients do
- if not client.socket.poll_in then continue
-
- var orders = client.reader.deserialize
- var errors = client.reader.errors
- if errors.not_empty then
- print_error "Comm Error: (Dropping client) {errors.join(", ")}"
- clients_to_remove.add client
- else if not orders isa Array[TOrder] then
- if orders == null then
- print_error "Comm Error: (Dropping client) Unexpected null"
- else print_error "Comm Error: (Dropping client) Unexpected {orders.class_name}"
- # TODO remove code duplication when we have ? or an equivalent
-
- clients_to_remove.add client
- else
- client.player.orders.add_all orders
- end
- end
-
- for client in clients_to_remove do clients.remove client
-
- return turn
- end
-end
diff --git a/lib/android/gamepad.nit b/lib/android/gamepad.nit
deleted file mode 100644
index be0ded05b4..0000000000
--- a/lib/android/gamepad.nit
+++ /dev/null
@@ -1,78 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Support for gamepad events (over Bluetooth or USB)
-module gamepad
-
-import input_events
-
-redef class AndroidKeyEvent
-
- # Was `self` raised by the A button?
- fun is_a: Bool do return key_code == 96
-
- # Was `self` raised by the B button?
- fun is_b: Bool do return key_code == 97
-
- # Was `self` raised by the X button?
- fun is_x: Bool do return key_code == 99
-
- # Was `self` raised by the Y button?
- fun is_y: Bool do return key_code == 100
-
- # Was `self` raised by the directional pad?
- fun is_dpad: Bool
- do
- return is_dpad_up or is_dpad_down or is_dpad_left or is_dpad_right
- end
-
- # Was `self` raised by the up key on the directional pad?
- fun is_dpad_up: Bool do return key_code == 19
-
- # Was `self` raised by the down key on the directional pad?
- fun is_dpad_down: Bool do return key_code == 20
-
- # Was `self` raised by the left key on the directional pad?
- fun is_dpad_left: Bool do return key_code == 21
-
- # Was `self` raised by the right key on the directional pad?
- fun is_dpad_right: Bool do return key_code == 22
-
- # Was `self` raised by the start button?
- fun is_start: Bool do return key_code == 108
-
- # Was `self` raised by the select button?
- fun is_select: Bool do return key_code == 109
-
- # Was `self` raised by the right bumper button?
- fun is_bumper_right: Bool do return key_code == 103
-
- # Was `self` raised by the right trigger?
- fun is_trigger_right: Bool do return key_code == 105
-
- # Was `self` raised by the left bumper?
- fun is_bumper_left: Bool do return key_code == 102
-
- # Was `self` raised by the left trigger?
- fun is_trigger_left: Bool do return key_code == 101
-
- # Was `self` raised by the media button 'previous'?
- fun is_media_previous: Bool do return key_code == 87
-
- # Was `self` raised by the media button 'pause'?
- fun is_media_pause: Bool do return key_code == 85
-
- # Was `self` raised by the media button 'next'?
- fun is_media_next: Bool do return key_code == 88
-end
diff --git a/lib/android/input_events.nit b/lib/android/input_events.nit
deleted file mode 100644
index 96663c7233..0000000000
--- a/lib/android/input_events.nit
+++ /dev/null
@@ -1,274 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Copyright 2012-2014 Alexis Laferrière
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Pointer and hardware key events
-module input_events
-
-import mnit::input
-import android::game
-
-in "C header" `{
- #include
- #include
-
- #define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "mnit", __VA_ARGS__))
- #ifdef DEBUG
- #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "mnit", __VA_ARGS__))
- #else
- #define LOGI(...) (void)0
- #endif
-`}
-
-in "C" `{
- /* Handle inputs from the Android platform and sort them before
- sending them in the Nit App */
- static int32_t mnit_handle_input(struct android_app* app, AInputEvent* event) {
- App nit_app = app->userData;
- LOGI("handle input %i", (int)pthread_self());
- if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY) {
- LOGI("key");
- return App_native_input_key(nit_app, event);
- }
- else if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION) {
- LOGI("motion");
- return App_native_input_motion(nit_app, event);
- }
-
- return 0;
- }
-`}
-
-private extern class NativeAndroidMotionEvent `{AInputEvent *`}
-
- fun pointers_count: Int `{
- return AMotionEvent_getPointerCount(self);
- `}
-
- fun edge: Int `{
- return AMotionEvent_getEdgeFlags(self);
- `}
-
- # Get the non-primary pointer id that just went down (returns -1 or > 0)
- fun index_down_pointer: Int `{
- int a = AMotionEvent_getAction(self);
- if ((a & AMOTION_EVENT_ACTION_MASK) == AMOTION_EVENT_ACTION_POINTER_DOWN)
- return (a & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT;
- else return -1;
- `}
-
- fun action: AMotionEventAction `{ return AMotionEvent_getAction(self); `}
-
- fun native_down_time: Int `{ return AMotionEvent_getDownTime(self); `}
-end
-
-private extern class AMotionEventAction `{ int32_t `}
- fun action: Int `{ return self & AMOTION_EVENT_ACTION_MASK; `}
-
- # Pointer index concerned by this action
- #
- # Require: `is_pointer_down or is_pointer_up`
- fun pointer_index: Int `{
- return (self & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT;
- `}
-
- fun is_down: Bool do return action == 0
- fun is_up: Bool do return action == 1
- fun is_move: Bool do return action == 2
- fun is_cancel: Bool do return action == 3
- fun is_outside: Bool do return action == 4
- fun is_pointer_down: Bool do return action == 5
- fun is_pointer_up: Bool do return action == 6
-end
-
-# An input event on Android
-interface AndroidInputEvent
- super InputEvent
-end
-
-# A motion event concerning a single or more `pointers`
-class AndroidMotionEvent
- super AndroidInputEvent
- super MotionEvent
-
- private var native: NativeAndroidMotionEvent
-
- # Pointers (or fingers) composing this motion event
- var pointers: Array[AndroidPointerEvent] is lazy do
- return [for i in native.pointers_count.times do new AndroidPointerEvent(self, i)]
- end
-
- # The pointer (or finger) causing this event
- var acting_pointer: AndroidPointerEvent is lazy do
- var action = native.action
- var index = 0
-
- if action.is_pointer_down or action.is_pointer_up then
- index = native.action.pointer_index
- end
-
- return new AndroidPointerEvent(self, index)
- end
-
- redef fun just_went_down do return native.action.is_down or native.action.is_pointer_down
-
- # Was the top edge of the screen intersected by this event?
- fun touch_to_edge: Bool do return native.edge == 1
-
- # Was the bottom edge of the screen intersected by this event?
- fun touch_bottom_edge: Bool do return native.edge == 2
-
- # Was the left edge of the screen intersected by this event?
- fun touch_left_edge: Bool do return native.edge == 4
-
- # Was the right edge of the screen intersected by this event?
- fun touch_right_edge: Bool do return native.edge == 8
-
- redef fun down_pointer: nullable AndroidPointerEvent
- do
- if just_went_down then
- # The primary pointer went down
- return pointers[0]
- end
-
- var i = native.index_down_pointer
- if i > 0 then
- # A secondary pointer went down
- return pointers[i]
- else
- return null
- end
- end
-
- # Time when the user originally pressed down to start a stream of position events
- #
- # The return value is in the `java.lang.System.nanoTime()` time base.
- fun down_time: Int do return native.native_down_time
-end
-
-# A pointer event
-class AndroidPointerEvent
- super PointerEvent
- super AndroidInputEvent
-
- private var motion_event: AndroidMotionEvent
-
- private var pointer_index: Int
-
- redef fun x do return native_x(motion_event.native, pointer_index)
-
- private fun native_x(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{
- return AMotionEvent_getX(motion_event, pointer_index);
- `}
-
- redef fun y do return native_y(motion_event.native, pointer_index)
-
- private fun native_y(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{
- return AMotionEvent_getY(motion_event, pointer_index);
- `}
-
- # Pressure applied by this pointer
- fun pressure: Float do return native_pressure(motion_event.native, pointer_index)
-
- private fun native_pressure(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{
- return AMotionEvent_getPressure(motion_event, pointer_index);
- `}
-
- redef fun pressed
- do
- var action = motion_event.native.action
- return action.is_down or action.is_move or action.is_pointer_down
- end
-
- redef fun is_move do return motion_event.acting_pointer == self and
- motion_event.native.action.is_move
-
- # Does this pointer just began touching the screen?
- fun just_went_down: Bool do return motion_event.acting_pointer == self and
- motion_event.just_went_down
-
- # Unique id of this pointer since the beginning of the gesture
- redef fun pointer_id do return native_pointer_id(motion_event.native, pointer_index)
-
- private fun native_pointer_id(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Int `{
- return AMotionEvent_getPointerId(motion_event, pointer_index);
- `}
-end
-
-# An hardware key event
-extern class AndroidKeyEvent `{AInputEvent *`}
- super KeyEvent
- super AndroidInputEvent
-
- private fun action: Int `{ return AKeyEvent_getAction(self); `}
-
- redef fun is_down do return action == 0
- redef fun is_up do return action == 1
-
- # Hardware code of the key raising this event
- fun key_code: Int `{ return AKeyEvent_getKeyCode(self); `}
-
- redef fun to_c
- do
- var i = native_to_c
- if i == 0 then return null
- return i.code_point
- end
-
- private fun native_to_c: Int `{
- int code = AKeyEvent_getKeyCode(self);
- if (code >= AKEYCODE_0 && code <= AKEYCODE_9)
- return '0'+code-AKEYCODE_0;
- if (code >= AKEYCODE_A && code <= AKEYCODE_Z)
- return 'a'+code-AKEYCODE_A;
- return 0;
- `}
-
- redef fun name do return key_code.to_s
-
- # Was this event raised by the back key?
- fun is_back_key: Bool do return key_code == 4
-
- # Was this event raised by the menu key?
- fun is_menu_key: Bool do return key_code == 82
-
- # Was this event raised by the search key?
- fun is_search_key: Bool do return key_code == 84
-
- # Was this event raised by the volume up key?
- fun is_volume_up: Bool do return key_code == 24
-
- # Was this event raised by the volume down key?
- fun is_volume_down: Bool do return key_code == 25
-end
-
-redef class App
-
- redef fun init_window
- do
- set_as_input_handler native_app_glue
- super
- end
-
- private fun set_as_input_handler(app_glue: NativeAppGlue)
- import native_input_key, native_input_motion `{
- app_glue->onInputEvent = mnit_handle_input;
- `}
-
- # these are used as a callback from native to type incoming events
- private fun native_input_key(event: AndroidKeyEvent): Bool is abstract
-
- private fun native_input_motion(event: NativeAndroidMotionEvent): Bool is abstract
-end
diff --git a/lib/android/sensors.nit b/lib/android/sensors.nit
deleted file mode 100644
index d57a5d65a2..0000000000
--- a/lib/android/sensors.nit
+++ /dev/null
@@ -1,372 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Romain Chanoir
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Access Android sensors
-#
-# Sensors are to be enabled when `App` is created.
-# The following example enables all sensors.
-# The events (`SensorEvent`, `ASensorAccelerometer`, `ASensorMagneticField`...)
-# are sent to the `input` callback of `App`
-#
-# ~~~~nitish
-# redef class App
-# init
-# do
-# sensors_support_enabled = true
-# accelerometer.enabled = true
-# accelerometer.eventrate = 10000
-# magnetic_field.enabled = true
-# gyroscope.enabled = true
-# light.enabled = true
-# proximity.enabled = true
-# end
-# end
-# ~~~~
-module sensors
-
-import android
-import gamnit
-
-in "C header" `{
- #include
- #include
-`}
-
-extern class ASensorType `{int`}
- new accelerometer: ASensorType `{return ASENSOR_TYPE_ACCELEROMETER;`}
- fun is_accelerometer: Bool `{return self == ASENSOR_TYPE_ACCELEROMETER;`}
- new magnetic_field: ASensorType `{return ASENSOR_TYPE_MAGNETIC_FIELD;`}
- fun is_magnetic_field: Bool `{return self == ASENSOR_TYPE_MAGNETIC_FIELD;`}
- new gyroscope:ASensorType `{return ASENSOR_TYPE_GYROSCOPE;`}
- fun is_gyroscope: Bool `{ return self == ASENSOR_TYPE_GYROSCOPE;`}
- new light: ASensorType `{return ASENSOR_TYPE_LIGHT;`}
- fun is_light: Bool `{return self == ASENSOR_TYPE_LIGHT;`}
- new proximity: ASensorType `{return ASENSOR_TYPE_PROXIMITY;`}
- fun is_proximity:Bool `{return self == ASENSOR_TYPE_PROXIMITY;`}
-end
-
-# Manages the sensors
-extern class ASensorManager `{ASensorManager*`}
-
- new get_instance: ASensorManager `{return ASensorManager_getInstance();`}
-
- # Returns the list of available sensors
- fun get_sensor_list: Pointer `{
- ASensorList *list;
- ASensorManager_getSensorList(self, list);
- return list;
- `}
-
- # Create a new sensor event queue and associate it with a looper
- fun create_event_queue(app: NativeAppGlue): ASensorEventQueue `{
- return ASensorManager_createEventQueue(self, app->looper, LOOPER_ID_USER, NULL, NULL);
- `}
-
- # Returns the default sensor of the given type
- fun get_default_sensor(sensortype: ASensorType): ASensor `{
- return ASensorManager_getDefaultSensor(self, sensortype);
- `}
-
- # Destroys the event queue and free all resources associated to it
- fun destroy_event_queue(queue: ASensorEventQueue) `{
- ASensorManager_destroyEventQueue(self, queue);
- `}
-end
-
-# Manages the sensors events
-extern class ASensorEventQueue `{ASensorEventQueue*`}
-
- # Enable the selected sensor, returns a negative value on error
- fun enable_sensor(sensor: ASensor): Int `{
- return ASensorEventQueue_enableSensor(self, sensor);
- `}
-
- # Disable the selected sensor, returns a negative value on error
- fun disable_sensor(sensor: ASensor): Int `{
- return ASensorEventQueue_disableSensor(self, sensor);
- `}
-
- # Set the delivery rate of events in microseconds for the given sensor
- fun set_event_rate(sensor: ASensor, usec: Int): Int `{
- return ASensorEventQueue_setEventRate(self, sensor, usec);
- `}
- # Returns 1 if the queue has events, 0 if it does not have events,
- # and a negative value if there is an error
- fun has_events: Int `{
- return ASensorEventQueue_hasEvents(self);
- `}
-
- # Returns the next available events from the queue.
- # Returns a negative value if no events are available or an error has occured
- # otherwise the number of events returned
- fun get_events(events: ASensorEvents, count: Int): Int `{
- return ASensorEventQueue_getEvents(self, events, (size_t)count);
- `}
-end
-
-# Extern class referencing a ASensor
-extern class ASensor `{ASensorRef`}
-
- new `{return malloc(sizeof(ASensorRef));`}
- fun name: CString `{return (char*)ASensor_getName(self);`}
- fun vendor: CString `{return (char*)ASensor_getVendor(self);`}
- fun sensor_type: ASensorType `{return ASensor_getType(self);`}
- fun resolution: Float `{return ASensor_getResolution(self);`}
- fun min_delay: Int `{return ASensor_getMinDelay(self);`}
-end
-
-# NIT representation of an Android Sensor used in android_app to initialize sensors
-class AndroidSensor
-
- var asensor = new ASensor is writable
- var enabled = false is writable
- var event_rate = 100000 is writable
-
- fun name: String do return asensor.name.to_s
- fun vendor: String do return asensor.vendor.to_s
- fun sensor_type: ASensorType do return asensor.sensor_type
- fun resolution: Float do return asensor.resolution
- fun min_delay: Int do return asensor.min_delay
-end
-
-# Extern class referencing a ASensorEvent
-extern class ASensorEvent `{ASensorEvent*`}
- super SensorEvent
-
- fun version: Int `{return self->version;`}
- fun sensor: ASensor `{return (ASensorRef)self->sensor;`}
- fun sensor_type: ASensorType `{return self->type;`}
- fun timestamp: Int `{return self->timestamp;`}
-end
-
-extern class FullSensor `{ASensorEvent*`}
- super ASensorLight
- super ASensorProximity
-
- fun temperature: Float `{return self->temperature;`}
- fun pressure: Float `{return self->pressure;`}
- fun data: Pointer `{return self->data;`}
- fun vector: ASensorVector `{return &(self->vector);`}
- fun acceleration: ASensorVector `{return &(self->acceleration);`}
- fun magnetic: ASensorVector `{return &(self->magnetic);`}
-end
-
-# Extern class referencing a ASensorVector, attribute of ASensorRef
-extern class ASensorVector `{ASensorVector*`}
-
- fun v: Pointer `{return self->v;`}
- fun x: Float `{ return self->x;`}
- fun y: Float `{return self->y;`}
- fun z: Float `{return self->z;`}
- fun azimuth: Float `{return self->azimuth;`}
- fun pitch: Float `{return self->pitch;`}
- fun roll: Float `{return self->roll;`}
- fun status: Int `{return self->status;`}
- fun reserved: Pointer `{return self->reserved;`}
-end
-
-# Sensor event returned by the Accelerometer sensor
-extern class ASensorAccelerometer `{ASensorEvent*`}
- super ASensorEvent
-
- fun x: Float `{return self->acceleration.x;`}
- fun y: Float `{return self->acceleration.y;`}
- fun z: Float `{return self->acceleration.z;`}
-end
-
-# Sensor event returned by the Magnetic Field sensor
-extern class ASensorMagneticField `{ASensorEvent*`}
- super ASensorEvent
-
- fun x: Float `{return self->magnetic.x;`}
- fun y: Float `{return self->magnetic.y;`}
- fun z: Float `{ return self->magnetic.z;`}
-end
-
-# Sensor event returned by the gyroscope sensor
-extern class ASensorGyroscope `{ASensorEvent*`}
- super ASensorEvent
-
- fun x: Float `{return self->vector.x;`}
- fun y: Float `{return self->vector.y;`}
- fun z: Float `{return self->vector.y;`}
-end
-
-# Sensor event returned by the Light sensor
-extern class ASensorLight `{ASensorEvent*`}
- super ASensorEvent
-
- fun light: Float `{return self->light;`}
-end
-
-# sensor event returned by the Proximity Sensor
-extern class ASensorProximity `{ASensorEvent*`}
- super ASensorEvent
-
- fun distance: Float `{return self->distance;`}
-end
-
-# Array of SensorEvents
-extern class ASensorEvents `{ASensorEvent*`}
-
- new (length: Int) `{return malloc(sizeof(ASensorEvent)*length);`}
-
- fun [](index: Int): ASensorEvent `{
- return self+index;
- `}
-end
-
-redef class App
- var accelerometer = new AndroidSensor
- var magnetic_field = new AndroidSensor
- var gyroscope = new AndroidSensor
- var light = new AndroidSensor
- var proximity = new AndroidSensor
- var sensormanager: ASensorManager
- var eventqueue: ASensorEventQueue
- var sensors_support_enabled = false is writable
-
- private fun extern_input_sensor_accelerometer(event: ASensorAccelerometer) do accept_event(event)
- private fun extern_input_sensor_magnetic_field(event: ASensorMagneticField) do accept_event(event)
- private fun extern_input_sensor_gyroscope(event: ASensorGyroscope) do accept_event(event)
- private fun extern_input_sensor_light(event: ASensorLight) do accept_event(event)
- private fun extern_input_sensor_proximity(event: ASensorProximity) do accept_event(event)
-
- # Sensors support
- # The user decides which sensors he wants to use by setting them enabled
- private fun enable_sensors
- do
- if sensors_support_enabled then enable_sensors_management else return
- if accelerometer.enabled then enable_accelerometer
- if magnetic_field.enabled then enable_magnetic_field
- if gyroscope.enabled then enable_gyroscope
- if light.enabled then enable_light
- if proximity.enabled then enable_proximity
- end
-
- private fun enable_sensors_management
- do
- sensormanager = new ASensorManager.get_instance
- #eventqueue = sensormanager.create_event_queue(new NdkAndroidApp)
- eventqueue = initialize_event_queue(sensormanager, native_app_glue.looper)
- end
-
- # HACK: need a nit method to get mnit_java_app, then we can use the appropriate sensormanager.create_event_queue method to initialize the event queue
- private fun initialize_event_queue(sensormanager: ASensorManager, looper: ALooper): ASensorEventQueue `{
- return ASensorManager_createEventQueue(sensormanager, looper, LOOPER_ID_USER, NULL, NULL);
- `}
-
- private fun enable_accelerometer
- do
- accelerometer.asensor = sensormanager.get_default_sensor(new ASensorType.accelerometer)
- if accelerometer.asensor.address_is_null then
- print "Accelerometer sensor unavailable"
- else
- if eventqueue.enable_sensor(accelerometer.asensor) < 0 then print "Accelerometer enabling failed"
- eventqueue.set_event_rate(accelerometer.asensor, accelerometer.event_rate)
- end
- end
-
- private fun enable_magnetic_field
- do
- magnetic_field.asensor = sensormanager.get_default_sensor(new ASensorType.magnetic_field)
- if magnetic_field.asensor.address_is_null then
- print "Magnetic Field unavailable"
- else
- if eventqueue.enable_sensor(magnetic_field.asensor) < 0 then print "Magnetic Field enabling failed"
- eventqueue.set_event_rate(magnetic_field.asensor, magnetic_field.event_rate)
- end
- end
-
- private fun enable_gyroscope
- do
- gyroscope.asensor = sensormanager.get_default_sensor(new ASensorType.gyroscope)
- if gyroscope.asensor.address_is_null then
- print "Gyroscope sensor unavailable"
- else
- if eventqueue.enable_sensor(gyroscope.asensor) < 0 then print "Gyroscope enabling failed"
- eventqueue.set_event_rate(gyroscope.asensor, gyroscope.event_rate)
- end
- end
-
- private fun enable_light
- do
- light.asensor = sensormanager.get_default_sensor(new ASensorType.light)
- if light.asensor.address_is_null then
- print "Light sensor unavailable"
- else
- if eventqueue.enable_sensor(light.asensor) < 0 then print "Light enabling failed"
- eventqueue.set_event_rate(light.asensor, light.event_rate)
- end
- end
-
- private fun enable_proximity
- do
- proximity.asensor = sensormanager.get_default_sensor(new ASensorType.proximity)
- if proximity.asensor.address_is_null then
- print "Proximity sensor unavailable"
- else
- if eventqueue.enable_sensor(proximity.asensor) < 0 then print "Proximity enabling failed"
- eventqueue.set_event_rate(light.asensor, light.event_rate)
- end
- end
-
- redef fun run
- do
- enable_sensors
-
- super
- end
-
- redef fun handle_looper_event(ident, event, data)
- do
- super
- handle_sensor_events(ident)
- end
-
- private fun handle_sensor_events(ident: Int) import extern_input_sensor_accelerometer, extern_input_sensor_magnetic_field, extern_input_sensor_gyroscope, extern_input_sensor_light, extern_input_sensor_proximity, eventqueue `{
- //If a sensor has data, process it
- if(ident == LOOPER_ID_USER) {
- //maybe add a boolean to the app to know if we want to use Sensor API or ASensorEvent directly ...
- ASensorEvent* events = malloc(sizeof(ASensorEvent)*10);
- int nbevents;
- ASensorEventQueue* queue = App_eventqueue(self);
- while((nbevents = ASensorEventQueue_getEvents(queue, events, 10)) > 0) {
- int i;
- for(i = 0; i < nbevents; i++){
- ASensorEvent event = events[i];
- switch (event.type) {
- case ASENSOR_TYPE_ACCELEROMETER:
- App_extern_input_sensor_accelerometer(self, &event);
- break;
- case ASENSOR_TYPE_MAGNETIC_FIELD:
- App_extern_input_sensor_magnetic_field(self, &event);
- break;
- case ASENSOR_TYPE_GYROSCOPE:
- App_extern_input_sensor_gyroscope(self, &event);
- break;
- case ASENSOR_TYPE_LIGHT:
- App_extern_input_sensor_light(self, &event);
- break;
- case ASENSOR_TYPE_PROXIMITY:
- App_extern_input_sensor_proximity(self, &event);
- break;
- }
- }
- }
- }
- `}
-end
diff --git a/lib/gamnit/README.md b/lib/gamnit/README.md
deleted file mode 100644
index 68370d96bf..0000000000
--- a/lib/gamnit/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Portable game and multimedia framework for Nit
-
-_gamnit_ is a modular framework to create portable 2D or 3D apps in Nit.
-It is based on the portability framework _app.nit_ and the OpenGL ES 2.0 standard.
-
-# System configuration
-
-To compile the _gamnit_ apps packaged with the Nit repository on GNU/Linux you need to install the dev version of a few libraries and some tools.
-On Debian 8.2, this command should install everything needed:
-
-~~~
-apt-get install libgles2-mesa-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev inkscape
-~~~
-
-On Windows 64 bits, using msys2, you can install the required packages with:
-
-~~~
-pacman -S mingw-w64-x86_64-angleproject-git mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer
-~~~
-
-While macOS isn't supported, it can create iOS apps.
-You need to install and setup Xcode, and you may install the GLSL shader validation tool via `brew`:
-
-~~~
-brew install glslang
-~~~
-
-# Services by submodules
-
-_gamnit_ is modular, different services of the framework are available through different submodules:
-
-* The main entrypoint `gamnit` provides low-level abstractions over some services of OpenGL ES 2.0, like textures, shaders and programs.
- It defines the basic methods to implement in order to obtain a working game:
- `App::frame_core` to update the screen and `App::accept_event` to receive user inputs.
-
-* `flat` provides an easy to use API for 2D games based on sprites.
- Clients of this API redefine `App::update` to update the game logic and fill lists of sprites with objects to draw.
-
- `App::sprites` lists the sprites of the game world, they are drawn form the point of view of the `world_camera`.
- This camera can be moved around in the world by updating the x and y of its `position`,
- and the zoom can easily be set using `reset_depth(desired_world_units_on_y)` or the `z` of its `position`
-
- `App::ui_sprites` lists the UI sprites drawn from the point of view of `ui_camera`.
- By default, this camera is pixel-perfect with the origin in the top left corner of the window.
- However to support screens with different DPI, it is recommended to standardize
- the display size using `reset_depth(height_of_reference_display)`.
-
-* `depth` defines an API for 3D games based on instances of `Actor`.
-
- This framework is build upon `flat`, see the doc of this submodule first (just above).
- As such, clients should still implement `update` with the game logic, and fill `ui_sprites` for UI elements.
-
- At each frame, elements in the list `actors` are drawn to screen.
- Each `Actor` is composed of a `Model` and other information specific to this instance:
- position in the world, rotation and scaling.
-
-* `limit_fps` refines existing services of _gamnit_ to limit the framerate to a customizable value.
-
-* `keys` provides `app.pressed_keys` keeping track of the currently pressed keys.
-
-* `model_parsers` provides services to read and parse models from the asset folder.
-
-* `network` provides a simple communication framework for multiplayer client/server games.
diff --git a/lib/gamnit/android19.nit b/lib/gamnit/android19.nit
deleted file mode 100644
index 49e4894c1f..0000000000
--- a/lib/gamnit/android19.nit
+++ /dev/null
@@ -1,56 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Variation using features from Android API 19
-#
-# Add support for `TextureAsset::premultiply_alpha = false` on Android.
-module android19 is
- android_api_min 19
- android_api_target 22
-end
-
-import android
-intrude import display_android
-intrude import gamnit_android
-intrude import android::load_image
-
-in "Java" `{
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
-`}
-
-redef class TextureAsset
-
- redef fun load_bitmap(asset_manager, path)
- do
- var stream = asset_manager.native_assets_manager.open(path.to_java_string)
- return new NativeBitmap.from_stream_ex(stream, premultiply_alpha)
- end
-end
-
-redef class NativeCByteArray
-
- # The data was not premultiplied, don't unmultiply it
- redef fun unmultiply(w, h) do end
-end
-
-redef class NativeBitmap
-
- # Load from `input_stream` with optional `premultiply_alpha`
- new from_stream_ex(input_stream: NativeInputStream, premultiply_alpha: Bool) in "Java" `{
- BitmapFactory.Options opts = new BitmapFactory.Options();
- opts.inPremultiplied = premultiply_alpha; // API 19
- return BitmapFactory.decodeStream(input_stream, null, opts);
- `}
-end
diff --git a/lib/gamnit/bmfont.nit b/lib/gamnit/bmfont.nit
deleted file mode 100644
index d05292231c..0000000000
--- a/lib/gamnit/bmfont.nit
+++ /dev/null
@@ -1,589 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Parse Angel Code BMFont format and draw text
-#
-# The BMFont format supports packed textures, varying advance per character and
-# even kernings. It can be generated with a number of tools, inluding:
-# * BMFont, free software Windows app, http://www.angelcode.com/products/bmfont/
-# * Littera, a web app, http://kvazars.com/littera/
-#
-# Format reference: http://www.angelcode.com/products/bmfont/doc/file_format.html
-module bmfont
-
-private import dom
-
-intrude import font
-
-# BMFont description, parsed with `Text::parse_bmfont` or loaded as a `BMFontAsset`
-#
-# This class flattens all the `info` and `common` data.
-class BMFont
-
- # ---
- # info part
- #
- # How the font was generated.
-
- # Name of the source true type font
- var face: Text
-
- # Size of the source true type font
- var size: Float
-
- # Is the font bold?
- var bold: Bool
-
- # Is the font italic?
- var italic: Bool
-
- # Does the font uses the Unicode charset?
- var unicode: Bool
-
- # Padding for each character
- #
- # In the format `up,right,down,left`
- var padding: String
-
- # Spacing for each character
- #
- # In the format `horizontal,vertical`.
- var spacing: String
-
- # ---
- # common part
- #
- # Information common to all characters
-
- # Distance in pixels between each line of text
- var line_height: Float
-
- # Pixels from the top of the line to the base of the characters
- var base: Float
-
- # Width of the texture
- var scale_w: Float
-
- # Height of the texture
- var scale_h: Float
-
- # Textures
- var pages = new Map[String, TextureAsset]
-
- # Characters in the font
- var chars = new Map[Char, BMFontChar]
-
- # Distance between certain characters
- var kernings = new HashMap2[Char, Char, Float]
-
- # Additional distance between `prev_char` and `char`
- fun kerning(prev_char: nullable Char, char: Char): Float
- do
- if prev_char == null then return 0.0
- return kernings[prev_char, char] or else 0.0
- end
-
- redef fun to_s do return "<{class_name} {face} at {size} pt, "+
- "{pages.length} pages, {chars.length} chars>"
-
- # TODO
- #
- # # From info
- # charset
- # stretchH
- # smooth
- # aa
- # outline
- #
- # # From common
- # packed
- # alphaChnl
- # redChnl
- # greenChnl
- # blueChnl
-end
-
-# Description of a character in a `BMFont`
-class BMFontChar
-
- # Subtexture left coordinate
- var x: Float
-
- # Subtexture top coordinate
- var y: Float
-
- # Subtexture width
- var width: Float
-
- # Subtexture height
- var height: Float
-
- # Drawing offset on X
- var xoffset: Float
-
- # Drawing offset on Y
- var yoffset: Float
-
- # Cursor advance after drawing this character
- var xadvance: Float
-
- # Full texture contaning this character and others
- var page: RootTexture
-
- # TODO Channel where the image is found
- #var chnl: Int
-
- # Subtexture with this character image only
- var subtexture: Texture = page.subtexture(x, y, width, height) is lazy, writable
-
- # Scale to apply to this char only
- var scale = 1.0 is writable
-end
-
-redef class Text
-
- # Parse `self` as an XML BMFont description file
- #
- # Reports only basic XML format errors, other errors may be ignored or
- # cause a crash.
- #
- # ~~~
- # var desc = """
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- # """
- #
- # var fnt = desc.parse_bmfont("dir_in_assets").value
- # assert fnt.to_s == ""
- # assert fnt.line_height == 80.0
- # assert fnt.kernings['A', 'C'] == -1.0
- # assert fnt.chars['A'].page.as(TextureAsset).path == "dir_in_assets/arial.png"
- # ~~~
- fun parse_bmfont(dir: String): MaybeError[BMFont, Error]
- do
- # Parse XML
- var xml = to_xml
- if xml isa XMLError then
- var msg = "XML Parse Error: {xml.message}:{xml.location or else 0}"
- return new MaybeError[BMFont, Error](maybe_error=new Error(msg))
- end
-
- # Basic sanity check
- var roots = xml["font"]
- if roots.is_empty then
- var msg = "Error: the XML document doesn't declare the expected `font` root"
- return new MaybeError[BMFont, Error](maybe_error=new Error(msg))
- end
-
- # Expect the rest of the document to be well formatted
- var root = roots.first
-
- var info = root["info"].first
- assert info isa XMLAttrTag
- var info_map = info.attributes_to_map
-
- var common = root["common"].first
- assert common isa XMLAttrTag
- var common_map = common.attributes_to_map
-
- var fnt = new BMFont(
- info_map["face"],
- info_map["size"].to_f,
- info_map["bold"] == "1",
- info_map["italic"] == "1",
- info_map["unicode"] == "1",
- info_map["padding"],
- info_map["spacing"],
- common_map["lineHeight"].to_f,
- common_map["base"].to_f,
- common_map["scaleW"].to_f,
- common_map["scaleH"].to_f
- )
-
- # Pages / pixel data files
- var xml_pages = root["pages"].first
- for page in xml_pages["page"] do
- if not page isa XMLAttrTag then continue
-
- var attributes = page.attributes_to_map
- var file = dir / attributes["file"]
- fnt.pages[attributes["id"]] = new TextureAsset(file)
- end
-
- # Char description
- for item in root["chars"].first["char"] do
- if not item isa XMLAttrTag then continue
-
- var attributes = item.attributes_to_map
- var id = attributes["id"].to_i.code_point
-
- var c = new BMFontChar(
- attributes["x"].to_f, attributes["y"].to_f,
- attributes["width"].to_f, attributes["height"].to_f,
- attributes["xoffset"].to_f, attributes["yoffset"].to_f,
- attributes["xadvance"].to_f,
- fnt.pages[attributes["page"]])
-
- fnt.chars[id] = c
- end
-
- # Kerning between two characters
- var kernings = root["kernings"]
- if kernings.not_empty then
- for item in kernings.first["kerning"] do
- if not item isa XMLAttrTag then continue
-
- var attributes = item.attributes_to_map
- var first = attributes["first"].to_i.code_point
- var second = attributes["second"].to_i.code_point
- var amount = attributes["amount"].to_f
- fnt.kernings[first, second] = amount
- end
- end
-
- return new MaybeError[BMFont, Error](fnt)
- end
-end
-
-# BMFont from the assets folder
-#
-# ~~~
-# redef class App
-# var font = new BMFontAsset("arial.fnt")
-# var pos: Point3d[Float] = ui_camera.top_left.offset(128.0, -128.0, 0.0)
-# var ui_text = new TextSprites(font, pos)
-#
-# redef fun create_scene
-# do
-# super
-#
-# font.load
-# assert font.error == null
-#
-# ui_text.text = "Hello world!"
-# end
-# end
-# ~~~
-class BMFontAsset
- super Asset
- super Font
-
- # Font description
- #
- # Require: `error == null`
- fun desc: BMFont
- do
- # Cached results
- var cache = desc_cache
- if cache != null then return cache
- var error = error
- assert error == null else print_error error
-
- # Load on first access
- load
- error = self.error
- assert error == null else print_error error
-
- return desc_cache.as(not null)
- end
-
- private var desc_cache: nullable BMFont = null
-
- # Error at loading
- var error: nullable Error = null
-
- # XML description in the assets folder
- private var text_asset = new TextAsset(path) is lateinit
-
- # Load font description and textures from the assets folder
- #
- # Sets `error` if an error occurred, otherwise
- # the font description can be accessed via `desc`.
- fun load
- do
- var text_asset = text_asset
- text_asset.load
- var error = text_asset.error
- if error != null then
- self.error = error
- return
- end
-
- var desc = text_asset.to_s
- var fnt_or_error = desc.parse_bmfont(path.dirname)
- if fnt_or_error.is_error then
- self.error = fnt_or_error.error
- return
- end
-
- var fnt = fnt_or_error.value
- self.desc_cache = fnt
-
- # Load textures too
- for page_name, texture in fnt.pages do
- texture.load
-
- # Move up any texture loading error.
- # This algo keeps only the latest error,
- # but this isn't a problem on single page fonts.
- error = texture.error
- if error != null then self.error = error
- end
- end
-
- redef fun write_into(text_sprites, text)
- do
- var dx = 0.0
- var dy = 0.0
- var text_width = 0.0
- var line_sprites = new Array[Sprite]
- var height = 0.0
-
- # Has the current line height been added to `height`?
- var line_height_counted = false
-
- # TextSprite customization
- var max_width = text_sprites.max_width
- var max_height = text_sprites.max_height
- var scale = text_sprites.scale
-
- # Font customization
- var line_height = desc.line_height * scale
- var partial_line_skip = line_height * partial_line_mod.to_f
-
- # Links data
- text_sprites.links.clear
- var in_link = false
- var link_sprites = new Array[Sprite]
- var link_name = ""
-
- # Loop over all characters
- var prev_char = null
- var i = -1
- while i < text.length - 1 do
- i += 1
- var c = text[i]
-
- # Special characters
- var word_break = false
- if c == '\n' then
- justify(line_sprites, text_sprites.align, dx)
- dy -= line_height
- if max_height != null and max_height < -dy + line_height then break
- dx = 0.0
- if not line_height_counted then
- # Force to account for empty lines
- height += line_height
- end
- line_height_counted = false
- prev_char = null
- continue
- else if c == pld then
- dy -= partial_line_skip
- height += partial_line_skip
- word_break = true
- continue
- else if c == plu then
- dy += partial_line_skip
- height -= partial_line_skip # We could keep two heights and return the max
- word_break = true
- continue
- else if c.is_whitespace then
- var space_advance = if desc.chars.keys.has(' ') then
- desc.chars[' '].xadvance
- else if desc.chars.keys.has('f') then
- desc.chars['f'].xadvance
- else 16.0
- dx += space_advance * scale
- word_break = true
- else if c == '[' then
- # Open link?
- if i + 1 < text.length and text[i+1] == '[' then
- # Escape if duplicated
- i += 1
- else
- in_link = true
- continue
- end
- else if c == ']' then
- # Close link?
- if i + 1 < text.length and text[i+1] == ']' then
- # Escape if duplicated
- i += 1
- else
- # If there's a () use it as link_name
- var j = i + 1
- if j < text.length and text[j] == '(' then
- var new_name
- new_name = ""
- loop
- j += 1
- if j > text.length then
- # No closing ), abort
- new_name = null
- break
- end
-
- var l = text[j]
- if l == ')' then break
- new_name += l.to_s
- end
- if new_name != null then
- link_name = new_name
- i = j
- end
- end
-
- # Register the link for the clients
- text_sprites.links[link_name] = link_sprites
-
- # Prepare next link
- in_link = false
- link_sprites = new Array[Sprite]
- link_name = ""
- continue
- end
- end
-
- if in_link then link_name += c.to_s
-
- # End of a word?
- if word_break then
- # If we care about line width, check for overflow
- if max_width != null then
- # Calculate the length of the next word
- var prev_w = null
- var word_len = 0.0
- for wi in [i+1..text.length[ do
- var w = text[wi]
-
- if w == '\n' or w == pld or w == plu or w.is_whitespace or (in_link and w == ']') then break
-
- if not desc.chars.keys.has(w) then
- var rc = replacement_char
- if rc == null then continue
- w = rc
- end
-
- word_len += advance(prev_w, w) * scale
- prev_w = w
- end
-
- # Would the line be too long?
- if dx + word_len > max_width then
- justify(line_sprites, text_sprites.align, dx)
- dy -= line_height
- if max_height != null and max_height < -dy + line_height then break
- dx = 0.0
- line_height_counted = false
-
- if not text_sprites.wrap then
- # Cut short, skip everything until the next new line
- while c != '\n' and i < text.length - 1 do
- i += 1
- c = text[i]
- end
- end
- end
- end
-
- prev_char = null
- continue
- end
-
- # Replace or skip unknown characters
- if not desc.chars.keys.has(c) then
- var rc = replacement_char
- if rc == null then continue
- c = rc
- end
-
- var char_info = desc.chars[c]
- var advance = char_info.xadvance
- var kerning = desc.kerning(prev_char, c)
-
- var x = dx + (char_info.width/2.0 + char_info.xoffset + kerning) * scale
- var y = dy - (char_info.height/2.0 + char_info.yoffset) * scale
- var pos = text_sprites.anchor.offset(x, y, 0.0)
- var s = new Sprite(char_info.subtexture, pos)
- s.scale = scale * char_info.scale
- text_sprites.sprites.add s
- line_sprites.add s
- if in_link then link_sprites.add s
-
- dx += (advance + kerning) * scale
- prev_char = c
-
- text_width = text_width.max(dx)
-
- if not line_height_counted then
- # Increase `height` only once per line iff there's a caracter
- line_height_counted = true
- height += line_height
- end
- end
-
- justify(line_sprites, text_sprites.align, dx)
-
- # valign
- if text_sprites.valign != 0.0 then
- var d = (-dy+line_height) * text_sprites.valign
- for s in text_sprites.sprites do s.center.y += d
- end
-
- text_sprites.width = text_width.max(dx)
- text_sprites.height = height
- end
-
- # Character replacing other characters missing from the font
- private var replacement_char: nullable Char is lazy do
- for c in "�?".chars do
- if desc.chars.keys.has(c) then return c
- end
- return null
- end
-
- private fun advance(prev_char: nullable Char, char: Char): Float
- do
- var char_info = desc.chars[char]
- var kerning = desc.kerning(prev_char, char)
- return char_info.xadvance + kerning
- end
-
- private fun justify(line_sprites: Array[Sprite], align: Float, line_width: Float)
- do
- var dx = -line_width*align
- for s in line_sprites do s.center.x += dx
- line_sprites.clear
- end
-end
diff --git a/lib/gamnit/camera_control.nit b/lib/gamnit/camera_control.nit
deleted file mode 100644
index af5bedd60f..0000000000
--- a/lib/gamnit/camera_control.nit
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Simple camera control for user, as the method `accept_scroll_and_zoom`
-module camera_control
-
-import gamnit
-import cameras
-
-import camera_control_linux is conditional(linux)
-import camera_control_android is conditional(android)
-
-redef class EulerCamera
- # Zoom and scroll this camera from user input
- #
- # Scrolling is accomplished by moving the camera on the XY plane and
- # zooming by moving it on the Z axis.
- #
- # This method has distinct implementations per platform.
- # On desktop computers, the mouse wheel changes the zoom level, and
- # holding down the middle mouse button scrolls the camera.
- # On Android, a two finger pinch and slide gesture zoom and scroll.
- #
- # Returns `true` if the event is used.
- #
- # Should be called from `App::accept_event` before accepting pointer events:
- #
- # ~~~nitish
- # redef class App
- # redef fun accept_event(event)
- # do
- # if world_camera.accept_scroll_and_zoom(event) then return true
- #
- # # Handle other events...
- # return false
- # end
- # end
- # ~~~
- fun accept_scroll_and_zoom(event: InputEvent): Bool do return false
-end
diff --git a/lib/gamnit/camera_control_android.nit b/lib/gamnit/camera_control_android.nit
deleted file mode 100644
index 6461c29fb1..0000000000
--- a/lib/gamnit/camera_control_android.nit
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Two fingers camera manipulation, pinch to zoom and slide to scroll
-module camera_control_android
-
-import android
-import camera_control
-
-redef class EulerCamera
- # Smoothened history of pointers in the current motion event
- private var last_motion_pointers = new HashMap[Int, Point[Float]] is lazy
-
- # Start time of the current motion event
- private var last_motion_start: Int = -1
-
- redef fun accept_scroll_and_zoom(event)
- do
- if not event isa AndroidMotionEvent then return false
-
- if event.pointers.length < 2 then
- # Intercept leftovers of the last motion
- return event.down_time == last_motion_start
- end
-
- # Collect active pointer and their world position
- var new_motion_pointers = new HashMap[Int, Point[Float]]
- var ids = new Array[Int]
- for pointer in event.pointers do
- var id = pointer.pointer_id
- ids.add id
- new_motion_pointers[id] = camera_to_world(pointer.x, pointer.y)
- end
-
- var last_motion_pointers = last_motion_pointers
- if last_motion_start == event.down_time and
- last_motion_pointers.keys.has(ids[0]) and last_motion_pointers.keys.has(ids[1]) then
- # Continued motion event
-
- # Get new and old position for 2 fingers
- var new_motion_a = new_motion_pointers[ids[0]]
- var new_motion_b = new_motion_pointers[ids[1]]
- var prev_pos_a = last_motion_pointers[ids[0]]
- var prev_pos_b = last_motion_pointers[ids[1]]
-
- # Move camera
- var prev_middle_pos = prev_pos_a.lerp(prev_pos_b, 0.5)
- var new_middle_pos = new_motion_a.lerp(new_motion_b, 0.5)
- position.x -= new_middle_pos.x - prev_middle_pos.x
- position.y -= new_middle_pos.y - prev_middle_pos.y
-
- # Zoom camera
- var prev_dist = prev_pos_a.dist(prev_pos_b)
- var new_dist = new_motion_a.dist(new_motion_b)
-
- position.z = prev_dist * position.z / new_dist
- else
- # Prepare for a new motion event
- last_motion_pointers.clear
- last_motion_start = event.down_time
- end
-
- # Keep a smooth history
- for i in [0..1] do
- if last_motion_pointers.keys.has(ids[i]) then
- last_motion_pointers[ids[i]] = last_motion_pointers[ids[i]]*0.5 +
- new_motion_pointers[ids[i]]*0.5
- else last_motion_pointers[ids[i]] = new_motion_pointers[ids[i]]
- end
-
- return true
- end
-end
-
-redef class Point[N]
- private fun *(scalar: Numeric): Point[N]
- do return new Point[N](x.mul(scalar), y.mul(scalar))
-
- private fun +(other: Point[N]): Point[N]
- do return new Point[N](x.add(other.x), y.add(other.y))
-end
diff --git a/lib/gamnit/camera_control_linux.nit b/lib/gamnit/camera_control_linux.nit
deleted file mode 100644
index 2aa5d484e2..0000000000
--- a/lib/gamnit/camera_control_linux.nit
+++ /dev/null
@@ -1,64 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Mouse wheel and middle mouse button to control camera
-module camera_control_linux
-
-import linux
-import camera_control
-
-redef class EulerCamera
-
- # Zoom factor, default at 1.2, higher means more reactive zoom effect
- var camera_zoom_mod = 1.2 is writable
-
- # Scroll trigger button mask from SDL2 (1: left, 2: middle, 4: right)
- #
- # Set to 0 to deactivate the scrolling feature.
- var camera_pan_mask = 2 is writable
-
- redef fun accept_scroll_and_zoom(event)
- do
- # Zoom
- if event isa GamnitMouseWheelEvent then
- var dy = event.y
- var mod = camera_zoom_mod
- if dy > 0.0 then
- # Zoom in when moving the wheel up
- mod = 1.0/mod
- else dy = -dy
-
- position.z *= dy * mod
- return true
- end
-
- # Scroll
- var but_mask = camera_pan_mask
- if but_mask != 0 and event isa GamnitPointerEvent then
- var native = event.native
- if native isa SDLMouseMotionEvent and native.state & but_mask == but_mask then
- var dx = native.xrel.to_f
- var dy = native.yrel.to_f
-
- var world_height = field_of_view_y.sin * position.z
- var mod = app.display.as(not null).height.to_f / world_height
- position.x -= dx / mod
- position.y += dy / mod # Y is inverted between the input and output
- return true
- end
- end
-
- return false
- end
-end
diff --git a/lib/gamnit/cameras.nit b/lib/gamnit/cameras.nit
deleted file mode 100644
index 33aac41302..0000000000
--- a/lib/gamnit/cameras.nit
+++ /dev/null
@@ -1,329 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Camera services producing Model-View-Projection matrices
-module cameras
-
-import geometry
-import matrix::projection
-
-import display
-
-# A camera with a point of view on the world
-abstract class Camera
-
- # TODO make this a physical object in the world
-
- # The host `GamnitDisplay`
- var display: GamnitDisplay
-
- # Position of this camera in world space
- var position = new Point3d[Float](0.0, 0.0, 0.0)
-
- # The Model-View-Projection matrix created by this camera
- #
- # This method should only be called by the display at the moment
- # of drawing to the screen.
- fun mvp_matrix: Matrix is abstract
-end
-
-# Simple camera with perspective oriented with Euler angles (`pitch, yaw, roll`)
-class EulerCamera
- super Camera
-
- # Rotation around the X axis (looking down or up)
- var pitch = 0.0 is writable
-
- # Rotation around the Y axis (looking left or right)
- var yaw = 0.0 is writable
-
- # Rotation around the Z axis
- var roll = 0.0 is writable
-
- # Field of view in radians on the vertical axis of the screen
- #
- # Default at `0.8`
- var field_of_view_y = 0.8 is writable
-
- # Clipping wall near the camera, in world dimensions
- #
- # Default at `0.01`.
- var near = 0.01 is writable
-
- # Clipping wall the farthest of the camera, in world dimensions
- #
- # Default at `10000.0` but this one should be adapted to each context.
- var far = 10000.0 is writable
-
- # Look around sensitivity, used by `turn`
- var sensitivity = 0.005 is writable
-
- # Apply a mouse movement (or similar) to the camera
- #
- # `dx` and `dy` are relative mouse movements in pixels.
- fun turn(dx, dy: Float)
- do
- # Moving on x, turn around the y axis
- yaw -= dx*sensitivity
- pitch -= dy*sensitivity
-
- # Protect rotation around then x axis for not falling on your back
- pitch = pitch.min(pi/2.0)
- pitch = pitch.max(-pi/2.0)
- end
-
- # Move the camera considering the current orientation
- fun move(dx, dy, dz: Float)
- do
- # +dz move forward
- position.x -= yaw.sin*dz
- position.z -= yaw.cos*dz
-
- # +dx strafe to the right
- position.x += yaw.cos*dx
- position.z -= yaw.sin*dx
-
- # +dz move towards the sky
- position.y += dy
- end
-
- # Aim the camera at `x, y, z`
- fun look_at(x, y, z: Float)
- do
- var dx = position.x
- var dy = position.y
- var dz = position.z
-
- yaw = atan2(dx, dz)
- pitch = atan2(-dy, dz)
- end
-
- # Rotation matrix produced by the current rotation of the camera
- protected fun rotation_matrix: Matrix
- do
- var view = new Matrix.identity(4)
-
- # Rotate the camera, first by looking left or right, then up or down
- view.rotate(yaw, 0.0, 1.0, 0.0)
- view.rotate(pitch, 1.0, 0.0, 0.0)
- view.rotate(roll, 0.0, 0.0, 1.0)
-
- return view
- end
-
- redef fun mvp_matrix
- do
- var view = new Matrix.identity(4)
-
- # Translate the world away from the camera
- view.translate(-position.x, -position.y, -position.z)
-
- # Rotate the camera, first by looking left or right, then up or down
- view = view * rotation_matrix
-
- # Use a projection matrix with a depth
- var projection = new Matrix.perspective(field_of_view_y,
- display.aspect_ratio, near, far)
-
- return view * projection
- end
-
- # Reset the camera position so that `height` world units are visible on the y axis at z=0
- #
- # By default, `height` is set to `display.height`.
- #
- # After the reset, the camera sits on the Z axis and rotation values are reset to 0.
- # The X axis is horizontal on the screen and the Y axis is vertical.
- # Higher values on the Z axis are closer to the camera.
- fun reset_height(height: nullable Float)
- do
- if height == null then height = display.height.to_f
-
- var opp = height / 2.0
- var angle = field_of_view_y / 2.0
- var adj = opp / angle.tan
-
- position.x = 0.0
- position.y = 0.0
- position.z = adj
-
- pitch = 0.0
- yaw = 0.0
- roll = 0.0
- end
-
- # Convert the position `x, y` on screen, to world coordinates on the plane at `target_z`
- #
- # `target_z` defaults to `0.0` and specifies the Z coordinates of the plane
- # on which to project the screen position `x, y`.
- #
- # This method assumes that the camera is looking along the Z axis towards higher values.
- # Using it in a different orientation can be useful, but won't result in valid
- # world coordinates.
- fun camera_to_world(x, y: Numeric, target_z: nullable Float): Point[Float]
- do
- # TODO, this method could be tweaked to support projecting the 2D point,
- # on the near plane (x,y) onto a given distance no matter to orientation
- # of the camera.
-
- target_z = target_z or else 0.0
-
- # Convert from pixel units / window resolution to
- # units on the near clipping wall to
- # units on the target wall at Z = 0
- var near_height = (field_of_view_y/2.0).tan * near
- var cross_screen_to_near = near_height / (display.height.to_f/2.0)
- var cross_near_to_target = (position.z - target_z) / near
- var mod = cross_screen_to_near * cross_near_to_target
-
- var wx = position.x + (x.to_f-display.width.to_f/2.0) * mod
- var wy = position.y - (y.to_f-display.height.to_f/2.0) * mod
- return new Point[Float](wx, wy)
- end
-end
-
-# Orthogonal camera to draw UI objects with services to work with screens of different sizes
-#
-# X axis: left to right of the screen, from `position.x` to `position.x + width`
-# Y axis: top to bottom of the screen, from `position.y` to `position.y + height`
-# Z axis: far to near the camera (usually when values are higher), from `far` to `near`
-class UICamera
- super Camera
-
- # Clipping wall near the camera, defaults to 100.0
- var near = 100.0 is writable
-
- # Clipping wall the farthest of the camera, defaults to -100.0
- var far: Float = -100.0 is writable
-
- # Width in world units, calculated from `height` and the screen aspect ratio
- fun width: Float do return height * display.aspect_ratio
-
- # Height in world units, defaults to 1080.0
- #
- # Set this value using `reset_height`.
- var height = 1080.0
-
- # Reset the camera position so that `height` world units are visible on the Y axis
- #
- # This can be used to set standardized UI units independently from the screen resolution.
- fun reset_height(height: nullable Float)
- do
- if height == null then height = display.height.to_f
- self.height = height
- end
-
- # Convert the position `x, y` on screen, to UI coordinates
- fun camera_to_ui(x, y: Numeric): Point3d[Float]
- do
- # FIXME this kind of method should use something like a canvas
- # instead of being hard coded on the display.
-
- var wx = x.to_f * width / display.width.to_f - position.x
- var wy = y.to_f * height / display.height.to_f - position.y
- return new Point3d[Float](wx, -wy, 0.0)
- end
-
- # Center of the screen, from the point of view of the camera, at z = 0
- var center: IPoint3d[Float] = new CameraAnchor(self, 0.5, -0.5)
-
- # Center of the top of the screen, at z = 0
- var top: IPoint3d[Float] = new CameraAnchor(self, 0.5, 0.0)
-
- # Center of the bottom of the screen, at z = 0
- var bottom: IPoint3d[Float] = new CameraAnchor(self, 0.5, -1.0)
-
- # Center of the left border of the screen, at z = 0
- var left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -0.5)
-
- # Center of the right border of the screen, at z = 0
- var right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -0.5)
-
- # Top left corner of the screen, at z = 0
- var top_left: IPoint3d[Float] = new CameraAnchor(self, 0.0, 0.0)
-
- # Top right corner of the screen, at z = 0
- var top_right: IPoint3d[Float] = new CameraAnchor(self, 1.0, 0.0)
-
- # Bottom left corner of the screen, at z = 0
- var bottom_left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -1.0)
-
- # Bottom right corner of the screen, at z = 0
- var bottom_right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -1.0)
-
- redef fun mvp_matrix
- do
- var view = new Matrix.identity(4)
-
- # Translate the world away from the camera
- view.translate(-position.x, -position.y, -position.z)
-
- # Use a projection matrix with a depth
- var projection = new Matrix.orthogonal(0.0, width, -height, 0.0, near, far)
-
- return view * projection
- end
-end
-
-# Immutable relative anchors for reference points on `camera`
-private class CameraAnchor
- super IPoint3d[Float]
-
- # Reference camera
- var camera: UICamera
-
- # Reference position, the top left of the screen
- var ref: Point3d[Float] = camera.position is lazy
-
- # X position as proportion of the screen width
- var relative_x: Float
-
- # Y position as proportion of the screen height
- var relative_y: Float
-
- redef fun x do return ref.x + relative_x*camera.width
- redef fun y do return ref.y + relative_y*camera.height
- redef fun z do return ref.z
-
- redef fun offset(x, y, z) do return new OffsetPoint3d(self, x.to_f, y.to_f, z.to_f)
-end
-
-# Position relative to another point or usually a `CameraAnchor`
-private class OffsetPoint3d
- super Point3d[Float]
-
- autoinit ref, offset_x, offset_y, offset_z
-
- # Reference point to which the offsets are applied
- var ref: IPoint3d[Float]
-
- # Difference on the X axis
- var offset_x: Float
-
- # Difference on the X axis
- var offset_y: Float
-
- # Difference on the X axis
- var offset_z: Float
-
- redef fun x do return ref.x + offset_x
- redef fun y do return ref.y + offset_y
- redef fun z do return ref.z + offset_z
-
- redef fun x=(value) do if value != null then offset_x += value - x
- redef fun y=(value) do if value != null then offset_y += value - y
- redef fun z=(value) do if value != null then offset_z += value - z
-
- redef fun offset(x, y, z) do return new OffsetPoint3d(self, x.to_f, y.to_f, z.to_f)
-end
diff --git a/lib/gamnit/cameras_cache.nit b/lib/gamnit/cameras_cache.nit
deleted file mode 100644
index 852ac9ba14..0000000000
--- a/lib/gamnit/cameras_cache.nit
+++ /dev/null
@@ -1,118 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Cache the `Matrix` produced by `Camera::mvp_matrix`
-module cameras_cache
-
-import cameras
-
-redef class Camera
- private var mvp_matrix_cache: nullable Matrix = null
-
- private var position_cache = new Point3d[Float](0.0, 0.0, 0.0)
-
- # Has `position` changed from `position_cache`? Update the cache at the same time
- private fun check_position_changed: Bool
- do
- if position.x != position_cache.x or
- position.y != position_cache.y or
- position.z != position_cache.z then
- position_cache.x = position.x
- position_cache.y = position.y
- position_cache.z = position.z
- return true
- end
- return false
- end
-end
-
-redef class EulerCamera
- # The returned matrix must not be modified as it is cached.
- redef fun mvp_matrix
- do
- var m = mvp_matrix_cache
- if m == null or check_position_changed then
- m = super
- mvp_matrix_cache = m
- end
- return m
- end
-
- redef fun pitch=(value)
- do
- super
- mvp_matrix_cache = null
- end
-
- redef fun yaw=(value)
- do
- super
- mvp_matrix_cache = null
- end
-
- redef fun roll=(value)
- do
- super
- mvp_matrix_cache = null
- end
-
- redef fun field_of_view_y=(value)
- do
- super
- mvp_matrix_cache = null
- end
-
- redef fun near=(value)
- do
- super
- mvp_matrix_cache = null
- end
-
- redef fun far=(value)
- do
- super
- mvp_matrix_cache = null
- end
-end
-
-redef class UICamera
- # The returned matrix must not be modified as it is cached.
- redef fun mvp_matrix
- do
- var m = mvp_matrix_cache
- if m == null or check_position_changed then
- m = super
- mvp_matrix_cache = m
- end
- return m
- end
-
- redef fun near=(value)
- do
- super
- mvp_matrix_cache = null
- end
-
- redef fun far=(value)
- do
- super
- mvp_matrix_cache = null
- end
-
- redef fun height=(value)
- do
- super
- mvp_matrix_cache = null
- end
-end
diff --git a/lib/gamnit/depth/README.md b/lib/gamnit/depth/README.md
deleted file mode 100644
index 6350c2f676..0000000000
--- a/lib/gamnit/depth/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-gamnit depth, a framework to create portable 3D games in Nit.
-
-This framework is based on a list of `Actor`, in `app::actors`, which are drawn to the screen at each frame. Each actor is composed of a `Model` and other information specific to this instance: position in the world, rotation and scaling. Each `Model` is either a composite of models or it is composed of a `Mesh` defining its geometry and a `Material` defining how to draw the model. `Material` can be subclassed to use custom shaders.
-
-# Assets
-
-gamnit depth is built upon to portability framework _app.nit_ which provides a simple system to package and use asset files. Every file in the `assets/` folder at the root of a projet is packaged with the program at compilation for mobiles devices. These files can be loaded during execution using the many subclasses of `Asset`.
-
-~~~
-var my_texture = new Texture("textures/texture.png")
-var my_sound = new Sound("sounds/my_sound.mp3")
-var my_model = new Model("models/my_model.obj")
-var my_text = new TextAsset("simple_text_file.txt")
-~~~
-
-# In relation to gamnit _flat_
-
-gamnit flat is a framework for 2D games based on simple sprites and two drawing contexts: UI and world.
-
-The UI context works well with _depth_. It should be used to display simple 2D UI elements and to create menus with ease.
-
-However, the world context is difficultly compatible with _depth_. Only the `world_camera` from the _flat_ framework is used to display the world objects in the _depth_ framework as well.
-
-# Examples
-
-Take a look at the `model_viewer` project for a basic usage of the _depth_ framework combined with the _flat_ framework for the UI. Becaus of its simple goal, this projet has no game logic and only manipulates graphical objects. This projet is located in the `contrib` folder of the Nit repository.
diff --git a/lib/gamnit/depth/cardboard.nit b/lib/gamnit/depth/cardboard.nit
deleted file mode 100644
index 35c0f7629f..0000000000
--- a/lib/gamnit/depth/cardboard.nit
+++ /dev/null
@@ -1,108 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Update the orientation of `world_camera` at each frame using the head position given by `android::cardboard`
-#
-# This module is Android specific.
-module cardboard
-
-import ::android::cardboard
-
-import depth
-intrude import cameras
-
-redef class EulerCamera
- # Do not use `yaw` and `pitch`, the value will instead originate from the Cardboard API
- redef var rotation_matrix = new Matrix.identity(4)
-
- # Get the angle value from the `rotation_matrix`
- redef fun pitch
- do
- var a = rotation_matrix[0, 1]
- var b = rotation_matrix[1, 1]
- return -atan2(a, b)
- end
-
- # Get the angle value from the `rotation_matrix`
- redef fun yaw
- do
- var a = rotation_matrix[2, 0]
- var b = rotation_matrix[2, 2]
- return -atan2(a, b)
- end
-end
-
-redef class App
-
- # Cardboard's head tacker instance
- private var head_tracker: nullable NativeHeadTracker = null
-
- # Rotation matrix read from `head_tracker`, reusing the same structure as a buffer
- private var java_rotation_matrix = new JavaFloatArray(16) is lazy
-
- # Initialize and set `head_tracker`
- fun initialize_head_tracker
- do
- # Initialize the Cardboard head orientation tracker service
- var head_tracker = new NativeHeadTracker(app.native_activity)
- head_tracker.neck_model_enabled = true
- head_tracker.start_tracking
- self.head_tracker = head_tracker
-
- # Set a wide field of view
- world_camera.field_of_view_y = 1.0
- end
-
- # Read the rotation matrix from Cardboard and update `world_camera`
- private fun update_from_head_tracker
- do
- var head_tracker = head_tracker
- if head_tracker == null then return
-
- head_tracker.last_head_view(java_rotation_matrix, 0)
-
- # Copy values from the Java array to our matrix
- for y in [0..4[ do
- for x in [0..4[ do
- world_camera.rotation_matrix[y, x] = java_rotation_matrix[y*4+x]
- end
- end
- end
-
- redef fun create_scene
- do
- super
- initialize_head_tracker
- end
-
- redef fun update(dt)
- do
- super
- update_from_head_tracker
- end
-
- redef fun pause
- do
- super
- var tracker = head_tracker
- if tracker != null then tracker.stop_tracking
- end
-
- redef fun resume
- do
- super
- var tracker = head_tracker
- if tracker != null then tracker.start_tracking
- end
-end
diff --git a/lib/gamnit/depth/depth.nit b/lib/gamnit/depth/depth.nit
deleted file mode 100644
index a7864f9b67..0000000000
--- a/lib/gamnit/depth/depth.nit
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Framework for 3D games in Nit
-module depth
-
-import flat
-intrude import more_materials
-import more_models
-import model_dimensions
-import particles
-import selection
-import shadow
-
-redef class App
-
- redef fun create_scene
- do
- # Move the camera back a bit
- world_camera.reset_height(10.0)
- world_camera.near = 0.1
-
- super
- end
-
- redef fun create_gamnit
- do
- super
-
- # Cull the invisible triangles in the back of the geometries
- glCullFace gl_BACK
-
- # Prepare programs
- var programs = [blinn_phong_program, normals_program, explosion_program, smoke_program, static_program, selection_program: GamnitProgram]
- for program in programs do
- program.compile_and_link
- var gamnit_error = program.error
- assert gamnit_error == null else print_error gamnit_error
- end
- end
-
- redef fun frame_core_draw(display) do frame_core_depth display
-
- # Draw all elements of `actors` and then call `frame_core_flat`
- protected fun frame_core_depth(display: GamnitDisplay)
- do
- frame_core_depth_clock.lapse
-
- # Compute shadows
- if light isa LightCastingShadows then
- frame_core_shadow_prep display
- perfs["gamnit depth shadows"].add frame_core_depth_clock.lapse
- end
-
- glViewport(0, 0, display.width, display.height)
- frame_core_dynamic_resolution_before display
- perfs["gamnit depth dynres"].add frame_core_depth_clock.lapse
-
- for actor in actors do
- for leaf in actor.model.leaves do
- leaf.material.draw(actor, leaf, app.world_camera)
- assert glGetError == gl_NO_ERROR else print_error "Gamnit error on material {leaf.material.class_name}"
- end
- end
- perfs["gamnit depth actors"].add frame_core_depth_clock.lapse
-
- frame_core_world_sprites display
- perfs["gamnit depth sprites"].add frame_core_depth_clock.lapse
-
- # Toggle writing to the depth buffer for particles effects
- glDepthMask false
- for system in particle_systems do
- system.draw
- assert glGetError == gl_NO_ERROR else print_error "OpenGL error in {system}"
- end
- glDepthMask true
- perfs["gamnit depth particles"].add frame_core_depth_clock.lapse
-
- # Stop using the dynamic resolution before drawing UI sprites
- frame_core_dynamic_resolution_after display
-
- frame_core_ui_sprites display
- perfs["gamnit depth ui_sprites"].add frame_core_depth_clock.lapse
-
- # Debug, show the light point of view
- #frame_core_shadow_debug display
- end
-
- private var frame_core_depth_clock = new Clock
-end
diff --git a/lib/gamnit/depth/depth_core.nit b/lib/gamnit/depth/depth_core.nit
deleted file mode 100644
index e7e42deef7..0000000000
--- a/lib/gamnit/depth/depth_core.nit
+++ /dev/null
@@ -1,241 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Base entities of the depth 3D game framework
-module depth_core
-
-import gamnit::flat_core
-
-# Visible 3D entity in the game world
-#
-# Similar to `gamnit::Sprite` which is in 2D.
-#
-# Each actor associates a `model` to the position `center`.
-# The appearance is modified by `rotation`, `scale` and `alpha`,
-# as well as the attributes of `model` itself.
-#
-# ~~~
-# import gamnit::depth
-#
-# # Load model from the assets folder
-# var model = new Model("path/in/assets.obj")
-#
-# # Create and configure an actor
-# var actor = new Actor(model, new Point3d[Float](0.0, 0.0, 0.0))
-# actor.scale = 2.0
-#
-# # Add to the visible game world
-# app.actors.add actor
-# ~~~
-class Actor
-
- # Model used to draw this actor
- var model: Model
-
- # Position of this sprite in world coordinates
- var center: Point3d[Float] is writable
-
- # Rotation around the X axis (+ looks up, - looks down)
- #
- # Positive values look up, and negative look down.
- #
- # All actor rotations follow the right hand rule.
- # The default orientation of the model should look towards -Z.
- var pitch = 0.0 is writable
-
- # Rotation around the Y axis (+ turns left, - turns right)
- #
- # Positive values turn `self` to the left, and negative values to the right.
- #
- # All actor rotations follow the right hand rule.
- # The default orientation of the model should look towards -Z.
- var yaw = 0.0 is writable
-
- # Rotation around the Z axis (looking to -Z: + turns counterclockwise, - clockwise)
- #
- # From the default camera point of view, looking down on the Z axis,
- # positive values turn `self` counterclockwise, and negative values clockwise.
- #
- # All actor rotations follow the right hand rule.
- # The default orientation of the model should look towards -Z.
- var roll = 0.0 is writable
-
- # Scale applied to the model
- var scale = 1.0 is writable
-
- # Transparency applied to the model on draw
- #
- # This value may be ignored by some materials.
- # Non-opaque values may result in artifacts as there is no specialized
- # support for transparent models and the depth buffer.
- var alpha = 1.0 is writable
-end
-
-# 3D model composed of `Mesh` and `Material`, loaded from the assets folder by default
-#
-# Instances can be created at any time and must be loaded after or at the end of `create_scene`.
-# If loading fails, the model is replaced by `placeholder_model`.
-#
-# ~~~
-# import gamnit::depth
-#
-# var model = new Model("path/in/assets.obj")
-# model.load
-# ~~~
-#
-# The most simple model is `LeafModel`, composed of a single `Mesh` and `Material`.
-# It can be easily created programmatically to display simple geometries.
-# Whereas `CompositeModel` is composed of one or many `LeafModel` and is usually
-# loaded from the assets folder as a `ModelAsset`.
-# Instances of `ModelAsset` must be in the format OBJ and MAT,
-# and their texture in PNG or JPG.
-abstract class Model
-
- # Load this model in memory
- fun load do end
-
- # Errors raised at loading
- var errors = new Array[Error]
-
- # All `LeafModel` composing this model
- #
- # Usually, there is one `LeafModel` per material.
- # At each frame, each material is asked to draw all the live `LeafModel` instaces.
- fun leaves: Array[LeafModel] is abstract
-
- # Sub-models with names, usually declared in the asset file
- var named_parts = new Map[Text, Model]
-end
-
-# Model composed of one or many other `LeafModel`
-class CompositeModel
- super Model
-
- redef var leaves = new Array[LeafModel]
-end
-
-# Basic model with a single `mesh` and `material`
-#
-# Only leaves are actually drawn by the `material`.
-class LeafModel
- super Model
-
- # Mesh forming this model
- var mesh: Mesh
-
- # Material applied on this model
- var material: Material
-
- redef var leaves = [self]
-end
-
-# Material for models, or how to draw the model
-#
-# To create a simple basic blueish material, use `new Material`.
-#
-# Each class of material is associated to a `GLProgram` and its GPU shaders.
-# The simple material `SmoothMaterial` allows to set an ambient, diffuse and specular color.
-# To which `TextureMaterial` adds three textures, for each kind of light.
-# The `NormalsMaterial` may be useful for debugging, it show the orientation of
-# the normal vectors as colors.
-#
-# ~~~
-# import gamnit::depth
-#
-# var blueish_material = new Material
-# var redish_material = new SmoothMaterial([0.3, 0.0, 0.0],
-# [0.6, 0.0, 0.0],
-# [1.0, 1.0, 1.0])
-# var normals_material = new NormalsMaterial
-# ~~~
-abstract class Material
-
- # Draw a `model` from `actor`
- #
- # This method should be refined by subclasses as the default implementation is a no-op.
- #
- # This method is called on many materials for many `actor` and `model` at each frame.
- # It is expected to use a `GLProgram` and call an equivalent to `glDrawArrays`.
- # However, it should not call `glClear` nor `GamnitDisplay::flip`.
- fun draw(actor: Actor, model: LeafModel, camera: Camera) do end
-end
-
-# Mesh with all geometry data
-#
-# May be created via `Plane`, `Cube` or `UVSphere`,
-# or loaded from the assets folder indirectly with a `Model`.
-#
-# ~~~
-# import gamnit::depth
-#
-# var plane = new Plane
-# var cube = new Cube
-# var sphere = new UVSphere(1.0, 32, 16)
-# ~~~
-class Mesh
-
- # Number for vertices
- fun n_vertices: Int do return vertices.length / 3
-
- # Vertices relative coordinates, 3 floats per vertex
- var vertices = new Array[Float] is lazy, writable
-
- # Indices to draw triangles with `glDrawElements`
- #
- # If `not_empty`, use `glDrawElements`, otherwise use `glDrawArrays`.
- var indices = new Array[Int] is lazy, writable
-
- private var indices_c = new CUInt16Array.from(indices) is lazy, writable
-
- # Normals, 3 floats per vertex
- var normals = new Array[Float] is lazy, writable
-
- # Coordinates on the texture, 2 floats per vertex
- var texture_coords = new Array[Float] is lazy, writable
-
- # `GLDrawMode` used to display this mesh, defaults to `gl_TRIANGLES`
- fun draw_mode: GLDrawMode do return gl_TRIANGLES
-end
-
-# Source of light
-abstract class Light
-
- # Center of this light source in world coordinates
- var position = new Point3d[Float](0.0, 1000.0, 0.0)
-end
-
-# Basic light projected from a single point
-class PointLight
- super Light
-end
-
-# Source of light casting shadows
-abstract class LightCastingShadows
- super Light
-
- # View from the camera, used for shadow mapping, implemented by sub-classes
- fun camera: Camera is abstract
-end
-
-redef class App
-
- # Live actors to be drawn on screen
- var actors = new Array[Actor]
-
- # Single light of the scene
- var light: Light = new PointLight is writable
-
- # TODO move `actors & light` to a scene object
- # TODO support more than 1 light
-end
diff --git a/lib/gamnit/depth/model_dimensions.nit b/lib/gamnit/depth/model_dimensions.nit
deleted file mode 100644
index 1e6a8ba30e..0000000000
--- a/lib/gamnit/depth/model_dimensions.nit
+++ /dev/null
@@ -1,109 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Dimensions related services for `Model` and `Mesh`
-module model_dimensions
-
-import depth_core
-
-redef class Model
-
- # Dimensions of the bounding box containing all vertices
- var dimensions = new Point3d[Float](max.x-min.x, max.y-min.y, max.z-min.z) is lazy, writable
-
- # Center coordinates of all the vertices
- var center = new Point3d[Float]((min.x+max.x)/2.0, (min.y+max.y)/2.0, (min.z+max.z)/2.0) is lazy, writable
-
- # Minimum coordinates of all vertices on each axes
- #
- # This is a corner of the bounding box.
- var min: Point3d[Float] is lazy do
- var mx = inf
- var my = inf
- var mz = inf
- for leaf in leaves do
- var lm = leaf.mesh.min
- mx = mx.min(lm.x)
- my = my.min(lm.y)
- mz = mz.min(lm.z)
- end
- return new Point3d[Float](mx, my, mz)
- end
-
- # Maximum coordinates of all vertices on each axes
- #
- # This is a corner of the bounding box.
- var max: Point3d[Float] is lazy do
- var mx = -inf
- var my = -inf
- var mz = -inf
- for leaf in leaves do
- var lm = leaf.mesh.max
- mx = mx.max(lm.x)
- my = my.max(lm.y)
- mz = mz.max(lm.z)
- end
- return new Point3d[Float](mx, my, mz)
- end
-end
-
-redef class LeafModel
-
- redef fun dimensions do return mesh.dimensions
-
- redef fun center do return mesh.center
-end
-
-redef class Mesh
-
- # Dimensions of the bounding box containing all vertices
- var dimensions = new Point3d[Float](max.x-min.x, max.y-min.y, max.z-min.z) is lazy, writable
-
- # Center coordinates of all the vertices
- var center = new Point3d[Float]((min.x+max.x)/2.0, (min.y+max.y)/2.0, (min.z+max.z)/2.0) is lazy, writable
-
- # Minimum coordinates of all vertices on each axes
- #
- # This is a corner of the bounding box.
- var min: Point3d[Float] is lazy do
- var mx = inf
- var my = inf
- var mz = inf
- var i = 0
- while i < vertices.length do
- mx = mx.min(vertices[i])
- my = my.min(vertices[i+1])
- mz = mz.min(vertices[i+2])
- i += 3
- end
- return new Point3d[Float](mx, my, mz)
- end
-
- # Maximum coordinates of all vertices on each axes
- #
- # This is a corner of the bounding box.
- var max: Point3d[Float] is lazy do
- var mx = -inf
- var my = -inf
- var mz = -inf
- var i = 0
- while i < vertices.length do
- mx = mx.max(vertices[i])
- my = my.max(vertices[i+1])
- mz = mz.max(vertices[i+2])
- i += 3
- end
- return new Point3d[Float](mx, my, mz)
- end
-end
diff --git a/lib/gamnit/depth/more_lights.nit b/lib/gamnit/depth/more_lights.nit
deleted file mode 100644
index 3512f27690..0000000000
--- a/lib/gamnit/depth/more_lights.nit
+++ /dev/null
@@ -1,110 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# More implementations of `Light`
-module more_lights
-
-import depth_core
-intrude import cameras_cache
-
-# TODO
-#class PointLight
-#class Spotlight
-
-# Sun-like light projecting parallel rays
-class ParallelLight
- super LightCastingShadows
-
- # Angle to the light source, around the X axis
- var pitch = 0.0 is writable
-
- # Angle to the light source, around the Y axis
- var yaw = 0.0 is writable
-
- # Depth texture width, in world coordinates
- var width = 100.0 is writable
-
- # Depth texture height, in world coordinates
- var height = 100.0 is writable
-
- # Viewport depth, centered on `app.world_camera`
- var depth = 500.0 is writable
-
- redef var camera = new ParallelLightCamera(app.display.as(not null), self) is lazy
-end
-
-private class ParallelLightCamera
- super Camera
-
- var light: ParallelLight
-
- # Rotation matrix produced by the current rotation of the camera
- fun rotation_matrix: Matrix
- do
- var view = new Matrix.identity(4)
- view.rotate(light.yaw, 0.0, 1.0, 0.0)
- view.rotate(light.pitch, 1.0, 0.0, 0.0)
- return view
- end
-
- private fun create_mvp_matrix: Matrix
- do
- var near = -light.depth/2.0
- var far = light.depth/2.0
-
- var view = new Matrix.identity(4)
- view.translate(-position.x, -position.y, -position.z)
- view = view * rotation_matrix
- var projection = new Matrix.orthogonal(-light.width/2.0, light.width/2.0,
- -light.height/2.0, light.height/2.0,
- near, far)
- return view * projection
- end
-
- redef fun mvp_matrix
- do
- var m = mvp_matrix_cache
- if m == null or check_position_changed then
- m = create_mvp_matrix
- mvp_matrix_cache = m
- end
- return m
- end
-
- private var pitch_cache = 0.0
- private var yaw_cache = 0.0
- private var width_cache = 0.0
- private var height_cache = 0.0
- private var depth_cache = 0.0
-
- redef fun check_position_changed
- do
- if super then return true
-
- if light.pitch != pitch_cache or
- light.yaw != yaw_cache or
- light.width != width_cache or
- light.height != height_cache or
- light.depth != depth_cache then
- pitch_cache = light.pitch
- yaw_cache = light.yaw
- width_cache = light.width
- height_cache = light.height
- depth_cache = light.depth
- return true
- end
-
- return false
- end
-end
diff --git a/lib/gamnit/depth/more_materials.nit b/lib/gamnit/depth/more_materials.nit
deleted file mode 100644
index 6674c04961..0000000000
--- a/lib/gamnit/depth/more_materials.nit
+++ /dev/null
@@ -1,665 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Various material implementations
-module more_materials
-
-intrude import depth_core
-intrude import flat
-intrude import shadow
-import more_lights
-
-redef class Material
- # Get the default blueish material
- new do return new SmoothMaterial(
- [0.0, 0.0, 0.3, 1.0],
- [0.0, 0.0, 0.6, 1.0],
- [1.0, 1.0, 1.0, 1.0])
-end
-
-# Simple material with static colors
-class SmoothMaterial
- super Material
-
- # Ambient color, always visible
- #
- # The RGB values should be premultiplied by the alpha value.
- var ambient_color: Array[Float] is writable
-
- # Diffuse color when covered by a light source
- #
- # The RGB values should be premultiplied by the alpha value.
- var diffuse_color: Array[Float] is writable
-
- # Specular color affecting reflections
- #
- # The RGB values should be premultiplied by the alpha value.
- var specular_color: Array[Float] is writable
-
- redef fun draw(actor, model, camera)
- do
- var program = app.blinn_phong_program
- program.use
- program.mvp.uniform camera.mvp_matrix
-
- var mesh = model.mesh
-
- # Actor specs
- glDisableVertexAttribArray program.translation.location
- glDisableVertexAttribArray program.scale.location
-
- program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0)
- program.scale.uniform actor.scale
- program.alpha.uniform actor.alpha
- program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
-
- # From mesh
- program.coord.array_enabled = true
- program.coord.array(mesh.vertices, 3)
-
- program.normal.array_enabled = true
- program.normal.array(mesh.normals, 3)
-
- # No textures
- program.use_map_ambient.uniform false
- program.use_map_diffuse.uniform false
- program.use_map_specular.uniform false
- program.tex_coord.array_enabled = false
-
- # Camera
- program.camera.uniform(camera.position.x, camera.position.y, camera.position.z)
-
- # Colors from the material
- program.ambient_color.uniform(ambient_color[0], ambient_color[1],
- ambient_color[2], ambient_color[3])
- program.diffuse_color.uniform(diffuse_color[0], diffuse_color[1],
- diffuse_color[2], diffuse_color[3])
- program.specular_color.uniform(specular_color[0], specular_color[1],
- specular_color[2], specular_color[3])
-
- setup_lights(camera, program)
-
- # Execute draw
- if mesh.indices.is_empty then
- glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3)
- else
- glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array)
- end
-
- assert glGetError == gl_NO_ERROR
- end
-
- private fun setup_lights(camera: Camera, program: BlinnPhongProgram)
- do
- # TODO use a list of lights
-
- # Light, for Lambert and Blinn-Phong
- var light = app.light
- if light isa ParallelLight then
- program.light_kind.uniform 1
-
- # Vector parallel to the light source
- program.light_center.uniform(
- -light.pitch.sin * light.yaw.sin,
- light.pitch.cos,
- -light.yaw.cos)
- else if light isa PointLight then
- program.light_kind.uniform 2
-
- # Position of the light source
- program.light_center.uniform(app.light.position.x, app.light.position.y, app.light.position.z)
- else
- program.light_kind.uniform 0
- end
-
- # Draw projected shadows?
- if not light isa LightCastingShadows or not app.shadow_depth_texture_available then
- program.use_shadows.uniform false
- return
- else program.use_shadows.uniform true
-
- # Light point of view
- program.light_mvp.uniform light.camera.mvp_matrix
-
- # Depth texture
- glActiveTexture gl_TEXTURE4
- glBindTexture(gl_TEXTURE_2D, app.shadow_context.depth_texture)
- program.depth_texture.uniform 4
- program.depth_texture_size.uniform app.shadow_resolution.to_f
- program.depth_texture_taps.uniform 2 # TODO make configurable
- end
-end
-
-# Material with potential `diffuse_texture` and `specular_texture`
-class TexturedMaterial
- super SmoothMaterial
-
- # Texture applied to the ambient_color
- var ambient_texture: nullable Texture = null is writable
-
- # Texture applied to the diffuse color
- var diffuse_texture: nullable Texture = null is writable
-
- # Texture applied to the specular color
- var specular_texture: nullable Texture = null is writable
-
- # Bump map TODO
- private var normals_texture: nullable Texture = null is writable
-
- redef fun draw(actor, model, camera)
- do
- var mesh = model.mesh
-
- var program = app.blinn_phong_program
- program.use
-
- # One of the textures used, if any
- var sample_used_texture = null
-
- var texture = ambient_texture
- if texture != null then
- glActiveTexture gl_TEXTURE0
- glBindTexture(gl_TEXTURE_2D, texture.gl_texture)
- program.use_map_ambient.uniform true
- program.map_ambient.uniform 0
- sample_used_texture = texture
- else
- program.use_map_ambient.uniform false
- end
-
- texture = diffuse_texture
- if texture != null then
- glActiveTexture gl_TEXTURE1
- glBindTexture(gl_TEXTURE_2D, texture.gl_texture)
- program.use_map_diffuse.uniform true
- program.map_diffuse.uniform 1
- sample_used_texture = texture
- else
- program.use_map_diffuse.uniform false
- end
-
- texture = specular_texture
- if texture != null then
- glActiveTexture gl_TEXTURE2
- glBindTexture(gl_TEXTURE_2D, texture.gl_texture)
- program.use_map_specular.uniform true
- program.map_specular.uniform 2
- sample_used_texture = texture
- else
- program.use_map_specular.uniform false
- end
-
- texture = normals_texture
- if texture != null then
- glActiveTexture gl_TEXTURE3
- glBindTexture(gl_TEXTURE_2D, texture.gl_texture)
- program.use_map_bump.uniform true
- program.map_bump.uniform 3
- sample_used_texture = texture
- else
- program.use_map_bump.uniform false
- end
-
- glDisableVertexAttribArray program.translation.location
- glDisableVertexAttribArray program.scale.location
-
- program.mvp.uniform camera.mvp_matrix
- program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0)
- program.scale.uniform actor.scale
- program.alpha.uniform actor.alpha
-
- # If using a texture, set `texture_coords`
- program.tex_coord.array_enabled = sample_used_texture != null
- if sample_used_texture != null then
- if sample_used_texture isa RootTexture then
- # Coordinates are directly valid
- program.tex_coord.array(mesh.texture_coords, 2)
- else
- # Correlate texture coordinates from the substexture and the mesh.
- # This is slow, but should be cached on the GPU.
- var xa = sample_used_texture.offset_left
- var xd = sample_used_texture.offset_right - xa
- var ya = sample_used_texture.offset_top
- var yd = sample_used_texture.offset_bottom - ya
-
- var tex_coords = new Array[Float].with_capacity(mesh.texture_coords.length)
- for i in [0..mesh.texture_coords.length/2[ do
- tex_coords[i*2] = xa + xd * mesh.texture_coords[i*2]
- tex_coords[i*2+1] = 1.0 - (ya + yd * mesh.texture_coords[i*2+1])
- end
-
- program.tex_coord.array(tex_coords, 2)
- end
- end
-
- program.coord.array_enabled = true
- program.coord.array(mesh.vertices, 3)
-
- program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
-
- program.ambient_color.uniform(ambient_color[0], ambient_color[1],
- ambient_color[2], ambient_color[3])
- program.diffuse_color.uniform(diffuse_color[0], diffuse_color[1],
- diffuse_color[2], diffuse_color[3])
- program.specular_color.uniform(specular_color[0], specular_color[1],
- specular_color[2], specular_color[3])
-
- program.normal.array_enabled = true
- program.normal.array(mesh.normals, 3)
-
- # Light
- setup_lights(camera, program)
-
- # Camera
- program.camera.uniform(camera.position.x, camera.position.y, camera.position.z)
-
- if mesh.indices.is_empty then
- glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3)
- else
- glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array)
- end
- end
-end
-
-# Simple material using the normals of the surface as color
-#
-# Each axis composing the normals are translated to color values.
-# This material is useful for debugging normals or display models in a colorful way.
-class NormalsMaterial
- super Material
-
- redef fun draw(actor, model, camera)
- do
- var program = app.normals_program
- program.use
- program.mvp.uniform camera.mvp_matrix
-
- var mesh = model.mesh
-
- # TODO apply normal map
-
- program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0)
- program.scale.uniform actor.scale
-
- program.tex_coord.array_enabled = true
- program.tex_coord.array(mesh.texture_coords, 2)
-
- program.coord.array_enabled = true
- program.coord.array(mesh.vertices, 3)
-
- program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
-
- program.normal.array_enabled = true
- program.normal.array(mesh.normals, 3)
-
- if mesh.indices.is_empty then
- glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3)
- else
- glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array)
- end
- end
-end
-
-# Graphic program to display 3D models with Blinn-Phong specular lighting
-class BlinnPhongProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Vertex coordinates
- attribute vec4 coord;
-
- // Vertex translation
- attribute vec4 translation;
-
- // Vertex scaling
- attribute float scale;
-
- attribute float alpha;
-
- // Vertex coordinates on textures
- attribute vec2 tex_coord;
-
- // Vertex normal
- attribute vec3 normal;
-
- // Camera model view projection matrix
- uniform mat4 mvp;
-
- // Actor rotation
- attribute vec4 rotation_row0;
- attribute vec4 rotation_row1;
- attribute vec4 rotation_row2;
- attribute vec4 rotation_row3;
-
- mat4 rotation()
- {
- return mat4(rotation_row0, rotation_row1, rotation_row2, rotation_row3);
- }
-
- // Lights config
- uniform lowp int light_kind;
- uniform vec3 light_center;
- uniform mat4 light_mvp;
-
- // Coordinates of the camera
- uniform vec3 camera;
-
- // Output for the fragment shader
- varying vec2 v_tex_coord;
- varying vec3 v_normal;
- varying vec4 v_to_light;
- varying vec4 v_to_camera;
- varying vec4 v_depth_pos;
- varying float v_alpha;
-
- void main()
- {
- mat4 rotation = rotation();
- vec4 pos = (vec4(coord.xyz * scale, 1.0) * rotation + translation);
- gl_Position = pos * mvp;
- v_depth_pos = (pos * light_mvp) * 0.5 + 0.5;
-
- // Pass varyings to the fragment shader
- v_tex_coord = vec2(tex_coord.x, 1.0 - tex_coord.y);
- v_normal = normalize(vec4(normal, 0.0) * rotation).xyz;
- v_to_camera = normalize(vec4(camera, 1.0) - pos);
-
- if (light_kind == 0) {
- // No light
- } else if (light_kind == 1) {
- // Parallel
- v_to_light = normalize(vec4(light_center, 1.0));
- } else {
- // Point light (and others?)
- v_to_light = normalize(vec4(light_center, 1.0) - pos);
- }
-
- v_alpha = alpha;
- }
- """ @ glsl_vertex_shader
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Input from the vertex shader
- varying vec2 v_tex_coord;
- varying vec3 v_normal;
- varying vec4 v_to_light;
- varying vec4 v_to_camera;
- varying vec4 v_depth_pos;
- varying float v_alpha;
-
- // Colors
- uniform vec4 ambient_color;
- uniform vec4 diffuse_color;
- uniform vec4 specular_color;
-
- // Ambient map
- uniform bool use_map_ambient;
- uniform sampler2D map_ambient;
-
- // Diffuse map
- uniform bool use_map_diffuse;
- uniform sampler2D map_diffuse;
-
- // Specular map
- uniform bool use_map_specular;
- uniform sampler2D map_specular;
-
- // Bump map
- uniform bool use_map_bump;
- uniform sampler2D map_bump;
-
- // Normal map
- uniform bool use_map_normal;
- uniform sampler2D map_normal;
-
- // Shadow
- uniform lowp int light_kind;
- uniform bool use_shadows;
- uniform sampler2D depth_texture;
- uniform float depth_size;
- uniform int depth_taps;
-
- // Shadow effect on the diffuse colors of the fragment at offset `x, y`
- float shadow_lookup(vec2 depth_coord, float x, float y) {
- float tap_width = 1.0;
- float pixel_size = tap_width/depth_size;
-
- vec2 offset = vec2(x * pixel_size * v_depth_pos.w,
- y * pixel_size * v_depth_pos.w);
- depth_coord += offset;
-
- float depth = v_depth_pos.z/v_depth_pos.w;
- //vec2 depth_coord = v_depth_pos.xy/v_depth_pos.w;
- if (depth_coord.x < 0.0 || depth_coord.x > 1.0 || depth_coord.y < 0.0 || depth_coord.y > 1.0) {
- // Out of the shadow map texture
- //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); // debug, red out of the light view
- return 1.0;
- }
-
- float shadow_depth = texture2D(depth_texture, depth_coord).r;
- float bias = 0.0001;
- if (shadow_depth == 1.0) {
- // Too far to be in depth texture
- return 1.0;
- } else if (shadow_depth <= depth - bias) {
- // In a shadow
- //gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); // debug, blue shadows
- return 0.2; // TODO replace with a configurable ambient light
- }
-
- //gl_FragColor = vec4(0.0, 1.0-(shadow_depth-depth), 0.0, 1.0); // debug, green lit surfaces
- return 1.0;
- }
-
- // Shadow effect on the diffuse colors of the fragment
- float shadow() {
- if (!use_shadows) return 1.0;
-
- vec2 depth_coord = v_depth_pos.xy/v_depth_pos.w;
-
- float taps = float(depth_taps);
- float tap_step = 2.00/taps;
- float sum = 0.0;
- for (float x = -1.0; x <= 0.99; x += tap_step)
- for (float y = -1.0; y <= 0.99; y += tap_step)
- sum += shadow_lookup(depth_coord, x, y);
- return sum / taps / taps;
- }
-
- void main()
- {
- // Normal
- vec3 normal = v_normal;
- if (use_map_bump) {
- // TODO
- vec3 bump = 2.0 * texture2D(map_bump, v_tex_coord).rgb - 1.0;
- }
-
- // Ambient light
- vec4 ambient = ambient_color * v_alpha;
- if (use_map_ambient) ambient *= texture2D(map_ambient, v_tex_coord);
-
- if (light_kind == 0) {
- // No light, show diffuse and ambient
-
- vec4 diffuse = diffuse_color * v_alpha;
- if (use_map_diffuse) diffuse *= texture2D(map_diffuse, v_tex_coord);
-
- gl_FragColor = ambient + diffuse;
- } else {
- // Parallel light or point light (1 or 2)
-
- // Diffuse Lambert light
- vec3 to_light = v_to_light.xyz;
- float lambert = clamp(dot(normal, to_light), 0.0, 1.0);
-
- vec4 diffuse = lambert * diffuse_color;
- if (use_map_diffuse) diffuse *= texture2D(map_diffuse, v_tex_coord);
-
- // Specular Phong light
- float s = 0.0;
- if (lambert > 0.0) {
- // In light
- vec3 l = reflect(-to_light, normal);
- s = clamp(dot(l, v_to_camera.xyz), 0.0, 1.0);
- s = pow(s, 8.0); // TODO make this `shininess` a material attribute
-
- // Shadows
- diffuse *= shadow();
- }
-
- vec4 specular = s * specular_color * v_alpha;
- if (use_map_specular) specular *= texture2D(map_specular, v_tex_coord).x;
-
- gl_FragColor = ambient + diffuse + specular;
- }
-
- if (gl_FragColor.a < 0.01) discard;
-
- //gl_FragColor = vec4(normalize(normal).rgb, 1.0); // Debug normals
- }
- """ @ glsl_fragment_shader
-
- # Vertices coordinates
- var coord = attributes["coord"].as(AttributeVec4) is lazy
-
- # Should this program use the texture `map_ambient`?
- var use_map_ambient = uniforms["use_map_ambient"].as(UniformBool) is lazy
-
- # Ambient texture unit
- var map_ambient = uniforms["map_ambient"].as(UniformSampler2D) is lazy
-
- # Should this program use the texture `map_diffuse`?
- var use_map_diffuse = uniforms["use_map_diffuse"].as(UniformBool) is lazy
-
- # Diffuse texture unit
- var map_diffuse = uniforms["map_diffuse"].as(UniformSampler2D) is lazy
-
- # Should this program use the texture `map_specular`?
- var use_map_specular = uniforms["use_map_specular"].as(UniformBool) is lazy
-
- # Specularity texture unit
- var map_specular = uniforms["map_specular"].as(UniformSampler2D) is lazy
-
- # Should this program use the texture `map_bump`?
- var use_map_bump = uniforms["use_map_bump"].as(UniformBool) is lazy
-
- # Bump texture unit
- var map_bump = uniforms["map_bump"].as(UniformSampler2D) is lazy
-
- # Normal per vertex
- var normal = attributes["normal"].as(AttributeVec3) is lazy
-
- # Coordinates on the textures, per vertex
- var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy
-
- # Ambient color
- var ambient_color = uniforms["ambient_color"].as(UniformVec4) is lazy
-
- # Diffuse color
- var diffuse_color = uniforms["diffuse_color"].as(UniformVec4) is lazy
-
- # Specular color
- var specular_color = uniforms["specular_color"].as(UniformVec4) is lazy
-
- # Kind of lights: 0 -> no light, 1 -> parallel, 2 -> point
- var light_kind = uniforms["light_kind"].as(UniformInt) is lazy
-
- # Center position of the light *or* vector to parallel light source
- var light_center = uniforms["light_center"].as(UniformVec3) is lazy
-
- # Light model view projection matrix
- var light_mvp = uniforms["light_mvp"].as(UniformMat4) is lazy
-
- # Should shadow be drawn? Would use `depth_texture` and `light_mvp`.
- var use_shadows = uniforms["use_shadows"].as(UniformBool) is lazy
-
- # Diffuse texture unit
- var depth_texture = uniforms["depth_texture"].as(UniformSampler2D) is lazy
-
- # Size, in pixels, of `depth_texture`
- var depth_texture_size = uniforms["depth_size"].as(UniformFloat) is lazy
-
- # Times to tap the `depth_texture`, square root (set to 3 for a total of 9 taps)
- var depth_texture_taps = uniforms["depth_taps"].as(UniformInt) is lazy
-
- # Camera position
- var camera = uniforms["camera"].as(UniformVec3) is lazy
-
- # Translation applied to each vertex
- var translation = attributes["translation"].as(AttributeVec4) is lazy # TODO attribute
-
- # Set `mat` at the uniform rotation matrix
- fun rotation=(mat: Matrix)
- do
- var i = 0
- for r in [rotation_row0, rotation_row1, rotation_row2, rotation_row3] do
- if r.is_active then
- glDisableVertexAttribArray r.location
- r.uniform(mat[0, i], mat[1, i], mat[2, i], mat[3, i])
- end
- i += 1
- end
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
- end
-
- # Rotation matrix, row0
- var rotation_row0 = attributes["rotation_row0"].as(AttributeVec4) is lazy
-
- # Rotation matrix, row 1
- var rotation_row1 = attributes["rotation_row1"].as(AttributeVec4) is lazy
-
- # Rotation matrix, row 2
- var rotation_row2 = attributes["rotation_row2"].as(AttributeVec4) is lazy
-
- # Rotation matrix, row 3
- var rotation_row3 = attributes["rotation_row3"].as(AttributeVec4) is lazy
-
- # Scaling per vertex
- var scale = attributes["scale"].as(AttributeFloat) is lazy
-
- # Scaling per vertex
- var alpha = attributes["alpha"].as(AttributeFloat) is lazy
-
- # Camera model view projection matrix
- var mvp = uniforms["mvp"].as(UniformMat4) is lazy
-end
-
-# Program to color objects from their normal vectors
-#
-# May be used in place of `BlinnPhongProgram` for debugging or effect.
-class NormalProgram
- super BlinnPhongProgram
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Input from the vertex shader
- varying vec3 v_normal;
-
- void main()
- {
- gl_FragColor = vec4(v_normal*0.5 + 0.5, 1.0);
- }
- """ @ glsl_fragment_shader
-end
-
-redef class App
- private var blinn_phong_program = new BlinnPhongProgram is lazy
-
- private var normals_program = new NormalProgram is lazy
-end
diff --git a/lib/gamnit/depth/more_meshes.nit b/lib/gamnit/depth/more_meshes.nit
deleted file mode 100644
index e316b89485..0000000000
--- a/lib/gamnit/depth/more_meshes.nit
+++ /dev/null
@@ -1,239 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# More simple geometric meshes
-module more_meshes
-
-import geometry
-import depth_core
-import model_dimensions
-
-# Simple flat mesh, sits on the axes X and Z, normal on Y
-class Plane
- super Mesh
-
- # TODO allow for complex rotation, either at creation or in Actor
-
- # Modifier to `texture_coords` to repeat the texture on the X axis
- #
- # At 1.0, the texture is stretched to cover the whole plane.
- # If greater than 1.0, the texture is repeated.
- #
- # This value must be set before using `texture_coords` or drawing this plane.
- var repeat_x = 1.0 is writable
-
- # Modifier to `texture_coords` to repeat the texture on the Y axis
- #
- # At 1.0, the texture is stretched to cover the whole plane.
- # If greater than 1.0, the texture is repeated.
- #
- # This value must be set before using `texture_coords` or drawing this plane.
- var repeat_y = 1.0 is writable
-
- redef var vertices is lazy do
- var a = [-0.5, 0.0, -0.5]
- var b = [ 0.5, 0.0, -0.5]
- var c = [-0.5, 0.0, 0.5]
- var d = [ 0.5, 0.0, 0.5]
-
- var vertices = new Array[Float]
- for v in [c, d, a, b] do vertices.add_all v
- return vertices
- end
-
- redef var normals: Array[Float] is lazy do
- var normals = new Array[Float]
- for i in 4.times do normals.add_all([0.0, 1.0, 0.0])
- return normals
- end
-
- redef var texture_coords: Array[Float] is lazy do
- var offset_left = 0.0
- var offset_top = 0.0
- var offset_right = 1.0*repeat_x
- var offset_bottom = 1.0*repeat_y
- var a = [offset_left, offset_bottom]
- var b = [offset_right, offset_bottom]
- var c = [offset_left, offset_top]
- var d = [offset_right, offset_top]
-
- var texture_coords = new Array[Float]
- for v in [c, d, a, b] do texture_coords.add_all v
- return texture_coords
- end
-
- redef var center = new Point3d[Float](0.0, 0.0, 0.0) is lazy
-
- init do indices.add_all([0, 1, 2, 2, 1, 3])
- # TODO use gl_TRIANGLE_FAN instead
-end
-
-# Cuboid, or rectangular prism, with 6 faces and right angles
-#
-# Can be created from a `Boxed3d` using `to_mesh`.
-class Cuboid
- super Mesh
-
- # Width, on the X axis
- var width: Float
-
- # Height, on the Y axis
- var height: Float
-
- # Depth, on the Z axis
- var depth: Float
-
- redef var vertices is lazy do
- var a = [-0.5*width, -0.5*height, -0.5*depth]
- var b = [ 0.5*width, -0.5*height, -0.5*depth]
- var c = [-0.5*width, 0.5*height, -0.5*depth]
- var d = [ 0.5*width, 0.5*height, -0.5*depth]
-
- var e = [-0.5*width, -0.5*height, 0.5*depth]
- var f = [ 0.5*width, -0.5*height, 0.5*depth]
- var g = [-0.5*width, 0.5*height, 0.5*depth]
- var h = [ 0.5*width, 0.5*height, 0.5*depth]
-
- var vertices = new Array[Float]
- for v in [a, c, d, a, d, b, # front
- f, h, g, f, g, e, # back
- b, d, h, b, h, f, # right
- e, g, c, e, c, a, # left
- e, a, b, e, b, f, # bottom
- c, g, h, c, h, d # top
- ] do vertices.add_all v
- return vertices
- end
-
- redef var normals is lazy do
- var normals = new Array[Float]
- var faces_normals = [
- [0.0, 0.0, -1.0],
- [0.0, 0.0, 1.0],
- [ 1.0, 0.0, 0.0],
- [-1.0, 0.0, 0.0],
- [0.0, -1.0, 0.0],
- [0.0, 1.0, 0.0]]
- for f in faces_normals do for i in 6.times do normals.add_all f
- return normals
- end
-
- redef var texture_coords: Array[Float] is lazy do
- var a = [0.0, 1.0]
- var b = [1.0, 1.0]
- var c = [0.0, 0.0]
- var d = [1.0, 0.0]
-
- var texture_coords = new Array[Float]
- var face = [a, c, d, a, d, b]
- for i in 6.times do for v in face do texture_coords.add_all v
- return texture_coords
- end
-
- redef var center = new Point3d[Float](0.0, 0.0, 0.0) is lazy
-end
-
-# Cube, with 6 faces, edges of equal length and square angles
-#
-# Occupies `[-0.5..0.5]` on all three axes.
-class Cube
- super Cuboid
-
- noautoinit
-
- init
- do
- width = 1.0
- height = 1.0
- depth = 1.0
- end
-end
-
-redef class Boxed3d[N]
- # Create a `Cuboid` mesh with the dimension of `self`
- #
- # Does not use the position of `self`, but it can be given to an `Actor`.
- fun to_mesh: Cuboid
- do
- var width = right.to_f-left.to_f
- var height = top.to_f-bottom.to_f
- var depth = front.to_f-back.to_f
- return new Cuboid(width, height, depth)
- end
-end
-
-# Sphere with `radius` and a number of faces set by `n_meridians` and `n_parallels`
-class UVSphere
- super Mesh
-
- # Distance between the center and the vertices
- var radius: Float
-
- # Number of vertices on a full circle around the Z axis
- var n_meridians: Int
-
- # Number of vertices on an arc between both poles
- var n_parallels: Int
-
- init
- do
- var w = n_meridians
- var h = n_parallels
-
- var vertices = new Array[Float].with_capacity(w*h*3)
- self.vertices = vertices
-
- var texture_coords = new Array[Float].with_capacity(w*h*2)
- self.texture_coords = texture_coords
-
- var normals = new Array[Float].with_capacity(w*h*3)
- self.normals = normals
-
- # Build vertices
- for m in [0..w[ do
- for p in [0..h[ do
- var u = m.to_f * 2.0 * pi / (w-1).to_f
- var v = p.to_f * pi / (h-1).to_f
-
- vertices.add radius * u.cos * v.sin
- vertices.add radius * v.cos
- vertices.add radius * u.sin * v.sin
-
- texture_coords.add (1.0 - m.to_f/(w-1).to_f)
- texture_coords.add(p.to_f/(h-1).to_f)
-
- normals.add u.cos * v.sin
- normals.add v.cos
- normals.add u.sin * v.sin
- end
- end
-
- # Build faces
- var indices = new Array[Int].with_capacity((w-1)*(h-1)*6)
- self.indices = indices
- for m in [0..w-1[ do
- for p in [0..h-1[ do
- var a = m*h + p
-
- indices.add a
- indices.add a+h
- indices.add a+1
-
- indices.add a+h
- indices.add a+h+1
- indices.add a+1
- end
- end
- end
-end
diff --git a/lib/gamnit/depth/more_models.nit b/lib/gamnit/depth/more_models.nit
deleted file mode 100644
index f7ae0015bc..0000000000
--- a/lib/gamnit/depth/more_models.nit
+++ /dev/null
@@ -1,465 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services to load models from the assets folder
-module more_models
-
-intrude import depth_core
-
-import gamnit::obj
-import gamnit::mtl
-
-import more_materials
-import more_meshes
-
-redef class Model
- # Prepare to load a model from the assets folder
- new(path: Text) do return new ModelAsset(path.to_s)
-end
-
-# Model loaded from a file in the asset folder
-#
-# In case of error, `error` is set accordingly.
-# If the error is on the mesh, `mesh` is set to a default `new Cube`.
-# If the material is missing or it failed to load, `material` is set to the blueish `new Material`.
-class ModelAsset
- super Model
- super Asset
-
- init do models.add self
-
- private var loaded = false
-
- redef fun load
- do
- if loaded then return
-
- var ext = path.file_extension
- if ext == "obj" then
- load_obj_file
- else
- errors.add new Error("Model at '{path}' failed to load: Extension '{ext or else "null"}' unrecognized")
- end
-
- if leaves_cache.is_empty then
- # Nothing was loaded, use a cube with the default material
- var leaf = placeholder_model
- leaves_cache.add leaf
- end
-
- loaded = true
- end
-
- private fun lazy_load
- do
- if loaded then return
-
- # Lazy load
- load
-
- # Print errors when lazy loading only
- if errors.length == 1 then
- print_error errors.first
- else if errors.length > 1 then
- print_error "Loading model at '{path}' raised {errors.length} errors:\n* "
- print_error errors.join("\n* ")
- end
- end
-
- private fun load_obj_file
- do
- # Read .obj description from assets
- var text_asset = new TextAsset(path)
- var content = text_asset.to_s
- if content.is_empty then
- errors.add new Error("Model failed to load: Asset empty at '{self.path}'")
- leaves_cache.add new LeafModel(new Cube, new Material)
- return
- end
-
- # Parse .obj description
- var parser = new ObjFileParser(content)
- var obj_def = parser.parse
- if obj_def == null then
- errors.add new Error("Model failed to load: .obj format error on '{self.path}'")
- leaves_cache.add new LeafModel(new Cube, new Material)
- return
- end
-
- # Check for errors
- if debug_gamnit then assert obj_def.is_coherent
-
- # Build models
- var converter = new BuildModelFromObj(path, obj_def)
- converter.fill_leaves self
- errors.add_all converter.errors
- end
-
- redef fun leaves
- do
- lazy_load
- return leaves_cache
- end
-
- private var leaves_cache = new Array[LeafModel]
-
- redef fun named_parts
- do
- lazy_load
- return named_leaves_cache
- end
-
- private var named_leaves_cache = new Map[String, Model]
-end
-
-# Short-lived service to convert an `ObjDef` to `fill_leaves`
-#
-# Limitations: This service only support faces with 3 or 4 vertices.
-# Faces with more vertices should be triangulated by the modeling tool.
-private class BuildModelFromObj
-
- # Path to the .obj file in the assets folder, used to find .mtl files
- var path: String
-
- # Parsed .obj definition
- var obj_def: ObjDef
-
- # Errors raised by calls to `fill_leaves`
- var errors = new Array[Error]
-
- # Fill `leaves` with objects described in `obj_def`
- fun fill_leaves(target_model: ModelAsset)
- do
- var leaves = target_model.leaves_cache
-
- # Sort faces by material
- var obj_mtl_to_faces = new Map[ObjObj, MultiHashMap[String, ObjFace]]
- for obj in obj_def.objects do
- var mtl_to_faces = new MultiHashMap[String, ObjFace]
- obj_mtl_to_faces[obj] = mtl_to_faces
- for face in obj.faces do
- var mtl_lib_name = face.material_lib
- var mtl_name = face.material_name
-
- var full_name = ""
- if mtl_lib_name != null and mtl_name != null then full_name = mtl_lib_name / mtl_name
-
- mtl_to_faces[full_name].add face
- end
- end
-
- # Load material libs
- var mtl_libs = sys.mtl_libs
- var lib_names = obj_def.material_libs
- for name in lib_names do
- var asset_path = self.path.dirname / name
- var lib_asset = new TextAsset(asset_path)
- lib_asset.load
-
- var error = lib_asset.error
- if error != null then
- errors.add error
- continue
- end
-
- var mtl_parser = new MtlFileParser(lib_asset.to_s)
- var mtl_lib = mtl_parser.parse
- mtl_libs[asset_path] = mtl_lib
- end
-
- # Create 1 mesh per material per object, and prepare materials
- var mesh_to_mtl = new Map[Mesh, nullable MtlDef]
- var mesh_to_name = new Map[Mesh, String]
- var texture_names = new Set[String]
- for obj in obj_def.objects do
- var mtl_to_faces = obj_mtl_to_faces[obj]
- for mtl_path, faces in mtl_to_faces do
-
- # Create mesh
- var mesh = new Mesh
- mesh.vertices = vertices(faces)
- mesh.normals = normals(faces)
- mesh.texture_coords = texture_coords(faces)
-
- # Material
- var mtl_def = null
-
- var mtl_lib_name = faces.first.material_lib
- var mtl_name = faces.first.material_name
- if mtl_lib_name != null and mtl_name != null then
- var asset_path = self.path.dirname / mtl_lib_name
- var mtl_lib = mtl_libs[asset_path]
- var mtl = mtl_lib.get_or_null(mtl_name)
- if mtl != null then
- mtl_def = mtl
-
- for e in mtl.maps do
- texture_names.add self.path.dirname / e
- end
- else
- errors.add new Error("Error loading model at '{path}': mtl '{mtl_name}' not found in '{asset_path}'")
- end
- end
-
- mesh_to_mtl[mesh] = mtl_def
- mesh_to_name[mesh] = obj.name
- end
- end
-
- # Load textures need for these materials
- for name in texture_names do
- if not asset_textures_by_name.keys.has(name) then
- var tex = new TextureAsset(name)
- asset_textures_by_name[name] = tex
-
- tex.load
- var error = tex.error
- if error != null then errors.add error
- end
- end
-
- # Create final `Materials` from defs and textures
- var materials = new Map[MtlDef, Material]
- for mtl in mesh_to_mtl.values do
- if mtl == null then continue
-
- var ambient = mtl.ambient.to_a
- ambient.add 1.0
-
- var diffuse = mtl.diffuse.to_a
- diffuse.add 1.0
-
- var specular = mtl.specular.to_a
- specular.add 1.0
-
- var material = new TexturedMaterial(ambient, diffuse, specular)
- materials[mtl] = material
-
- var tex_name = mtl.map_ambient
- if tex_name != null then
- tex_name = self.path.dirname / tex_name
- material.ambient_texture = asset_textures_by_name[tex_name]
- end
-
- tex_name = mtl.map_diffuse
- if tex_name != null then
- tex_name = self.path.dirname / tex_name
- material.diffuse_texture = asset_textures_by_name[tex_name]
- end
-
- tex_name = mtl.map_specular
- if tex_name != null then
- tex_name = self.path.dirname / tex_name
- material.specular_texture = asset_textures_by_name[tex_name]
- end
- end
-
- # Create models and store them
- var name_to_leaves = new MultiHashMap[String, LeafModel]
- for mesh, mtl_def in mesh_to_mtl do
-
- var material = materials.get_or_null(mtl_def)
- if material == null then material = new Material
-
- var model = new LeafModel(mesh, material)
- leaves.add model
-
- name_to_leaves[mesh_to_name[mesh]].add model
- end
-
- # Collect objects with a name
- for name, models in name_to_leaves do
- if models.length == 1 then
- target_model.named_leaves_cache[name] = models.first
- else
- var named_model = new CompositeModel
- named_model.leaves.add_all models
- target_model.named_leaves_cache[name] = named_model
- end
- end
- end
-
- # Compute the vertices coordinates of `faces` in a flat `Array[Float]`
- fun vertices(faces: Array[ObjFace]): Array[Float] do
- var obj_def = obj_def
-
- var vertices = new Array[Float]
- for face in faces do
-
- # 1st triangle
- var count = 0
- for e in face.vertices do
- var i = e.vertex_point_index - 1
- var v = obj_def.vertex_points[i]
-
- vertices.add v.x
- vertices.add v.y
- vertices.add v.z
-
- if count == 2 then break
- count += 1
- end
-
- # If square, 2nd triangle
- #
- # This may not support all vertices ordering.
- if face.vertices.length > 3 then
- for e in [face.vertices[0], face.vertices[2], face.vertices[3]] do
- var i = e.vertex_point_index - 1
- var v = obj_def.vertex_points[i]
-
- vertices.add v.x
- vertices.add v.y
- vertices.add v.z
- end
- end
-
- # TODO use polygon triangulation to support larger polygons
- end
- return vertices
- end
-
- # Compute the normals of `faces` in a flat `Array[Float]`
- fun normals(faces: Array[ObjFace]): Array[Float] do
- var obj_def = obj_def
-
- var normals = new Array[Float]
- for face in faces do
- # 1st triangle
- var count = 0
- for e in face.vertices do
- var i = e.normal_index
- if i == null then
- compute_and_append_normal(normals, face)
- else
- var v = obj_def.normals[i-1]
- normals.add v.x
- normals.add v.y
- normals.add v.z
- end
-
- if count == 2 then break
- count += 1
- end
-
- # If square, 2nd triangle
- #
- # This may not support all vertices ordering.
- if face.vertices.length > 3 then
- for e in [face.vertices[0], face.vertices[2], face.vertices[3]] do
- var i = e.normal_index
- if i == null then
- compute_and_append_normal(normals, face)
- else
- var v = obj_def.normals[i-1]
- normals.add v.x
- normals.add v.y
- normals.add v.z
- end
- end
- end
- end
- return normals
- end
-
- # Compute the normal of `face` and append it as 3 floats to `seq`
- #
- # Resulting normals are not normalized.
- fun compute_and_append_normal(seq: Sequence[Float], face: ObjFace)
- do
- var i1 = face.vertices[0].vertex_point_index
- var i2 = face.vertices[1].vertex_point_index
- var i3 = face.vertices[2].vertex_point_index
-
- var v1 = obj_def.vertex_points[i1-1]
- var v2 = obj_def.vertex_points[i2-1]
- var v3 = obj_def.vertex_points[i3-1]
-
- var vx = v2.x - v1.x
- var vy = v2.y - v1.y
- var vz = v2.z - v1.z
- var wx = v3.x - v1.x
- var wy = v3.y - v1.y
- var wz = v3.z - v1.z
-
- var nx = (vy*wz) - (vz*wy)
- var ny = (vz*wx) - (vx*wz)
- var nz = (vx*wy) - (vy*wx)
-
- # Append to `seq`
- seq.add nx
- seq.add ny
- seq.add nz
- end
-
- # Compute the texture coordinates of `faces` in a flat `Array[Float]`
- fun texture_coords(faces: Array[ObjFace]): Array[Float] do
- var obj_def = obj_def
-
- var coords = new Array[Float]
- for face in faces do
-
- # 1st triangle
- var count = 0
- for e in face.vertices do
- var i = e.texture_coord_index
- if i == null then
- coords.add 0.0
- coords.add 0.0
- else
- var tc = obj_def.texture_coords[i-1]
- coords.add tc.u
- coords.add tc.v
- end
-
- if count == 2 then break
- count += 1
- end
-
- # If square, 2nd triangle
- #
- # This may not support all vertices ordering.
- if face.vertices.length > 3 then
- for e in [face.vertices[0], face.vertices[2], face.vertices[3]] do
- var i = e.texture_coord_index
- if i == null then
- coords.add 0.0
- coords.add 0.0
- else
- var tc = obj_def.texture_coords[i-1]
- coords.add tc.u
- coords.add tc.v
- end
- end
- end
- end
- return coords
- end
-end
-
-redef class Sys
- # Textures loaded from .mtl files for models
- var asset_textures_by_name = new Map[String, TextureAsset]
-
- # Loaded .mtl material definitions, sorted by path in assets and material name
- private var mtl_libs = new Map[String, Map[String, MtlDef]]
-
- # All instantiated asset models
- var models = new Set[ModelAsset]
-
- # Blue cube of 1 unit on each side, acting as placeholder for models failing to load
- #
- # This model can be freely used by any `Actor` as placeholder or for debugging.
- var placeholder_model = new LeafModel(new Cube, new Material) is lazy
-end
diff --git a/lib/gamnit/depth/particles.nit b/lib/gamnit/depth/particles.nit
deleted file mode 100644
index 557e6940d6..0000000000
--- a/lib/gamnit/depth/particles.nit
+++ /dev/null
@@ -1,334 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Particle effects
-#
-# Particles are managed by instances of `ParticleSystem` that
-# are configured for a specific kind of particle.
-# For instance, a particle system can be created for a max of 100 particles,
-# with a smoke effect and a precise texture, as in:
-#
-# ~~~
-# var smoke = new ParticleSystem(100, app.smoke_program, new Texture("smoke.png"))
-# ~~~
-#
-# The system must be registered in `app.particle_systems` to be drawn on screen.
-#
-# Particles are added to a system with their configuration, as in:
-#
-# ~~~
-# var position = new Point3d[Float](0.0, 0.0, 0.0)
-# var scale = 2.0
-# var time_to_live = 1.0 # in seconds
-# smoke.add(position, scale, time_to_live)
-# ~~~
-module particles
-
-import depth_core
-
-redef class App
-
- # Graphics program to display static non-moving particles
- var static_program = new ParticleProgram
-
- # Graphics program to display blowing up particles
- var explosion_program = new ExplosionProgram
-
- # Graphics program to display particles slowly drifting upwards
- var smoke_program = new SmokeProgram
-
- # Enabled particle emitters
- #
- # To be populated by the client program.
- var particle_systems = new Array[ParticleSystem]
-end
-
-# Particle system using `program` and `texture` to draw each particles
-#
-# Each instance draws a maximum of `n_particles`.
-# If full, new particles replace the oldest particles.
-# Expired particle are still sent to the CPU but should be discarded by the vertex shader.
-class ParticleSystem
-
- # Maximum number of particles
- var n_particles: Int
-
- private var total_particles = 0
-
- # Program to draw the particles
- var program: ParticleProgram
-
- # Texture to apply on particles, if any
- var texture: nullable Texture
-
- # Clock used to set `ots` and `program::t`
- #
- # TODO control this value from the game logic to allow pausing and slowing time.
- private var clock = new Clock
-
- # Coordinates of each particle effects
- private var centers = new Array[Float]
-
- # Creation time of each particles
- private var ots = new Array[Float]
-
- # Scale of each particles
- private var scales = new Array[Float]
-
- # Time-to-live of each particle
- private var ttls = new Array[Float]
-
- # Clear all particles
- fun clear
- do
- centers.clear
- ots.clear
- scales.clear
- ttls.clear
- total_particles = 0
- end
-
- # Add a particle at `center` with `scale`, living for `ttl` from `time_offset`
- #
- # `time_offset` is added to the creation time, it can be used to delay the
- # apparition of a particle using a positive value.
- #
- # See the doc of the precise class of `program`, or the general `ParticleProgram`
- # for information on the effect of these parameters.
- fun add(center: Point3d[Float], scale: Float, ttl: Float, time_offset: nullable Float)
- do
- var i = total_particles % n_particles
- total_particles += 1
-
- centers[i*3 ] = center.x
- centers[i*3+1] = center.y
- centers[i*3+2] = center.z
-
- ttls[i] = ttl
- scales[i] = scale
-
- time_offset = time_offset or else 0.0
- ots[i] = clock.total.to_f + time_offset
- end
-
- # Draw all particles of this emitter
- fun draw
- do
- if ots.is_empty then return
-
- var program = program
- program.use
-
- var texture = texture
- if texture != null then
- glActiveTexture gl_TEXTURE0
- glBindTexture(gl_TEXTURE_2D, texture.gl_texture)
- program.use_texture.uniform true
- program.texture.uniform 0
- else
- program.use_texture.uniform false
- end
-
- program.scale.array_enabled = true
- program.scale.array(scales, 1)
-
- program.center.array_enabled = true
- program.center.array(centers, 3)
-
- program.color.array_enabled = false
- program.color.uniform(1.0, 1.0, 1.0, 1.0)
-
- program.ot.array_enabled = true
- program.ot.array(ots, 1)
-
- program.ttl.array_enabled = true
- program.ttl.array(ttls, 1)
-
- program.t.uniform clock.total.to_f
- program.mvp.uniform app.world_camera.mvp_matrix
-
- glDrawArrays(gl_POINTS, 0, ots.length)
- end
-end
-
-# Particle drawing program using `gl_POINTS`
-#
-# This program should be subclassed to create custom particle effects.
-# Either `vertex_shader_source` and `vertex_shader_core` can be refined.
-class ParticleProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Coordinates of particle effects
- attribute vec4 center;
-
- // Particles color tint
- attribute vec4 color;
- varying vec4 v_color;
-
- // Per particle scaling
- attribute float scale;
-
- // Model view projection matrix
- uniform mat4 mvp;
-
- // Time-to-live of each particle
- attribute float ttl;
-
- // Creation time of each particle
- attribute float ot;
-
- // Current time
- uniform float t;
-
- void main()
- {
- // Pass varyings to the fragment shader
- v_color = color;
-
- float dt = t - ot;
- float pt = dt/ttl;
-
- // Discard expired or not yet created particles
- if (dt > ttl || dt < 0.0) {
- gl_PointSize = 0.0;
- return;
- }
-
- {{{vertex_shader_core}}}
- }
- """
-
- # Core GLSL code for `vertex_shader_source`
- #
- # Refine this function to easily tweak the position, size and color of particles.
- #
- # Reminder: Each execution of the vertex shader applies to a single particle.
- #
- # ## Input variables:
- # * `center`: reference coordinates of the particle effect.
- # This if often the center of the particle itself,
- # but it can also be reference coordinates for a moving particle.
- # * `mvp`: model-view-projection matrix.
- # * `color`: color tint of the particle.
- #
- # * `t`: global seconds counter since the creation of this particle emitter.
- # * `ot`: creation time of the particle, in seconds, in reference to `t`.
- # * `dt`: seconds since creation of the particle.
- # * `ttl`: time-to-live of the particle, in seconds.
- # * `pt`: advancement of this particle in its lifetime, in `[0.0 .. 1.0]`.
- #
- # ## Output variables:
- # * `gl_Position`: position of the particle in camera coordinates.
- # * `gl_PointSize`: size of the particle in camera coordinates.
- # Set to `0.0` to discard the particle.
- # * `v_color`: tint applied to the particle.
- # Assigned by default to the value of `color`.
- #
- # ## Reference implementation
- #
- # The default implementation apply the model-view-projection matrix on the position
- # and scales according to the distance from the camera.
- # Most particle effects should apply the same base logic as the default implementation.
- # Here it is for reference:
- #
- # ~~~glsl
- # gl_Position = center * mvp;
- # gl_PointSize = scale / gl_Position.z;
- # ~~~
- fun vertex_shader_core: String do return """
- gl_Position = center * mvp;
- gl_PointSize = scale / gl_Position.z;
- """
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Input from the vertex shader
- varying vec4 v_color;
-
- // Does this particle use a texture?
- uniform bool use_texture;
-
- // Texture to apply on this particle
- uniform sampler2D texture0;
-
- void main()
- {
- if (use_texture) {
- gl_FragColor = texture2D(texture0, gl_PointCoord) * v_color;
- } else {
- gl_FragColor = v_color;
- }
- }
- """ @ glsl_fragment_shader
-
- # Coordinates of particle effects
- var center = attributes["center"].as(AttributeVec4) is lazy
-
- # Should this program use the texture `texture`?
- var use_texture = uniforms["use_texture"].as(UniformBool) is lazy
-
- # Visible texture unit
- var texture = uniforms["texture0"].as(UniformSampler2D) is lazy
-
- # Color tint per vertex
- var color = attributes["color"].as(AttributeVec4) is lazy
-
- # Scaling per vertex
- var scale = attributes["scale"].as(AttributeFloat) is lazy
-
- # Model view projection matrix
- var mvp = uniforms["mvp"].as(UniformMat4) is lazy
-
- # Creation time of each particle
- var ot = attributes["ot"].as(AttributeFloat) is lazy
-
- # Current time
- var t = uniforms["t"].as(UniformFloat) is lazy
-
- # Time-to-live of each particle
- var ttl = attributes["ttl"].as(AttributeFloat) is lazy
-end
-
-# Graphics program to display blowing up particles
-class ExplosionProgram
- super ParticleProgram
-
- redef fun vertex_shader_core do return """
- gl_Position = center * mvp;
- gl_PointSize = scale / gl_Position.z * pt;
-
- if (pt > 0.8) v_color *= (1.0-pt)/0.2;
- """
-end
-
-# Graphics program to display particles slowly drifting upwards
-class SmokeProgram
- super ParticleProgram
-
- redef fun vertex_shader_core do return """
- vec4 c = center;
- c.y += dt * 1.0;
- c.x += dt * 0.1;
-
- gl_Position = c * mvp;
- gl_PointSize = scale / gl_Position.z * (pt+0.1);
-
- if (pt < 0.1)
- v_color *= pt / 0.1;
- else
- v_color *= 1.0 - pt*0.9;
- """
-end
diff --git a/lib/gamnit/depth/selection.nit b/lib/gamnit/depth/selection.nit
deleted file mode 100644
index 954b962770..0000000000
--- a/lib/gamnit/depth/selection.nit
+++ /dev/null
@@ -1,321 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Select `Actor` from a screen coordinate
-#
-# The two main services are `App::visible_at` and ; App::visible_in_center`.
-#
-# This is implemented with simple pixel picking.
-# This algorithm draws each actor in a unique color to the display buffer,
-# using the color as an ID to detect which actor is visible at each pixel.
-#
-# It is implemented at the level of the material,
-# so it can be applied to any _gamnit_ programs.
-# However it is not optimal performance wise,
-# so client programs should implement a more efficient algorithm.
-#
-# By default, the actors are drawn as opaque objects.
-# This behavior can be refined, as does `TexturedMaterial` to use its
-# `diffuse_texture` for partial opacity.
-module selection
-
-# TODO support `sprites` and `ui_sprites`
-
-import more_materials
-intrude import depth_core
-
-redef class App
-
- # Which `Actor` is at the center of the screen?
- fun visible_in_center: nullable Actor
- do
- var display = display
- assert display != null
- return visible_at(display.width/2, display.height/2)
- end
-
- # Which `Actor` is on screen at `x, y`?
- fun visible_at(x, y: Numeric): nullable Actor
- do
- var display = display
- assert display != null
-
- if not selection_calculated then draw_selection_screen
-
- x = x.to_i
- y = y.to_i
- y = display.height - y
-
- # Read selection values
- var data = once new NativeCByteArray(4)
- glReadPixels(x, y, 1, 1, gl_RGBA, gl_UNSIGNED_BYTE, data)
- assert_no_gl_error
-
- var r = display.red_bits
- var g = display.green_bits
- var b = display.blue_bits
-
- # Rebuild ID from pixel color
- var rv = data[0].to_i >> (8-r)
- var gv = data[1].to_i >> (8-g) << (r)
- var bv = data[2].to_i >> (8-b) << (r+g)
- if data[0].to_i & (2**(8-r)-1) > (2**(8-r-1)) then rv += 1
- if data[1].to_i & (2**(8-g)-1) > (2**(8-g-1)) then gv += 1 << r
- if data[2].to_i & (2**(8-b)-1) > (2**(8-b-1)) then bv += 1 << (r+g)
- var id = rv + gv + bv
-
- # ID 0 is the background
- if id == 0 then return null
-
- # Wrongful selection? This should not happen.
- if not selection_map.keys.has(id) then
- print_error "Gamnit Warning: Invalid selection {id}"
- return null
- end
-
- return selection_map[id]
- end
-
- # Program drawing selection values to the buffer
- var selection_program = new SelectionProgram
-
- # Map IDs to actors
- private var selection_map = new Map[Int, Actor]
-
- # Is there a valid selection draw in the buffer?
- private var selection_calculated = false
-
- # Draw the selection values to the buffer
- private fun draw_selection_screen
- do
- selection_calculated = true
-
- app.selection_program.use
- app.selection_program.mvp.uniform app.world_camera.mvp_matrix
-
- # Set aside previous buffer clear color
- var user_r = glGetFloatv(gl_COLOR_CLEAR_VALUE, 0)
- var user_g = glGetFloatv(gl_COLOR_CLEAR_VALUE, 1)
- var user_b = glGetFloatv(gl_COLOR_CLEAR_VALUE, 2)
- var user_a = glGetFloatv(gl_COLOR_CLEAR_VALUE, 3)
-
- glClearColor(0.0, 0.0, 0.0, 1.0)
- glClear(gl_DEPTH_BUFFER_BIT | gl_COLOR_BUFFER_BIT)
-
- # TODO restrict the list of actors with a valid ID, maybe with an `active_actors` list?
-
- var id = 1
- for actor in actors do
- selection_map[id] = actor
- for leaf in actor.model.leaves do
- leaf.material.draw_selection(actor, leaf, id)
- end
-
- id += 1
- #id += 100 # Debug
- end
-
- # Debug, show the selection values for half a second
- #display.flip
- #0.5.sleep
-
- glClearColor(user_r, user_g, user_b, user_a)
- end
-
- redef fun frame_core(display)
- do
- super
-
- # Invalidate the selection values
- selection_calculated = false
- end
-end
-
-redef class Material
-
- # Draw `actor` to selection values
- protected fun draw_selection(actor: Actor, model: LeafModel, id: Int)
- do
- var program = app.selection_program
- var mesh = model.mesh
-
- draw_selection_texture(actor, model)
-
- program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0)
- program.scale.uniform actor.scale
-
- program.coord.array_enabled = true
- program.coord.array(mesh.vertices, 3)
- program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
-
- var display = app.display
- assert display != null
- var r = display.red_bits
- var g = display.green_bits
- var b = display.blue_bits
-
- # Build ID as a color
- var p1 = id & ((2**r)-1)
- var p2 = id >> r & ((2**g)-1)
- var p3 = id >> (r+g) & ((2**b)-1)
- program.color_id.uniform(
- p1.to_f/((2**r)-1).to_f,
- p2.to_f/((2**g)-1).to_f,
- p3.to_f/((2**b)-1).to_f, 1.0)
-
- if mesh.indices.is_empty then
- glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3)
- else
- glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array)
- end
- end
-
- private fun draw_selection_texture(actor: Actor, model: LeafModel)
- do
- var program = app.selection_program
- program.use_map_diffuse.uniform false
- end
-end
-
-redef class TexturedMaterial
- redef fun draw_selection_texture(actor, model)
- do
- var program = app.selection_program
- var mesh = model.mesh
-
- # One of the textures used, if any
- var sample_used_texture = null
- var texture = diffuse_texture
- if texture != null then
- glActiveTexture gl_TEXTURE1
- glBindTexture(gl_TEXTURE_2D, texture.gl_texture)
- program.use_map_diffuse.uniform true
- program.map_diffuse.uniform 1
- sample_used_texture = texture
- else
- program.use_map_diffuse.uniform false
- end
-
- # If using a texture, set `texture_coords`
- program.tex_coord.array_enabled = sample_used_texture != null
- if sample_used_texture != null then
- if sample_used_texture isa RootTexture then
- # Coordinates are directly valid
- program.tex_coord.array(mesh.texture_coords, 2)
- else
- # Correlate texture coordinates from the subtexture sand the mesh.
- # This is slow, but should be cached on the GPU.
- var xa = sample_used_texture.offset_left
- var xd = sample_used_texture.offset_right - xa
- var ya = sample_used_texture.offset_top
- var yd = sample_used_texture.offset_bottom - ya
-
- var tex_coords = new Array[Float].with_capacity(mesh.texture_coords.length)
- for i in [0..mesh.texture_coords.length/2[ do
- tex_coords[i*2] = xa + xd * mesh.texture_coords[i*2]
- tex_coords[i*2+1] = ya + yd * mesh.texture_coords[i*2+1]
- end
-
- program.tex_coord.array(tex_coords, 2)
- end
- end
- end
-end
-
-# Program to draw selection values
-class SelectionProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Vertex coordinates
- attribute vec4 coord;
-
- // Vertex translation
- uniform vec4 translation;
-
- // Vertex scaling
- uniform float scale;
-
- // Vertex coordinates on textures
- attribute vec2 tex_coord;
-
- // Model view projection matrix
- uniform mat4 mvp;
-
- // Model rotation
- uniform mat4 rotation;
-
- // Output for the fragment shader
- varying vec2 v_tex_coord;
-
- void main()
- {
- v_tex_coord = vec2(tex_coord.x, 1.0 - tex_coord.y);
-
- gl_Position = (vec4(coord.xyz * scale, 1.0) * rotation + translation) * mvp;
- }
- """ @ glsl_vertex_shader
-
- #
- redef var fragment_shader_source = """
- precision highp float;
-
- varying vec2 v_tex_coord;
-
- // Map used as reference for opacity
- uniform sampler2D map_diffuse;
-
- // Should `map_diffuse` be used?
- uniform bool use_map_diffuse;
-
- // Color ID
- uniform vec4 color;
-
- void main()
- {
- gl_FragColor = vec4(color.rgb, 1.0);
-
- if (use_map_diffuse && texture2D(map_diffuse, v_tex_coord).a < 0.1) {
- gl_FragColor.a = 0.0;
- }
- }
- """ @ glsl_fragment_shader
-
- # Vertices coordinates
- var coord = attributes["coord"].as(AttributeVec4) is lazy
-
- # Should this program use the texture `map_diffuse`?
- var use_map_diffuse = uniforms["use_map_diffuse"].as(UniformBool) is lazy
-
- # Diffuse texture unit
- var map_diffuse = uniforms["map_diffuse"].as(UniformSampler2D) is lazy
-
- # Coordinates on the textures, per vertex
- var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy
-
- # Translation applied to each vertex
- var translation = uniforms["translation"].as(UniformVec4) is lazy
-
- # Rotation matrix
- var rotation = uniforms["rotation"].as(UniformMat4) is lazy
-
- # Scaling per vertex
- var scale = uniforms["scale"].as(UniformFloat) is lazy
-
- # Model view projection matrix
- var mvp = uniforms["mvp"].as(UniformMat4) is lazy
-
- # ID as a color
- var color_id = uniforms["color"].as(UniformVec4) is lazy
-end
diff --git a/lib/gamnit/depth/shadow.nit b/lib/gamnit/depth/shadow.nit
deleted file mode 100644
index 4dcae8c952..0000000000
--- a/lib/gamnit/depth/shadow.nit
+++ /dev/null
@@ -1,472 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Shadow mapping using a depth texture
-#
-# The default light does not cast any shadows. It can be changed to a
-# `ParallelLight` in client games to cast sun-like shadows:
-#
-# ~~~
-# import more_lights
-#
-# var sun = new ParallelLight
-# sun.pitch = 0.25*pi
-# sun.yaw = 0.25*pi
-# app.light = sun
-# ~~~
-module shadow
-
-intrude import gamnit::depth_core
-
-redef class App
-
- # Resolution of the shadow texture, defaults to 4096 pixels
- #
- # TODO make configurable / ask the hardware for gl_MAX_TEXTURE_SIZE
- var shadow_resolution = 4096
-
- # Are shadows supported by the current hardware configuration?
- #
- # The implementation may change in the future, but it currently relies on
- # the GL extension `GL_EOS_depth_texture`.
- var supports_shadows: Bool is lazy do
- return display.as(not null).gl_extensions.has("GL_OES_depth_texture")
- end
-
- # Is `shadow_context.depth_texture` ready to be used?
- fun shadow_depth_texture_available: Bool
- do return supports_shadows and shadow_context.depth_texture != -1
-
- private var shadow_depth_program = new ShadowDepthProgram
-
- private var perf_clock_shadow = new Clock is lazy
-
- redef fun create_gamnit
- do
- super
-
- var program = shadow_depth_program
- program.compile_and_link
- var error = program.error
- assert error == null else print_error error
- end
-
- private var shadow_context: ShadowContext = create_shadow_context is lazy
-
- private fun create_shadow_context: ShadowContext
- do
- var display = display
- assert display != null
-
- var context = new ShadowContext
- context.prepare_once(display, shadow_resolution)
- return context
- end
-
- # Update the depth texture from the light point of view
- #
- # This method updates `shadow_context.depth_texture`.
- protected fun frame_core_shadow_prep(display: GamnitDisplay)
- do
- if not supports_shadows then return
-
- var light = app.light
- if not light isa LightCastingShadows then return
-
- # Make sure there's no errors pending
- assert glGetError == gl_NO_ERROR
-
- # Bind the framebuffer and make sure it is OK
- glBindFramebuffer(gl_FRAMEBUFFER, shadow_context.light_view_framebuffer)
- assert glGetError == gl_NO_ERROR
- assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE
-
- # Draw to fill the depth texture and only the depth
- glViewport(0, 0, shadow_resolution, shadow_resolution)
- glColorMask(false, false, false, false)
- glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT
- assert glGetError == gl_NO_ERROR
-
- # Update light position
- var camera = light.camera
- camera.position.x = app.world_camera.position.x
- camera.position.y = app.world_camera.position.y
- camera.position.z = app.world_camera.position.z
-
- # Draw all actors
- for actor in actors do
- for leaf in actor.model.leaves do
- leaf.material.draw_depth(actor, leaf, camera)
- end
- end
-
- # Take down, bring back default values
- bind_screen_framebuffer shadow_context.screen_framebuffer
- glColorMask(true, true, true, true)
- end
-
- # ---
- # Debug: show light view in the bottom left of the screen
-
- # Lazy load the debugging program
- private var shadow_debug_program: LightPointOfViewProgram is lazy do
- var program = new LightPointOfViewProgram
- program.compile_and_link
- var error = program.error
- assert error == null else print_error error
- return program
- end
-
- # Draw the light view in the bottom left of the screen, for debugging only
- #
- # The shadow depth texture is a square that can be deformed by this projection.
- protected fun frame_core_shadow_debug(display: GamnitDisplay)
- do
- if not supports_shadows then
- print_error "Error: Shadows are not supported by the current hardware configuration"
- return
- end
-
- perf_clock_shadow.lapse
-
- var program = shadow_debug_program
-
- glBindBuffer(gl_ARRAY_BUFFER, shadow_context.buffer_array)
- glViewport(0, 0, display.width/3, display.height/3)
- glClear gl_DEPTH_BUFFER_BIT
- program.use
-
- # Uniforms
- glActiveTexture gl_TEXTURE0
- glBindTexture(gl_TEXTURE_2D, shadow_context.depth_texture)
- program.texture.uniform 0
-
- # Attributes
- var sizeof_gl_float = 4
- var n_floats = 3
- glEnableVertexAttribArray program.coord.location
- glVertexAttribPointeri(program.coord.location, n_floats, gl_FLOAT, false, 0, 0)
- var offset = 4 * n_floats * sizeof_gl_float
-
- n_floats = 2
- glEnableVertexAttribArray program.tex_coord.location
- glVertexAttribPointeri(program.tex_coord.location, n_floats, gl_FLOAT, false, 0, offset)
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- # Draw
- glDrawArrays(gl_TRIANGLE_STRIP, 0, 4)
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- # Take down
- glBindBuffer(gl_ARRAY_BUFFER, 0)
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- sys.perfs["gamnit shadow debug"].add app.perf_clock_shadow.lapse
- end
-end
-
-# Handles to reused GL buffers and texture
-private class ShadowContext
-
- # Real screen framebuffer
- var screen_framebuffer: Int = -1
-
- # Framebuffer for the light point of view
- var light_view_framebuffer: Int = -1
-
- # Depth attached to `light_view_framebuffer`
- var depth_texture: Int = -1
-
- # Buffer name for vertex data
- var buffer_array: Int = -1
-
- # Prepare all attributes once per resolution change
- fun prepare_once(display: GamnitDisplay, shadow_resolution: Int)
- do
- assert display.gl_extensions.has("GL_OES_depth_texture")
-
- # Set aside the real screen framebuffer name
- var screen_framebuffer = glGetIntegerv(gl_FRAMEBUFFER_BINDING, 0)
- self.screen_framebuffer = screen_framebuffer
-
- # Framebuffer
- var framebuffer = glGenFramebuffers(1).first
- glBindFramebuffer(gl_FRAMEBUFFER, framebuffer)
- assert glIsFramebuffer(framebuffer)
- self.light_view_framebuffer = framebuffer
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- # Depth & texture/color
- var textures = glGenTextures(1)
- self.depth_texture = textures[0]
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- resize(display, shadow_resolution)
-
- # Array buffer
- buffer_array = glGenBuffers(1).first
- glBindBuffer(gl_ARRAY_BUFFER, buffer_array)
- assert glIsBuffer(buffer_array)
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- ## coord
- var data = new Array[Float]
- data.add_all([-1.0, -1.0, 0.0,
- 1.0, -1.0, 0.0,
- -1.0, 1.0, 0.0,
- 1.0, 1.0, 0.0])
- ## tex_coord
- data.add_all([0.0, 0.0,
- 1.0, 0.0,
- 0.0, 1.0,
- 1.0, 1.0])
- var c_data = new GLfloatArray.from(data)
- glBufferData(gl_ARRAY_BUFFER, data.length*4, c_data.native_array, gl_STATIC_DRAW)
-
- glBindBuffer(gl_ARRAY_BUFFER, 0)
-
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
- end
-
- # Init size or resize `depth_texture`
- fun resize(display: GamnitDisplay, shadow_resolution: Int)
- do
- glBindFramebuffer(gl_FRAMEBUFFER, light_view_framebuffer)
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- # Depth texture
- var depth_texture = self.depth_texture
- glActiveTexture gl_TEXTURE0
- glBindTexture(gl_TEXTURE_2D, depth_texture)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_NEAREST)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE)
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- # TODO support hardware shadows with GL ES 3.0 or GL_EXT_shadow_samplers
- #glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_COMPARE_MODE, ...)
-
- glTexImage2D(gl_TEXTURE_2D, 0, gl_DEPTH_COMPONENT,
- shadow_resolution, shadow_resolution,
- 0, gl_DEPTH_COMPONENT, gl_UNSIGNED_SHORT, new Pointer.nul)
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- glFramebufferTexture2D(gl_FRAMEBUFFER, gl_DEPTH_ATTACHMENT, gl_TEXTURE_2D, depth_texture, 0)
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- # Check if the framebuffer is complete and valid
- assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE
-
- # Take down
- glBindTexture(gl_TEXTURE_2D, 0)
- glBindFramebuffer(gl_FRAMEBUFFER, 0)
- gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
- end
-
- var destroyed = false
-
- fun destroy
- do
- if destroyed then return
- destroyed = true
-
- # Free the buffer
- glDeleteBuffers([buffer_array])
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
- buffer_array = -1
-
- # Free the array and framebuffer plus its attachments
- glDeleteBuffers([buffer_array])
- glDeleteFramebuffers([light_view_framebuffer])
- glDeleteTextures([depth_texture])
- end
-end
-
-redef class Material
- # Optimized draw of `model`, a part of `actor`, from the view of `camera`
- #
- # This drawing should only produce usable depth data. The default behavior,
- # uses `shadow_depth_program`.
- protected fun draw_depth(actor: Actor, model: LeafModel, camera: Camera)
- do
- var program = app.shadow_depth_program
- program.use
- program.mvp.uniform camera.mvp_matrix
-
- var mesh = model.mesh
-
- program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0)
- program.scale.uniform actor.scale
- program.use_map_diffuse.uniform false
-
- program.tex_coord.array_enabled = true
- program.tex_coord.array(mesh.texture_coords, 2)
-
- program.coord.array_enabled = true
- program.coord.array(mesh.vertices, 3)
-
- program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
-
- if mesh.indices.is_empty then
- glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3)
- else
- glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array)
- end
- end
-
-end
-
-# Efficiently draw actors from the light view
-class ShadowDepthProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Vertex coordinates
- attribute vec4 coord;
-
- // Vertex translation
- uniform vec4 translation;
-
- // Vertex scaling
- uniform float scale;
-
- // Vertex coordinates on textures
- attribute vec2 tex_coord;
-
- // Vertex normal
- attribute vec3 normal;
-
- // Model view projection matrix
- uniform mat4 mvp;
-
- // Rotation matrix
- uniform mat4 rotation;
-
- // Output for the fragment shader
- varying vec2 v_tex_coord;
-
- void main()
- {
- vec4 pos = (vec4(coord.xyz * scale, 1.0) * rotation + translation);
- gl_Position = pos * mvp;
-
- // Pass varyings to the fragment shader
- v_tex_coord = vec2(tex_coord.x, 1.0 - tex_coord.y);
- }
- """ @ glsl_vertex_shader
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Diffuse map
- uniform bool use_map_diffuse;
- uniform sampler2D map_diffuse;
-
- varying vec2 v_tex_coord;
-
- void main()
- {
- if (use_map_diffuse && texture2D(map_diffuse, v_tex_coord).a <= 0.01) {
- discard;
- }
- }
- """ @ glsl_fragment_shader
-
- # Vertices coordinates
- var coord = attributes["coord"].as(AttributeVec4) is lazy
-
- # Should this program use the texture `map_diffuse`?
- var use_map_diffuse = uniforms["use_map_diffuse"].as(UniformBool) is lazy
-
- # Diffuse texture unit
- var map_diffuse = uniforms["map_diffuse"].as(UniformSampler2D) is lazy
-
- # Coordinates on the textures, per vertex
- var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy
-
- # Diffuse color
- var diffuse_color = uniforms["diffuse_color"].as(UniformVec4) is lazy
-
- # Translation applied to each vertex
- var translation = uniforms["translation"].as(UniformVec4) is lazy
-
- # Rotation matrix
- var rotation = uniforms["rotation"].as(UniformMat4) is lazy
-
- # Scaling per vertex
- var scale = uniforms["scale"].as(UniformFloat) is lazy
-
- # Model view projection matrix
- var mvp = uniforms["mvp"].as(UniformMat4) is lazy
-end
-
-# Draw the camera point of view on screen
-private class LightPointOfViewProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Vertex coordinates
- attribute vec3 coord;
-
- // Vertex coordinates on textures
- attribute vec2 tex_coord;
-
- // Output to the fragment shader
- varying vec2 v_coord;
-
- void main()
- {
- gl_Position = vec4(coord, 1.0);
- v_coord = tex_coord;
- }
- """ @ glsl_vertex_shader
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Virtual screen texture / color attachment
- uniform sampler2D texture0;
-
- // Input from the vertex shader
- varying vec2 v_coord;
-
- void main()
- {
- gl_FragColor = texture2D(texture0, v_coord);
- }
- """ @ glsl_fragment_shader
-
- # Vertices coordinates
- var coord = attributes["coord"].as(AttributeVec3) is lazy
-
- # Coordinates on the textures, per vertex
- var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy
-
- # Visible texture
- var texture = uniforms["texture0"].as(UniformSampler2D) is lazy
-end
diff --git a/lib/gamnit/depth/stereoscopic_view.nit b/lib/gamnit/depth/stereoscopic_view.nit
deleted file mode 100644
index 2857e7d14f..0000000000
--- a/lib/gamnit/depth/stereoscopic_view.nit
+++ /dev/null
@@ -1,88 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Refine `EulerCamera` and `App::frame_core_draw` to get a stereoscopic view
-module stereoscopic_view
-
-import depth
-intrude import cameras
-
-redef class EulerCamera
- redef var mvp_matrix = new Matrix.identity(4)
-
- # Half of the distance between the eyes
- var eye_separation: Float = 0.03125
-
- # MVP matrix for the left eye
- fun mvp_matrix_left: Matrix do return mvp_matrix_eye(eye_separation)
-
- # MVP matrix for the right eye
- fun mvp_matrix_right: Matrix do return mvp_matrix_eye(-eye_separation)
-
- # Get an MVP matrix for an eye at `diff` world unit from the center
- private fun mvp_matrix_eye(diff: Float): Matrix
- do
- var view = new Matrix.identity(4)
-
- # Translate the world away from the camera
- view.translate(-position.x/2.0, -position.y/2.0, -position.z/2.0)
-
- # Rotate the camera, first by looking left or right, then up or down
- view = view * rotation_matrix
-
- # Apply eye transformation
- var translation = new Matrix.identity(4)
- translation.translate(diff, 0.0, 0.0)
- view = view * translation
-
- # Use a projection matrix with a depth
- var projection = new Matrix.perspective(pi*field_of_view_y/2.0,
- display.aspect_ratio, near, far)
-
- return view * projection
- end
-end
-
-redef class GamnitDisplay
-
- # With stereoscopic view, the aspect ratio (in each eye) is half of the screen
- redef fun aspect_ratio do return super / 2.0
-end
-
-redef class App
- redef fun frame_core_draw(display) do frame_core_stereoscopic display
-
- # Split the screen in two, and call `frame_core_depth` for each eyes
- protected fun frame_core_stereoscopic(display: GamnitDisplay)
- do
- var half_width = display.width / 2
-
- # Left eye
- glViewport(0, 0, half_width, display.height)
- world_camera.mvp_matrix = world_camera.mvp_matrix_left
- frame_core_depth display
-
- # Right eye
- glViewport(half_width, 0, half_width, display.height)
- world_camera.mvp_matrix = world_camera.mvp_matrix_right
- frame_core_depth display
-
- # We reset the viewport for selection
- glViewport(0, 0, display.width, display.height)
-
- # Check for errors
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print gl_error
- end
-end
diff --git a/lib/gamnit/depth/vr.nit b/lib/gamnit/depth/vr.nit
deleted file mode 100644
index 1c3a845315..0000000000
--- a/lib/gamnit/depth/vr.nit
+++ /dev/null
@@ -1,19 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# VR support for gamnit depth, for Android only
-module vr
-
-import cardboard
-import stereoscopic_view
diff --git a/lib/gamnit/display.nit b/lib/gamnit/display.nit
deleted file mode 100644
index 0d78907ed5..0000000000
--- a/lib/gamnit/display.nit
+++ /dev/null
@@ -1,79 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Abstract display services
-module display
-
-import ::glesv2
-import mnit::input
-
-import display_linux is conditional(linux)
-import display_android is conditional(android)
-import display_ios is conditional(ios)
-
-# Should Gamnit be more verbose?
-fun debug_gamnit: Bool do return false
-
-# General display class, is sized and drawable
-class GamnitDisplay
-
- # Width of the display, in pixels
- fun width: Int is abstract
-
- # Height of the display, in pixels
- fun height: Int is abstract
-
- # Aspect ratio of the screen, `width / height`
- fun aspect_ratio: Float do return width.to_f / height.to_f
-
- # Is the cursor locked et the center of the screen?
- var lock_cursor = false is writable
-
- # Is the cursor visible?
- #
- # Only affects the desktop implementations.
- var show_cursor: Bool = true is writable
-
- # Number of bits used for the red value in the color buffer
- fun red_bits: Int do return 8
-
- # Number of bits used for the green value in the color buffer
- fun green_bits: Int do return 8
-
- # Number of bits used for the blue value in the color buffer
- fun blue_bits: Int do return 8
-
- # Prepare this display
- #
- # The implementation varies per platform.
- fun setup is abstract
-
- # Close this display and free underlying resources
- #
- # The implementation varies per platform.
- fun close do end
-
- # Flip the display buffers
- #
- # The implementation varies per platform.
- fun flip do end
-
- # Loop on available events and feed them back to the app
- #
- # The implementation varies per platform.
- fun feed_events do end
-
- # Extensions to OpenGL ES 2.0 supported by the current configuration
- var gl_extensions: Array[String] is lazy do return glGetString(gl_EXTENSIONS).split(' ')
-end
diff --git a/lib/gamnit/display_android.nit b/lib/gamnit/display_android.nit
deleted file mode 100644
index d198790bc4..0000000000
--- a/lib/gamnit/display_android.nit
+++ /dev/null
@@ -1,90 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Gamnit display implementation for Android
-#
-# Gamnit apps on Android require OpenGL ES 3.0 because, even if it uses only
-# the OpenGL ES 2.0 API, the default shaders have more than 8 vertex attributes.
-# OpenGL ES 3.0 ensures at least 8 vertex attributes, while 2.0 ensures only 4.
-#
-# This module relies on `android::native_app_glue` and the Android NDK.
-module display_android is
- android_manifest """"""
-end
-
-import ::android::game
-intrude import android::load_image
-
-private import gamnit::egl
-intrude import textures
-
-redef class GamnitDisplay
-
- redef fun setup
- do
- var native_display = egl_default_display
- var native_window = app.native_app_glue.window
-
- setup_egl_display native_display
-
- # We need 8 bits per color for selection by color
- select_egl_config(red_bits, green_bits, blue_bits, 0, 8, 0)
-
- var format = egl_config.attribs(egl_display).native_visual_id
- assert not native_window.address_is_null
- native_window.set_buffers_geometry(0, 0, format)
-
- setup_egl_context native_window
- end
-
- redef fun close do close_egl
-end
-
-redef class TextureAsset
-
- private fun load_bitmap(asset_manager: AssetManager, path: String): NativeBitmap
- do
- return asset_manager.bitmap(path)
- end
-
- redef fun load_from_platform
- do
- jni_env.push_local_frame 4
-
- var asset_manager = app.asset_manager
- var bmp = load_bitmap(asset_manager, path)
- if bmp.is_java_null then
- error = new Error("Failed to load texture at '{path}'")
- jni_env.pop_local_frame
- return
- end
-
- var buf = bmp.copy_pixels(unmultiply=not premultiply_alpha)
- loaded = true
- width = bmp.width.to_f
- height = bmp.height.to_f
- var pixels = buf.native_array
-
- load_from_pixels(pixels, bmp.width, bmp.height, gl_RGBA)
- buf.destroy
- bmp.recycle
-
- jni_env.pop_local_frame
- end
-end
-
-redef class Pointer
- # Disable out premultiply as we use only the one from Android
- redef fun premultiply_alpha(width, height) do end
-end
diff --git a/lib/gamnit/display_ios.nit b/lib/gamnit/display_ios.nit
deleted file mode 100644
index 3b8cfdb725..0000000000
--- a/lib/gamnit/display_ios.nit
+++ /dev/null
@@ -1,111 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Gamnit display implementation for iOS
-module display_ios
-
-import ios
-import ios::glkit
-intrude import ios::assets
-intrude import textures
-
-in "ObjC" `{
- #import
- #import
-`}
-
-redef class GamnitDisplay
-
- redef var width = 200
- redef var height = 300
-
- # Underlying GLKit game controller and view
- var glk_view: NitGLKView is noautoinit
-
- redef fun setup
- do
- var view = new GamnitGLKView
- view.multiple_touch_enabled = true
- self.glk_view = view
- self.width = view.drawable_width
- self.height = view.drawable_height
- end
-end
-
-# View controller implemented by gamnit
-class GamnitGLKView
- super NitGLKView
-end
-
-redef class TextureAsset
- redef fun load_from_platform
- do
- var error = glGetError
- assert error == gl_NO_ERROR else print_error error
-
- # Find file
- var ns_path = ("assets"/path).to_nsstring
- var path_in_bundle = asset_path(ns_path)
- if path_in_bundle.address_is_null then
- self.error = new Error("Texture at '{path}' not found")
- return
- end
-
- # Load texture
- var glk_texture = glkit_load(path_in_bundle, premultiply_alpha)
- if glk_texture.address_is_null then
- self.error = new Error("Failed to load texture at '{self.path}'")
- return
- end
-
- gl_texture = glk_texture.name
- width = glk_texture.width.to_f
- height = glk_texture.height.to_f
- loaded = true
-
- error = glGetError
- assert error == gl_NO_ERROR
- end
-
- # Load image at `path` with GLKit services
- private fun glkit_load(path: NSString, premultiply: Bool): GLKTextureInfo
- in "ObjC" `{
-
- // The premultiplication flag has been inverted between iOS 9 and 10
- NSNumber *premultiply_opt;
- NSComparisonResult order = [[UIDevice currentDevice].systemVersion compare: @"10.0.0" options: NSNumericSearch];
- if (order == NSOrderedSame || order == NSOrderedDescending) {
- // >= 10
- premultiply_opt = premultiply? @NO: @YES;
- } else {
- // < 10
- premultiply_opt = premultiply? @YES: @NO;
- }
-
- NSDictionary *options = @{GLKTextureLoaderApplyPremultiplication: premultiply_opt};
- NSError *error;
- GLKTextureInfo *spriteTexture = [GLKTextureLoader textureWithContentsOfFile: path options: options error: &error];
- if (error != nil) NSLog(@"Failed to load texture: %@", [error localizedDescription]); // TODO return details to Nit
-
- return spriteTexture;
- `}
-end
-
-private extern class GLKTextureInfo in "ObjC" `{ GLKTextureInfo * `}
- super NSObject
-
- fun name: Int in "ObjC" `{ return self.name; `}
- fun width: Int in "ObjC" `{ return self.width; `}
- fun height: Int in "ObjC" `{ return self.height; `}
-end
diff --git a/lib/gamnit/display_linux.nit b/lib/gamnit/display_linux.nit
deleted file mode 100644
index f678bbeae1..0000000000
--- a/lib/gamnit/display_linux.nit
+++ /dev/null
@@ -1,145 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Gamnit display implementation for GNU/Linux using `egl`, `sdl` and `x11`
-module display_linux
-
-import sdl2::image
-import sdl2::mixer
-
-import egl # local to gamnit
-intrude import display
-intrude import textures
-
-redef class GamnitDisplay
-
- # Actual width or desired width of the window, can be set before calling `setup`
- fun width=(value: Int) do requested_width = value
- private var requested_width = 1920
-
- # Actual height or desired height of the window, can be set before calling `setup`
- fun height=(value: Int) do requested_height = value
- private var requested_height = 1080
-
- redef fun show_cursor do return sdl.show_cursor
-
- redef fun show_cursor=(val) do sdl.show_cursor = val
-
- redef fun lock_cursor=(val) do sdl.relative_mouse_mode = val
-
- redef fun lock_cursor do return sdl.relative_mouse_mode
-
- # Setup SDL, wm, EGL in order
- redef fun setup
- do
- if debug_gamnit then print "Setting up SDL"
- self.sdl_window = setup_sdl(requested_width, requested_height)
-
- if debug_gamnit then print "Setting up window manager"
- setup_egl_display sdl_window.wm_info.display_handle
-
- if debug_gamnit then print "Setting up EGL context"
- select_egl_config(red_bits, green_bits, blue_bits, 8, 8, 0)
- setup_egl_context sdl_window.wm_info.window_handle
- end
-
- # Close EGL and SDL in reverse order of `setup` (nothing to do for X11)
- redef fun close
- do
- close_egl
- close_sdl
- end
-
- # ---
- # SDL
-
- # The SDL display managing the window and events
- var sdl_window: SDLWindow is noautoinit
-
- # Title of the window, must be set before creating the window (or redef)
- var window_title = "gamnit game" is lazy, writable
-
- # Setup the SDL display and lib
- fun setup_sdl(window_width, window_height: Int): SDLWindow
- do
- assert sdl.initialize((new SDLInitFlags).video.audio) else
- print_error "Failed to initialize SDL2: {sdl.error}"
- end
-
- var img_flags = (new SDLImgInitFlags).png.jpg
- assert sdl.img.initialize(img_flags) == img_flags else
- print_error "Failed to initialize SDL2 IMG: {sdl.error}"
- end
-
- var sdl_window = new SDLWindow(window_title.to_cstring, window_width, window_height, sdl_window_flags)
- assert not sdl_window.address_is_null else
- print_error "Failed to create SDL2 window: {sdl.error}"
- end
-
- # Audio support
- var inited = mix.initialize(mix_init_flags)
- if inited != mix_init_flags then
- print_error "Failed to load SDL2 mixer format supports: {mix.error}"
- end
-
- var open = mix.open_audio(44100, mix.default_format, 2, 1024)
- if not open then
- print_error "Failed to initialize SDL2 mixer: {mix.error}"
- end
-
- return sdl_window
- end
-
- # SDL2 window initialization flags
- #
- # The default value supports OpenGL and window resizing.
- var sdl_window_flags: SDLWindowFlags = (new SDLWindowFlags).opengl.resizable is lazy, writable
-
- # SDL2 mixer initialization flags
- #
- # Defaults to FLAC, MP3 and OGG.
- var mix_init_flags: MixInitFlags = mix.flac | mix.mp3 | mix.ogg is lazy, writable
-
- # Close the SDL display
- fun close_sdl
- do
- sdl_window.destroy
- mix.close_audio
- mix.quit
- sdl.finalize
- end
-end
-
-redef class TextureAsset
-
- redef fun load_from_platform
- do
- var path = "assets" / path
-
- var surface = new SDLSurface.load(path.to_cstring)
- if surface.address_is_null then
- error = new Error("Failed to load texture at '{path}'")
- return
- end
-
- self.width = surface.w.to_f
- self.height = surface.h.to_f
- var format = if surface.format.amask > 0u32 then gl_RGBA else gl_RGB
- var pixels = surface.pixels
-
- load_from_pixels(pixels, surface.w, surface.h, format)
-
- surface.free
- end
-end
diff --git a/lib/gamnit/dynamic_resolution.nit b/lib/gamnit/dynamic_resolution.nit
deleted file mode 100644
index 2c6a4c88b7..0000000000
--- a/lib/gamnit/dynamic_resolution.nit
+++ /dev/null
@@ -1,354 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Virtual screen with a resolution independent from the real screen
-#
-# The attribute `dynamic_resolution_ratio` sets the size of the virtual screen
-# in relation to the real screen. See its documentation for more information.
-#
-# Reference implementation:
-# https://software.intel.com/en-us/articles/dynamic-resolution-rendering-on-opengl-es-2
-module dynamic_resolution
-
-import performance_analysis
-
-import gamnit
-
-redef class App
- # Resolution of the dynamic screen as ratio of the real screen resolution.
- #
- # - At 1.0, the default, the virtual screen is not used and the visuals are
- # drawn directly to the real screen and pixels.
- # - When below 1.0, there is less pixels in the dynamic screen than in the
- # real screen. This reduces the strain on the GPU, especially of high
- # resolution displays.
- # - Values above 1.0 are not supported at this point, but they would allow
- # super-sampling.
- #
- # This value must be set either by the user using a video quality slider or
- # by an heuristic according to the device capabilities.
- # A lower value should use less battery power on mobile devices.
- #
- # This value is applied to both X and Y, so it has an exponential effect on
- # the number of pixels.
- var dynamic_resolution_ratio = 1.0 is writable
-
- # Minimum dynamic screen resolution
- var min_dynamic_resolution_ratio = 0.0125 is writable
-
- # Maximum dynamic screen resolution, must be set before first draw
- var max_dynamic_resolution_ratio = 1.0 is writable
-
- private var dynres_program = new DynamicResolutionProgram
-
- private var perf_clock_dynamic_resolution = new Clock is lazy
-
- # Real screen framebuffer
- private var screen_framebuffer_cache: Int = -1
-
- # Real screen framebuffer name
- fun screen_framebuffer: Int
- do
- var cache = screen_framebuffer_cache
- if cache != -1 then return cache
-
- cache = glGetIntegerv(gl_FRAMEBUFFER_BINDING, 0)
- self.screen_framebuffer_cache = cache
- return cache
- end
-
- redef fun create_gamnit
- do
- super
-
- var program = dynres_program
- program.compile_and_link
- var error = program.error
- assert error == null else print_error error
-
- dynamic_context_cache = null
- end
-
- redef fun on_resize(display)
- do
- if dynamic_context_cache != null then dynamic_context.resize(display, max_dynamic_resolution_ratio)
- super
- end
-
- # Prepare to draw to the dynamic screen if `dynamic_resolution_ratio != 1.0`
- protected fun frame_core_dynamic_resolution_before(display: GamnitDisplay)
- do
- # TODO autodetect when to lower/increase resolution
-
- if dynamic_resolution_ratio == 1.0 then
- # Draw directly to the screen framebuffer
- bind_screen_framebuffer screen_framebuffer
- glViewport(0, 0, display.width, display.height)
- glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT
-
- assert glGetError == gl_NO_ERROR
- return
- end
-
- # Draw to our dynamic framebuffer
- glBindFramebuffer(gl_FRAMEBUFFER, dynamic_context.dynamic_framebuffer)
-
- var ratio = dynamic_resolution_ratio
- ratio = ratio.clamp(min_dynamic_resolution_ratio, max_dynamic_resolution_ratio)
- glViewport(0, 0, (display.width.to_f*ratio).to_i,
- (display.height.to_f*ratio).to_i)
-
- glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT
-
- assert glGetError == gl_NO_ERROR
- end
-
- # Draw the dynamic screen to the real screen if `dynamic_resolution_ratio != 1.0`
- protected fun frame_core_dynamic_resolution_after(display: GamnitDisplay)
- do
- if dynamic_resolution_ratio == 1.0 then return
- perf_clock_dynamic_resolution.lapse
-
- var ratio = dynamic_resolution_ratio
- ratio = ratio.clamp(min_dynamic_resolution_ratio, max_dynamic_resolution_ratio)
-
- bind_screen_framebuffer screen_framebuffer
- glBindBuffer(gl_ARRAY_BUFFER, dynamic_context.buffer_array)
- glViewport(0, 0, display.width, display.height)
- glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT
- dynres_program.use
-
- # Uniforms
- glActiveTexture gl_TEXTURE0
- glBindTexture(gl_TEXTURE_2D, dynamic_context.texture)
- dynres_program.texture.uniform 0
- dynres_program.ratio.uniform ratio
-
- # Attributes
- var sizeof_gl_float = 4
- var n_floats = 3
- glEnableVertexAttribArray dynres_program.coord.location
- glVertexAttribPointeri(dynres_program.coord.location, n_floats, gl_FLOAT, false, 0, 0)
- var offset = 4 * n_floats * sizeof_gl_float
-
- n_floats = 2
- glEnableVertexAttribArray dynres_program.tex_coord.location
- glVertexAttribPointeri(dynres_program.tex_coord.location, n_floats, gl_FLOAT, false, 0, offset)
- assert glGetError == gl_NO_ERROR
-
- # Draw
- glDrawArrays(gl_TRIANGLE_STRIP, 0, 4)
- assert glGetError == gl_NO_ERROR
-
- # Take down
- glBindBuffer(gl_ARRAY_BUFFER, 0)
- assert glGetError == gl_NO_ERROR
-
- sys.perfs["gamnit flat dyn res"].add app.perf_clock_dynamic_resolution.lapse
- end
-
- # Framebuffer and texture for dynamic resolution intermediate drawing
- private fun dynamic_context: DynamicContext
- do
- var cache = dynamic_context_cache
- if cache != null then return cache
-
- cache = create_dynamic_context
- dynamic_context_cache = cache
- return cache
- end
-
- private var dynamic_context_cache: nullable DynamicContext = null
-
- private fun create_dynamic_context: DynamicContext
- do
- # TODO option or flag to regen on real resolution change.
-
- var display = display
- assert display != null
-
- var context = new DynamicContext
- context.prepare_once(display, max_dynamic_resolution_ratio)
- return context
- end
-end
-
-# Handles to reused GL buffers and texture
-private class DynamicContext
-
- # Dynamic screen framebuffer
- var dynamic_framebuffer: Int = -1
-
- # Depth renderbuffer attached to `dynamic_framebuffer`
- var depth_renderbuffer: Int = -1
-
- # Texture attached to `dynamic_framebuffer` as color attachment
- var texture: Int = -1
-
- # Buffer name for vertex data
- var buffer_array: Int = -1
-
- # Prepare all attributes once per resolution change
- fun prepare_once(display: GamnitDisplay, max_dynamic_resolution_ratio: Float)
- do
- # TODO enable antialiasing.
-
- # Framebuffer
- var framebuffer = glGenFramebuffers(1).first
- glBindFramebuffer(gl_FRAMEBUFFER, framebuffer)
- assert glIsFramebuffer(framebuffer)
- self.dynamic_framebuffer = framebuffer
- assert glGetError == gl_NO_ERROR
-
- # Depth & texture/color
- var depthbuffer = glGenRenderbuffers(1).first
- self.depth_renderbuffer = depthbuffer
- var texture = glGenTextures(1).first
- self.texture = texture
- assert glGetError == gl_NO_ERROR
-
- resize(display, max_dynamic_resolution_ratio)
- assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE
-
- # Array buffer
- buffer_array = glGenBuffers(1).first
- glBindBuffer(gl_ARRAY_BUFFER, buffer_array)
- assert glIsBuffer(buffer_array)
- assert glGetError == gl_NO_ERROR
-
- ## coord
- var data = new Array[Float]
- data.add_all([-1.0, -1.0, 0.0,
- 1.0, -1.0, 0.0,
- -1.0, 1.0, 0.0,
- 1.0, 1.0, 0.0])
- ## tex_coord
- data.add_all([0.0, 0.0,
- 1.0, 0.0,
- 0.0, 1.0,
- 1.0, 1.0])
- var c_data = new GLfloatArray.from(data)
- glBufferData(gl_ARRAY_BUFFER, data.length*4, c_data.native_array, gl_STATIC_DRAW)
-
- glBindBuffer(gl_ARRAY_BUFFER, 0)
-
- assert glGetError == gl_NO_ERROR
- end
-
- # Init size or resize `depth_renderbuffer` and `texture`
- fun resize(display: GamnitDisplay, max_dynamic_resolution_ratio: Float)
- do
- var width = (display.width.to_f * max_dynamic_resolution_ratio).to_i
- var height = (display.height.to_f * max_dynamic_resolution_ratio).to_i
-
- glBindFramebuffer(gl_FRAMEBUFFER, dynamic_framebuffer)
-
- var depthbuffer = self.depth_renderbuffer
- var texture = self.texture
-
- # Depth
- glBindRenderbuffer(gl_RENDERBUFFER, depthbuffer)
- assert glIsRenderbuffer(depthbuffer)
- glRenderbufferStorage(gl_RENDERBUFFER, gl_DEPTH_COMPONENT16, width, height)
- glFramebufferRenderbuffer(gl_FRAMEBUFFER, gl_DEPTH_ATTACHMENT, gl_RENDERBUFFER, depthbuffer)
- assert glGetError == gl_NO_ERROR
-
- # Texture
- glBindTexture(gl_TEXTURE_2D, texture)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE)
- glTexImage2D(gl_TEXTURE_2D, 0, gl_RGB, width, height,
- 0, gl_RGB, gl_UNSIGNED_BYTE, new Pointer.nul)
- glFramebufferTexture2D(gl_FRAMEBUFFER, gl_COLOR_ATTACHMENT0, gl_TEXTURE_2D, texture, 0)
-
- assert glGetError == gl_NO_ERROR
-
- # Take down
- glBindRenderbuffer(gl_RENDERBUFFER, 0)
- glBindFramebuffer(gl_FRAMEBUFFER, 0)
-
- assert glGetError == gl_NO_ERROR
- end
-
- var destroyed = false
- fun destroy
- do
- if destroyed then return
- destroyed = true
-
- # Free the buffer
- glDeleteBuffers([buffer_array])
- assert glGetError == gl_NO_ERROR
- buffer_array = -1
-
- # Free the dynamic framebuffer and its attachments
- glDeleteBuffers([buffer_array])
- glDeleteFramebuffers([dynamic_framebuffer])
- glDeleteRenderbuffers([depth_renderbuffer])
- glDeleteTextures([texture])
- end
-end
-
-private class DynamicResolutionProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Vertex coordinates
- attribute vec3 coord;
-
- // Vertex coordinates on textures
- attribute vec2 tex_coord;
-
- // Output to the fragment shader
- varying vec2 v_coord;
-
- void main()
- {
- gl_Position = vec4(coord, 1.0);
- v_coord = tex_coord;
- }
- """ @ glsl_vertex_shader
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Virtual screen texture / color attachment
- uniform sampler2D texture0;
-
- // Input from the vertex shader
- varying vec2 v_coord;
-
- // Ratio of the virtual screen to draw
- uniform float ratio;
-
- void main()
- {
- gl_FragColor = texture2D(texture0, v_coord*ratio);
- }
- """ @ glsl_fragment_shader
-
- # Vertices coordinates
- var coord = attributes["coord"].as(AttributeVec3) is lazy
-
- # Coordinates on the textures, per vertex
- var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy
-
- # Virtual screen texture / color attachment
- var texture = uniforms["texture0"].as(UniformSampler2D) is lazy
-
- # Ratio of the virtual screen to draw
- var ratio = uniforms["ratio"].as(UniformFloat) is lazy
-end
diff --git a/lib/gamnit/egl.nit b/lib/gamnit/egl.nit
deleted file mode 100644
index f425b5853a..0000000000
--- a/lib/gamnit/egl.nit
+++ /dev/null
@@ -1,164 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Use of EGL to implement Gamnit on GNU/Linux and Android
-module egl
-
-import ::egl
-
-import gamnit::display
-
-redef class GamnitDisplay
-
- # The EGL display
- var egl_display: EGLDisplay is noautoinit
-
- # The EGL context
- var egl_context: EGLContext is noautoinit
-
- # The EGL surface for the window
- var window_surface: EGLSurface is noautoinit
-
- # The selected EGL configuration
- var egl_config: EGLConfig is noautoinit
-
- # Setup the EGL display for the given `native_display`
- protected fun setup_egl_display(native_display: Pointer)
- do
- var egl_display = new EGLDisplay(native_display)
- assert egl_display.is_valid else print "new EGL display is not valid"
-
- egl_display.initialize
- assert egl_display.is_valid else print "EGL initialize error: {egl_display.error}"
-
- self.egl_display = egl_display
- end
-
- # Select an EGL config
- protected fun select_egl_config(red, green, blue, alpha, depth, stencil: Int)
- do
- var config_chooser = new EGLConfigChooser
- config_chooser.renderable_type_egl
- config_chooser.surface_type_egl
- config_chooser.red_size = red
- config_chooser.green_size = green
- config_chooser.blue_size = blue
- if alpha > 0 then config_chooser.alpha_size = alpha
- if depth > 0 then config_chooser.depth_size = depth
- if stencil > 0 then config_chooser.stencil_size = stencil
-
- config_chooser.sample_buffers = 1
- config_chooser.samples = 4
-
- config_chooser.close
-
- var configs = config_chooser.choose(egl_display)
- assert configs != null else print "Choosing EGL config failed: {egl_display.error}"
- assert not configs.is_empty else print "Found no EGL config"
-
- if debug_gamnit then
- print "EGL available configurations:"
- for config in configs do
- var attribs = config.attribs(egl_display)
- print "* Conformant to: {attribs.conformant}"
- print " Caveats: {attribs.caveat}"
- print " Size of RGBA: {attribs.red_size} {attribs.green_size} {attribs.blue_size} {attribs.alpha_size}"
- print " Buffer, depth, stencil: {attribs.buffer_size} {attribs.depth_size} {attribs.stencil_size}"
- print " Sample buffers, samples: {attribs.sample_buffers} {attribs.samples}"
- end
- end
-
- # We use the first one, it is recommended
- self.egl_config = configs.first
- end
-
- # Setup the EGL context for the given `native_window`
- protected fun setup_egl_context(native_window: Pointer)
- do
- var window_surface = egl_display.create_window_surface(egl_config, native_window, [0])
- assert window_surface.is_ok else print "Creating EGL window surface failed: {egl_display.error}"
- self.window_surface = window_surface
-
- egl_context = egl_display.create_context(egl_config)
- assert egl_context.is_ok else print "Creating EGL context failed: {egl_display.error}"
-
- var make_current_res = egl_display.make_current(window_surface, window_surface, egl_context)
- assert make_current_res else print "Creating EGL make current failed: {egl_display.error}"
-
- # TODO make the API selection configurable per platform
- assert egl_bind_opengl_es_api else print "EGL bind API failed: {egl_display.error}"
- end
-
- # Check if the current configuration of `native_window` is still valid
- #
- # There is two return values:
- # * Returns `true` if the Gamnit services should be recreated.
- # * Sets `native_window_is_invalid` if the system provided window handle is invalid.
- # We should wait until we are provided a valid window handle.
- fun check_egl_context(native_window: Pointer): Bool
- do
- native_window_is_invalid = false
-
- if not egl_context.is_ok then
- # Needs recreating
- egl_context = egl_display.create_context(egl_config)
- assert egl_context.is_ok else print "Creating EGL context failed: {egl_display.error}"
- end
-
- var success = egl_display.make_current(window_surface, window_surface, egl_context)
- if not success then
- var error = egl_display.error
- print "check_egl_context make_current: {error}"
-
-
- if error.is_bad_native_window then
- # native_window is invalid
- native_window_is_invalid = true
- return true
-
- else if not error.is_success then
- # The context is now invalid, rebuild it
- setup_egl_context native_window
- return true
- end
- end
- return false
- end
-
- # Return value from `check_egl_context`, the current native window is invalid
- #
- # We should wait until we are provided a valid window handle.
- var native_window_is_invalid = false
-
- redef fun width do return window_surface.attribs(egl_display).width
-
- redef fun height do return window_surface.attribs(egl_display).height
-
- # Close the EGL context
- fun close_egl
- do
- egl_display.make_current(new EGLSurface.none, new EGLSurface.none, new EGLContext.none)
- egl_display.destroy_context(egl_context)
- egl_display.destroy_surface(window_surface)
- end
-
- redef fun flip
- do
- assert glGetError == gl_NO_ERROR
-
- assert egl_display.is_valid
-
- egl_display.swap_buffers(window_surface)
- end
-end
diff --git a/lib/gamnit/examples/fonts_showcase/Makefile b/lib/gamnit/examples/fonts_showcase/Makefile
deleted file mode 100644
index 0c6b3b50f7..0000000000
--- a/lib/gamnit/examples/fonts_showcase/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-bin/fonts_showcase: $(shell nitls -M src/fonts_showcase.nit -m linux)
- mkdir -p bin/
- nitc src/fonts_showcase.nit -m linux -o $@
-
-android: bin/fonts_showcase.apk
-bin/fonts_showcase.apk: $(shell nitls -M src/fonts_showcase.nit -m android)
- mkdir -p bin/
- nitc src/fonts_showcase.nit -m android -o $@
-
-check:
- nitunit .
-
-clean:
- rm -rf bin/
diff --git a/lib/gamnit/examples/fonts_showcase/README.md b/lib/gamnit/examples/fonts_showcase/README.md
deleted file mode 100644
index 039d3e072e..0000000000
--- a/lib/gamnit/examples/fonts_showcase/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Simple application to display and test the behavior the different `TextSprites` settings.
-
-# Artwork
-
-The font Josefin_Sans is published under SIL Open Font License 1.1 by Santiago Orozco
diff --git a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.fnt b/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.fnt
deleted file mode 100644
index 397d2f64f7..0000000000
--- a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.fnt
+++ /dev/null
@@ -1,1177 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.png b/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.png
deleted file mode 100644
index 3e8bd233d1..0000000000
Binary files a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.png and /dev/null differ
diff --git a/lib/gamnit/examples/fonts_showcase/assets/anchor.png b/lib/gamnit/examples/fonts_showcase/assets/anchor.png
deleted file mode 100644
index 2aef81f0d8..0000000000
Binary files a/lib/gamnit/examples/fonts_showcase/assets/anchor.png and /dev/null differ
diff --git a/lib/gamnit/examples/fonts_showcase/assets/corner.png b/lib/gamnit/examples/fonts_showcase/assets/corner.png
deleted file mode 100644
index 12f79861db..0000000000
Binary files a/lib/gamnit/examples/fonts_showcase/assets/corner.png and /dev/null differ
diff --git a/lib/gamnit/examples/fonts_showcase/package.ini b/lib/gamnit/examples/fonts_showcase/package.ini
deleted file mode 100644
index 4503def1fa..0000000000
--- a/lib/gamnit/examples/fonts_showcase/package.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name=fonts_showcase
-tags=game,example
-maintainer=Alexis Laferrière
-license=WTFPL
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/examples/fonts_showcase/
-git=https://github.com/nitlang/nit.git
-git.directory=lib/gamnit/examples/fonts_showcase/
-homepage=http://gamnit.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/lib/gamnit/examples/fonts_showcase/src/fonts_showcase.nit b/lib/gamnit/examples/fonts_showcase/src/fonts_showcase.nit
deleted file mode 100644
index 91f30738ae..0000000000
--- a/lib/gamnit/examples/fonts_showcase/src/fonts_showcase.nit
+++ /dev/null
@@ -1,197 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Font support showcase
-module fonts_showcase is
- example
- app_name "gamnit fonts"
- app_namespace "org.gamnit.fonts_showcase"
- app_version(1, 0, git_revision)
- android_api_target 10
- android_manifest_activity """android:screenOrientation="sensorLandscape" """
-end
-
-import gamnit::flat
-import gamnit::bmfont
-
-redef class App
-
- # Asset font used to display text
- var font = new BMFontAsset("Josefin_Sans/font.fnt")
-
- # Anchor texture identifying the anchor coordinates of each `TextSprites`
- var anchor = new Texture("anchor.png")
-
- # Bottom right corner
- var corner = new Texture("corner.png")
-
- redef fun create_scene
- do
- super
-
- for tex in all_root_textures do
- var error = tex.error
- if error != null then print_error "Texture '{tex}' failed to load: {error}"
- end
-
- update_text
- end
-
- # Draw or redraw all the `TextSprites`
- fun update_text
- do
- # Remove existing text and sprites
- ui_sprites.clear
- var texts = new Array[TextSprites]
-
- # Shared content
- var description = "The anchor icon identifies the coordinate of TextSprites::anchor."
- var lorem_ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et [dolore magna](my_link asdf) aliqua."
- var color = [0.0, 0.25, 0.5]
-
- # ---
- # TextSprites (the interesting part)
-
- # Aligned text (no max_width)
- texts.add new TextSprites(font,
- ui_camera.top.offset(-400.0, 0.0, 0.0),
- "Left, align=0.0:\n"+description)
-
- texts.add new TextSprites(font,
- ui_camera.top.offset(-400.0, -100.0, 0.0),
- "Right, align=1.0:\n"+description, align=1.0)
-
- texts.add new TextSprites(font,
- ui_camera.top.offset(-400.0, -200.0, 0.0),
- "Center, align=0.5:\n"+description, align=0.5)
-
- texts.add new TextSprites(font,
- ui_camera.top.offset(-400.0, -300.0, 0.0),
- "Weird, align=0.2:\n"+description, align=0.2)
-
- # Aligned with max width
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(100.0, -400.0, 0.0),
- "Left, max_width=400.0:\n"+lorem_ipsum,
- align=0.0, max_width=400.0)
-
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(1000.0, -400.0, 0.0),
- "Right, max_width=400.0, scale=0.66:\n"+lorem_ipsum,
- align=1.0, max_width=400.0, scale=0.66)
-
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(300.0, -700.0, 0.0),
- "Center, max_width=400.0:\n"+lorem_ipsum,
- align=0.5, max_width=400.0)
-
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(680.0, -700.0, 0.0),
- "Weird, max_width=400.0:\n"+lorem_ipsum,
- align=0.2, max_width=400.0)
-
- # Max width & height
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(1100.0, -400.0, 0.0),
- "max_width & max_height:\n"+lorem_ipsum,
- max_width=600.0, max_height=150.0)
-
- # Thin max_width with overflows
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(1100.0, -600.0, 0.0),
- "The 1{plu}st{pld} word of a line can always overflow:\n"+lorem_ipsum,
- max_width=100.0, max_height=400.0)
-
- # No wrap
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(1300.0, -600.0, 0.0),
- "wrap=false:\nLong lines are cut short blah blah blah\n"+lorem_ipsum,
- max_width=400.0, wrap=false)
-
- # Bottom align
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(1300.0, -1000.0, 0.0),
- "valign=1.0:\n"+lorem_ipsum,
- max_width=400.0, valign=1.0)
-
- # Center valign
- texts.add new TextSprites(font,
- ui_camera.top_left.offset(1500.0, -220.0, 0.0),
- "align=0.5, valign=0.5:\n"+lorem_ipsum,
- max_width=400.0, align=0.5, valign=0.5)
-
- # ---
- # Links
-
- for ts in texts do
- for link_name, sprites in ts.links do
- print "Link: {link_name}"
- for s in sprites do s.green = 0.0
- end
- end
-
- # ---
- # Anchors and background boxes
-
- # Gradient background for the max_width texts
- var box = new CustomTexture(400.0, 200.0)
- for x in 400.times do for y in 150.times do
- var p = 1.0-1.0*y.to_f/150.0
- p = p.sqrt
- box[x, y] = color + [p]
- end
- box.load
- for i in [4..8[ do
- var t = texts[i]
- ui_sprites.add new Sprite(box,
- t.anchor.offset((-t.align+0.5)*t.max_width.as(not null),
- -100.0, -1.0))
- end
-
- # Plain boxes for max_width and max_height boxes
- var large_box = new CustomTexture(600.0, 150.0)
- large_box.fill color
- large_box.load
- ui_sprites.add new Sprite(large_box, texts[8].anchor.offset(300.0, -75.0, -1.0))
-
- var thin_box = new CustomTexture(100.0, 400.0)
- thin_box.fill color
- thin_box.load
- ui_sprites.add new Sprite(thin_box, ui_camera.top_left.offset(1150.0, -800.0, -1.0))
-
- # Other TextSprites
- ui_sprites.add new Sprite(box, texts[10].anchor.offset(200.0, -100.0, -1.0))
-
- var s = new Sprite(box, texts[11].anchor.offset(200.0, 100.0, -1.0))
- s.rotation = pi
- ui_sprites.add s
-
- ui_sprites.add new Sprite(box, texts[12].anchor.offset(0.0, 0.0, -1.0))
-
- # Add the anchor effects to all TextSprites
- for t in texts do ui_sprites.add new Sprite(anchor, t.anchor)
-
- for t in texts do
- # Bottom right
- var br = t.anchor.offset(t.width*(1.0-t.align), -t.height*(1.0-t.valign), 1.0)
- ui_sprites.add new Sprite(corner, br)
- end
- end
-
- redef fun accept_event(event)
- do
- if event isa QuitEvent or
- (event isa KeyEvent and event.name == "escape" and event.is_up) then
- # Quit abruptly
- exit 0
- else if event isa KeyEvent and event.is_up then
- update_text
- end
-
- return false
- end
-end
diff --git a/lib/gamnit/examples/template/Makefile b/lib/gamnit/examples/template/Makefile
deleted file mode 100644
index 270312e925..0000000000
--- a/lib/gamnit/examples/template/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-bin/template: $(shell nitls -M src/template.nit -m linux)
- mkdir -p bin/
- nitc src/template.nit -m linux -o $@
-
-android: bin/template.apk
-bin/template.apk: $(shell nitls -M src/template.nit -m android)
- mkdir -p bin/
- nitc src/template.nit -m android -o $@
-
-check:
- nitunit .
-
-clean:
- rm -rf bin/
diff --git a/lib/gamnit/examples/template/README.md b/lib/gamnit/examples/template/README.md
deleted file mode 100644
index 3ab2dbe087..0000000000
--- a/lib/gamnit/examples/template/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Template for a 2D _gamnit_ game
-
-This project can be copied and modified to use as starting point for a new _gamnit_ 2D game
-using the `flat` API.
-
-Both assets are published under CC0.
diff --git a/lib/gamnit/examples/template/assets/fighter.png b/lib/gamnit/examples/template/assets/fighter.png
deleted file mode 100644
index d5f3ee4b38..0000000000
Binary files a/lib/gamnit/examples/template/assets/fighter.png and /dev/null differ
diff --git a/lib/gamnit/examples/template/assets/laser.mp3 b/lib/gamnit/examples/template/assets/laser.mp3
deleted file mode 100644
index d1f2ba2b0e..0000000000
Binary files a/lib/gamnit/examples/template/assets/laser.mp3 and /dev/null differ
diff --git a/lib/gamnit/examples/template/package.ini b/lib/gamnit/examples/template/package.ini
deleted file mode 100644
index 854e1ce83f..0000000000
--- a/lib/gamnit/examples/template/package.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name=template
-tags=game,example
-maintainer=Alexis Laferrière
-license=WTFPL
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/examples/template/
-git=https://github.com/nitlang/nit.git
-git.directory=lib/gamnit/examples/template/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/lib/gamnit/examples/template/src/template.nit b/lib/gamnit/examples/template/src/template.nit
deleted file mode 100644
index 29b9618c46..0000000000
--- a/lib/gamnit/examples/template/src/template.nit
+++ /dev/null
@@ -1,138 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Template for a 2D gamnit game
-module template is
- example
- app_name "gamnit template"
- app_namespace "org.gamnit.template"
- app_version(0, 1, git_revision)
- android_api_target 10
-end
-
-import gamnit::flat # The 2D API, use `gamnit::depth` for 3D
-
-redef class App
-
- # Texture, loaded in `create_scene`
- var texture = new Texture("fighter.png")
-
- # Sound effect, lazy loaded at first use
- var sound = new Sound("laser.mp3")
-
- # Sprite, must be loaded in or after `on_create`
- var sprite = new Sprite(texture, new Point3d[Float](0.0, 0.0, 0.0)) is lazy
-
- redef fun create_scene
- do
- super
-
- # Report errors on all loaded textures.
- # Root textures are associated to pixel data,
- # whereas other texture may be subtextures of root textures.
- for tex in all_root_textures do
- var error = tex.error
- if error != null then print_error "Texture '{tex}' failed to load: {error}"
- end
-
- # Draw the texture as pixelated, it looks better for such
- # a small texture.
- texture.as(TextureAsset).pixelated = true
-
- # Create the sprite and make it visible.
- sprites.add sprite
-
- # Make the sprite smaller, by default each pixel corresponds to 1 world unit.
- # However, it is often preferable to make 1 world unit correspond to
- # something meaningful in the game world, such as 1 meter.
- #
- # Scale the ship so it is approximately 5 world units wide.
- sprite.scale = 5.0 / texture.width
-
- # Move the camera to show 20 world units on the Y axis at Z = 0.
- # The `sprite` should take approximately 1/4 of the height of the screen.
- world_camera.reset_height 20.0
-
- # Move the near clip wall closer to the camera because our world unit
- # range is small. Moving the clip wall too close to the camera can
- # cause glitches on mobiles devices with small depth buffer.
- world_camera.near = 1.0
-
- # Make the background sky blue and opaque.
- glClearColor(0.5, 0.8, 1.0, 1.0)
-
- # If the first command line argument is an integer, add extra sprites.
- if args.not_empty and args.first.is_int then
- # It's a performance test, unlock the framerate.
- maximum_fps = -1.0
-
- # Add `args.first` sprites.
- for i in args.first.to_i.times do
- var s = new Sprite(texture, new Point3d[Float](30.0.rand - 15.0, 20.0.rand - 10.0, 0.0 - 30.0.rand))
- s.scale = 0.1
- sprites.add s
- end
- end
- end
-
- redef fun update(dt)
- do
- # Update game logic here.
- sprite.rotation += 0.1*pi*dt
-
- # Move `sprite` with the keyboard arrows.
- # Set the speed according to the elapsed time since the last frame `dt`
- # for a smooth animation.
- var unit_per_second = 2.0
- for key in pressed_keys do
- if key == "left" then
- sprite.center.x -= unit_per_second*dt
- else if key == "right" then
- sprite.center.x += unit_per_second*dt
- else if key == "up" then
- sprite.center.y += unit_per_second*dt
- else if key == "down" then
- sprite.center.y -= unit_per_second*dt
- end
- end
- end
-
- redef fun accept_event(event)
- do
- if super then return true
-
- if event isa QuitEvent or
- (event isa KeyEvent and event.name == "escape" and event.is_up) then
- # When window close button, escape or back key is pressed
- print "Ran at {current_fps} FPS in the last few seconds"
-
- print "Performance statistics to detect bottlenecks:"
- print sys.perfs
-
- # Quit abruptly
- exit 0
- else if event isa KeyEvent and event.is_down then
- if event.name == "space" then
- # Play a sound when space bar is pressed.
- sound.play
- return true
- else if event.name == "s" then
- # Remove a random sprite.
- if sprites.not_empty then sprites.remove sprites.rand
- else if event.name == "w" then
- # Add a random sprite.
- var s = new Sprite(texture, new Point3d[Float](30.0.rand - 15.0, 20.0.rand - 10.0, 0.0 - 30.0.rand))
- s.scale = 0.1
- s.tint[1] = 0.0
- s.tint[2] = 0.0
- sprites.add s
- end
- end
-
- return false
- end
-end
diff --git a/lib/gamnit/examples/triangle/Makefile b/lib/gamnit/examples/triangle/Makefile
deleted file mode 100644
index 22172de6a7..0000000000
--- a/lib/gamnit/examples/triangle/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-NITC=../../../../bin/nitc
-NITLS=../../../../bin/nitls
-
-all: bin/standalone_triangle bin/triangle bin/triangle.apk
-
-bin/standalone_triangle: $(shell ${NITLS} -M src/standalone_triangle.nit linux) ${NITC}
- ${NITC} src/standalone_triangle.nit -m linux -o $@
-
-bin/triangle: $(shell ${NITLS} -M src/portable_triangle.nit linux) ${NITC}
- ${NITC} src/portable_triangle.nit -m linux -o $@
-
-check: bin/standalone_triangle bin/triangle
- bin/standalone_triangle
- bin/triangle
-
-android: bin/triangle.apk
-bin/triangle.apk: $(shell ${NITLS} -M src/portable_triangle.nit android) ${NITC} res/drawable-hdpi/icon.png
- ${NITC} src/portable_triangle.nit -m android -o $@
-
-res/drawable-hdpi/icon.png: art/icon.svg
- ../../../../contrib/inkscape_tools/bin/svg_to_icons --out res --android art/icon.svg
diff --git a/lib/gamnit/examples/triangle/art/icon.svg b/lib/gamnit/examples/triangle/art/icon.svg
deleted file mode 100644
index 26f7c04a1f..0000000000
--- a/lib/gamnit/examples/triangle/art/icon.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
diff --git a/lib/gamnit/examples/triangle/bin/.gitignore b/lib/gamnit/examples/triangle/bin/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/lib/gamnit/examples/triangle/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/lib/gamnit/examples/triangle/package.ini b/lib/gamnit/examples/triangle/package.ini
deleted file mode 100644
index f673878841..0000000000
--- a/lib/gamnit/examples/triangle/package.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name=triangle
-tags=example
-maintainer=Alexis Laferrière
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/examples/triangle/
-git=https://github.com/nitlang/nit.git
-git.directory=lib/gamnit/examples/triangle/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/lib/gamnit/examples/triangle/res/.gitignore b/lib/gamnit/examples/triangle/res/.gitignore
deleted file mode 100644
index 72e8ffc0db..0000000000
--- a/lib/gamnit/examples/triangle/res/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/lib/gamnit/examples/triangle/src/portable_triangle.nit b/lib/gamnit/examples/triangle/src/portable_triangle.nit
deleted file mode 100644
index 5c276b396b..0000000000
--- a/lib/gamnit/examples/triangle/src/portable_triangle.nit
+++ /dev/null
@@ -1,141 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Portable example of using Gamnit with custom calls to OpenGL ES 2.0
-#
-# References:
-# * The book OpenGL ES 2.0 Programming Guide
-# * https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c
-module portable_triangle is
- example
- app_name "gamnit Triangle"
- app_namespace "org.nitlanguage.triangle"
- app_version(1, 1, git_revision)
-end
-
-import gamnit
-
-redef class App
-
- # Our only program for the graphic card
- var program: GLProgram is noautoinit
-
- # The only vertex sharder
- var vertex_shader: GLVertexShader is noautoinit
-
- # The only fragment sharder
- var fragment_shader: GLFragmentShader is noautoinit
-
- # Vertex data for the triangle
- var vertex_array: VertexArray is noautoinit
-
- redef fun create_scene
- do
- super
-
- var display = display
- assert display != null
-
- print "Width: {display.width}"
- print "Height: {display.height}"
-
- assert glGetError == gl_NO_ERROR
- assert gl.shader_compiler else print "Cannot compile shaders"
-
- # GL program
- program = new GLProgram
- if not glIsProgram(program) then
- print "Program is not ok: {glGetError.to_s}\nLog:"
- print glGetProgramInfoLog(program)
- abort
- end
- assert glGetError == gl_NO_ERROR
-
- # Vertex shader
- vertex_shader = new GLVertexShader
- assert glIsShader(vertex_shader) else print "Vertex shader is not ok: {glGetError}"
- glShaderSource(vertex_shader, """
- attribute vec4 vPosition;
- void main()
- {
- gl_Position = vPosition;
- }
- """@glsl_vertex_shader.to_cstring)
- glCompileShader(vertex_shader)
- assert vertex_shader.is_compiled else print "Vertex shader compilation failed with: {glGetShaderInfoLog(vertex_shader)} {glGetProgramInfoLog(program)}"
- assert glGetError == gl_NO_ERROR
-
- # Fragment shader
- fragment_shader = new GLFragmentShader
- assert glIsShader(fragment_shader) else print "Fragment shader is not ok: {glGetError}"
- glShaderSource(fragment_shader, """
- precision mediump float;
- void main()
- {
- gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
- }
- """@glsl_fragment_shader.to_cstring)
- glCompileShader(fragment_shader)
- assert fragment_shader.is_compiled else print "Fragment shader compilation failed with: {glIsShader(fragment_shader)}"
- assert glGetError == gl_NO_ERROR
-
- # Attach to program
- glAttachShader(program, vertex_shader)
- glAttachShader(program, fragment_shader)
- program.bind_attrib_location(0, "vPosition")
- glLinkProgram program
- assert program.is_linked else print "Linking failed: {glGetProgramInfoLog(program)}"
- assert glGetError == gl_NO_ERROR
-
- # Draw!
- var vertices = [0.0, 0.5, 0.0, -0.5, -0.5, 0.0, 0.5, -0.5, 0.0]
- vertex_array = new VertexArray(0, 3, vertices)
- vertex_array.attrib_pointer
- end
-
- private var t = 0.0
-
- redef fun frame_core(display)
- do
- glClearColor(t, t, t, 1.0)
-
- assert glGetError == gl_NO_ERROR
- glViewport(0, 0, display.width, display.height)
- glClear gl_COLOR_BUFFER_BIT
- glUseProgram program
- vertex_array.enable
-
- glDrawArrays(gl_TRIANGLES, 0, 3)
-
- display.flip
-
- t += 0.01
- if t > 1.0 then t = 0.0
- end
-
- redef fun on_stop
- do
- # Clean up
- glDeleteProgram program
- glDeleteShader vertex_shader
- glDeleteShader fragment_shader
-
- # Close gamnit
- var display = display
- if display != null then display.close
- end
-end
-
-if "NIT_TESTING".environ == "true" then exit(0)
-super
diff --git a/lib/gamnit/examples/triangle/src/standalone_triangle.nit b/lib/gamnit/examples/triangle/src/standalone_triangle.nit
deleted file mode 100644
index a766fb2437..0000000000
--- a/lib/gamnit/examples/triangle/src/standalone_triangle.nit
+++ /dev/null
@@ -1,112 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Example of using `GamnitDisplay` to setup a screen for custom calls to OpenGL ES 2.0
-#
-# This example does not support the lifecycle of mobile platforms, as such it only works on desktop computers.
-#
-# References:
-# * The book OpenGL ES 2.0 Programming Guide
-# * https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c
-module standalone_triangle is example
-
-import app
-import gamnit::display
-
-if "NIT_TESTING".environ == "true" then exit(0)
-
-# Setup gamnit
-var display = new GamnitDisplay
-display.setup
-
-var width = display.width
-var height = display.height
-print "Width: {width}"
-print "Height: {height}"
-
-# Custom calls to OpenGL ES 2.0
-assert glGetError == gl_NO_ERROR
-assert gl.shader_compiler else print "Cannot compile shaders"
-
-# GL program
-print glGetError.to_s
-var program = new GLProgram
-if not glIsProgram(program) then
- print "Program is not ok: {glGetError.to_s}\nLog:"
- print glGetProgramInfoLog(program)
- abort
-end
-assert glGetError == gl_NO_ERROR
-
-# Vertex shader
-var vertex_shader = new GLVertexShader
-assert glIsShader(vertex_shader) else print "Vertex shader is not ok: {glGetError}"
-glShaderSource(vertex_shader, """
-attribute vec4 vPosition;
-void main()
-{
- gl_Position = vPosition;
-}
-"""@glsl_vertex_shader.to_cstring)
-glCompileShader vertex_shader
-assert vertex_shader.is_compiled else print "Vertex shader compilation failed with: {glGetShaderInfoLog(vertex_shader)} {glGetProgramInfoLog(program)}"
-assert glGetError == gl_NO_ERROR
-
-# Fragment shader
-var fragment_shader = new GLFragmentShader
-assert glIsShader(fragment_shader) else print "Fragment shader is not ok: {glGetError}"
-glShaderSource(fragment_shader, """
-precision mediump float;
-void main()
-{
- gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
-}
-"""@glsl_fragment_shader.to_cstring)
-glCompileShader fragment_shader
-assert fragment_shader.is_compiled else print "Fragment shader compilation failed with: {glGetShaderInfoLog(fragment_shader)}"
-assert glGetError == gl_NO_ERROR
-
-# Attach to program
-glAttachShader(program, vertex_shader)
-glAttachShader(program, fragment_shader)
-program.bind_attrib_location(0, "vPosition")
-glLinkProgram program
-assert program.is_linked else print "Linking failed: {glGetProgramInfoLog(program)}"
-assert glGetError == gl_NO_ERROR
-
-# Draw!
-var vertices = [0.0, 0.5, 0.0, -0.5, -0.5, 0.0, 0.5, -0.5, 0.0]
-var vertex_array = new VertexArray(0, 3, vertices)
-vertex_array.attrib_pointer
-glClearColor(0.5, 0.0, 0.5, 1.0)
-for i in [0..1000[ do
- printn "."
- assert glGetError == gl_NO_ERROR
- glViewport(0, 0, width, height)
- glClear gl_COLOR_BUFFER_BIT
- glUseProgram program
- vertex_array.enable
-
- glDrawArrays(gl_TRIANGLES, 0, 3)
-
- display.flip
-end
-
-# Clean up
-glDeleteProgram program
-glDeleteShader vertex_shader
-glDeleteShader fragment_shader
-
-# Close gamnit
-display.close
diff --git a/lib/gamnit/flat/flat.nit b/lib/gamnit/flat/flat.nit
deleted file mode 100644
index 409433300b..0000000000
--- a/lib/gamnit/flat/flat.nit
+++ /dev/null
@@ -1,44 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Simple API for 2D games, built around `Sprite` and `App::update`
-#
-# Client programs should implement `App::update` to execute game logic and
-# add instances of `Sprite` to `App::sprites` and `App::ui_sprites`.
-# At each frame, all sprites are drawn to the screen.
-#
-# This system relies on two cameras `App::world_camera` and `App::ui_camera`.
-#
-# * `App::world_camera` applies a perspective effect to draw the game world.
-# This camera is designed to be moved around to see the world as well as to
-# zoom in and out. It is used to position the sprites in `App::sprites`.
-#
-# * `App::ui_camera` is a simple orthogonal camera to display UI objects.
-# This camera should mostly be still, it can still move for chock effects
-# and the like. It can be used to standardize the size of the UI across
-# devices. It is used to position the sprites in `App::ui_sprites`.
-#
-# See the sample game at `contrib/asteronits/` and the basic project template
-# at `lib/gamnit/examples/template/`.
-module flat
-
-import gamnit::flat_core
-
-# Extra optional features
-import gamnit::limit_fps
-import gamnit::keys
-import gamnit::camera_control
-import gamnit::tileset
-import gamnit::bmfont
-import app::audio
diff --git a/lib/gamnit/flat/flat_core.nit b/lib/gamnit/flat/flat_core.nit
deleted file mode 100644
index 320d471c4a..0000000000
--- a/lib/gamnit/flat/flat_core.nit
+++ /dev/null
@@ -1,1766 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Core services for the `flat` API for 2D games
-module flat_core
-
-import glesv2
-intrude import geometry::points_and_lines # For _x, _y and _z
-intrude import matrix
-import matrix::projection
-import more_collections
-import performance_analysis
-
-import gamnit
-intrude import gamnit::cameras
-intrude import gamnit::cameras_cache
-import gamnit::dynamic_resolution
-
-# Visible 2D entity in the game world or UI
-#
-# Similar to `gamnit::Actor` which is in 3D.
-#
-# Each sprite associates a `texture` to the position `center`.
-# The appearance is modified by `rotation`, `invert_x`,
-# `scale`, `red`, `green`, `blue` and `alpha`.
-# These values can be changed at any time and will trigger an update
-# of the data on the GPU side, having a small performance cost.
-#
-# For a sprite to be visible, it must be added to either the world `sprites`
-# or the `ui_sprites`.
-# However, an instance of `Sprite` can only belong to a single `SpriteSet`
-# at a time. The final on-screen position depends on the camera associated
-# to the `SpriteSet`.
-#
-# ~~~
-# # Load texture and create sprite
-# var texture = new Texture("path/in/assets.png")
-# var sprite = new Sprite(texture, new Point3d[Float](0.0, 0.0, 0.0))
-#
-# # Add sprite to the visible game world
-# app.sprites.add sprite
-#
-# # Extra configuration of the sprite
-# sprite.rotation = pi/2.0
-# sprite.scale = 2.0
-#
-# # Show only the blue colors
-# sprite.red = 0.0
-# sprite.green = 0.0
-# ~~~
-#
-# To add a sprite to the UI it can be anchored to screen borders
-# with `ui_camera.top_left` and the likes.
-#
-# ~~~nitish
-# # Place it a bit off the top left of the screen
-# var pos = app.ui_camera.top_left.offset(128.0, -128.0, 0)
-#
-# # Load texture and create sprite
-# var texture = new Texture("path/in/assets.png")
-# var sprite = new Sprite(texture, pos)
-#
-# # Add it to the UI (above world sprites)
-# app.ui_sprites.add sprite
-# ~~~
-class Sprite
-
- # Texture drawn to screen
- var texture: Texture is writable(texture_direct=)
-
- # Texture drawn to screen
- fun texture=(texture: Texture)
- do
- if isset _texture and texture != self.texture then
- needs_update
- if texture.root != self.texture.root then needs_remap
- end
- texture_direct = texture
- end
-
- # Center position of this sprite in world coordinates
- var center: Point3d[Float] is writable(center_direct=), noautoinit
-
- # Center position of this sprite in world coordinates
- fun center=(center: Point3d[Float]) is autoinit do
- if isset _center and center != self.center then
- needs_update
- self.center.sprites_remove self
- end
-
- center.sprites_add self
- center_direct = center
- end
-
- # Last animation set with `animate`
- var animation: nullable Animation = null
-
- # Animation on the shader, if this changes it `needs_remap`
- private var shader_animation: nullable Animation = null
-
- # Animation start time, relative to `sprite_set.time`
- #
- # At -1.0 if animation started before being assigned a `sprite_set`.
- private var animation_start = 0.0
-
- # Number of loops to show `animation`
- private var animation_loops = 0.0
-
- # Start the `animation` for `n_loops`, replacing the static `texture`
- #
- # By default, if `n_loops` is not set, the animation plays once.
- # If `n_loops == -1.0` then the animation loops infinitely.
- # Otherwise, the animation repeats, e.g. it repeats twice and a half
- # if `n_loops == 2.5`.
- #
- # The animation can be stopped using `animate_stop`.
- fun animate(animation: Animation, n_loops: nullable Float)
- do
- if not animation.valid then print_error "{class_name}::animate: invalid animation {animation}"
-
- var shader_animation = shader_animation
- if shader_animation == null or animation.frames.first.root != shader_animation.frames.first.root then
- # Resort with the new animation texture
- needs_remap
- else
- needs_update
- end
-
- var sprite_set = sprite_set
- animation_start = if sprite_set != null then sprite_set.time else -1.0
- animation_loops = n_loops or else 1.0
- self.shader_animation = animation
- self.animation = animation
- end
-
- # Stop any active `animation` to display the static `texture`
- fun animate_stop
- do
- if animation == null then return
- needs_update
- animation = null
- end
-
- # Rotation on the Z axis, positive values turn counterclockwise
- var rotation = 0.0 is writable(rotation_direct=)
-
- # Rotation on the Z axis, positive values turn counterclockwise
- fun rotation=(value: Float)
- do
- if isset _rotation and value != rotation then needs_update
- rotation_direct = value
- end
-
- # Mirror `texture` horizontally, inverting each pixel on the X axis
- var invert_x = false is writable(invert_x_direct=)
-
- # Mirror `texture` horizontally, inverting each pixel on the X axis
- fun invert_x=(value: Bool)
- do
- if isset _invert_x and value != invert_x then needs_update
- invert_x_direct = value
- end
-
- # Scale applied to this sprite
- #
- # The basic size of `self` depends on the size in pixels of `texture`.
- var scale = 1.0 is writable(scale_direct=)
-
- # Scale applied to this sprite
- #
- # The basic size of `self` depends on the size in pixels of `texture`.
- fun scale=(value: Float)
- do
- if isset _scale and value != scale then needs_update
- scale_direct = value
- end
-
- # Red tint applied to `texture` on draw
- fun red: Float do return tint[0]
-
- # Red tint applied to `texture` on draw
- fun red=(value: Float)
- do
- if isset _tint and value != red then needs_update
- tint[0] = value
- end
-
- # Green tint applied to `texture` on draw
- fun green: Float do return tint[1]
-
- # Green tint applied to `texture` on draw
- fun green=(value: Float)
- do
- if isset _tint and value != green then needs_update
- tint[1] = value
- end
-
- # Blue tint applied to `texture` on draw
- fun blue: Float do return tint[2]
-
- # Blue tint applied to `texture` on draw
- fun blue=(value: Float)
- do
- if isset _tint and value != blue then needs_update
- tint[2] = value
- end
-
- # Transparency applied to `texture` on draw
- fun alpha: Float do return tint[3]
-
- # Transparency applied to `texture` on draw
- fun alpha=(value: Float)
- do
- if isset _tint and value != alpha then needs_update
- tint[3] = value
- end
-
- # Tint applied to `texture` on draw
- #
- # Alternative to the accessors `red, green, blue & alpha`.
- # Changes inside the array do not automatically set `needs_update`.
- #
- # Require: `tint.length == 4`
- var tint: Array[Float] = [1.0, 1.0, 1.0, 1.0] is writable(tint_direct=)
-
- # Tint applied to `texture` on draw, see `tint`
- fun tint=(value: Array[Float])
- do
- if isset _tint and value != tint then needs_update
- tint_direct = value
- end
-
- # Draw order, higher values cause this sprite to be drawn latter
- #
- # Change this value to avoid artifacts when drawing non-opaque sprites.
- # In general, sprites with a non-opaque `texture` and sprites closer to
- # the camera should have a higher value to be drawn last.
- #
- # Sprites sharing a `draw_order` are drawn in the same pass.
- # The sprite to sprite draw order is undefined and may change when adding
- # and removing sprites, or changing their attributes.
- #
- # ### Warning
- #
- # Changing this value may have a negative performance impact if there are
- # many different `draw_order` values across many sprites.
- # Sprites sharing some attributes are drawn as group to reduce
- # the communication overhead between the CPU and GPU,
- # and changing `draw_order` may break up large groups into smaller groups.
- var draw_order = 0 is writable(draw_order_direct=)
-
- # Set draw order, see `draw_order`
- fun draw_order=(value: Int)
- do
- if isset _draw_order and value != draw_order then needs_remap
- draw_order_direct = value
- end
-
- # Is this sprite static and added in bulk?
- #
- # Set to `true` to give a hint to the framework that this sprite won't
- # change often and that it is added in bulk with other static sprites.
- # This value can be ignored in the prototyping phase of a game and
- # added only when better performance are needed.
- var static = false is writable(static_direct=)
-
- # Is this sprite static and added in bulk? see `static`
- fun static=(value: Bool)
- do
- if isset _static and value != static then needs_remap
- static_direct = value
- end
-
- # Request an update on the CPU
- #
- # This is called automatically on modification of any value of `Sprite`.
- # However, it can still be set manually if a modification can't be
- # detected or by subclasses.
- fun needs_update
- do
- var c = context
- if c == null then return
- if c.last_sprite_to_update == self then return
- c.sprites_to_update.add self
- c.last_sprite_to_update = self
- end
-
- # Request a resorting of this sprite in its sprite list
- #
- # Resorting is required when `static` or the root of `texture` changes.
- # This is called automatically when such changes are detected.
- # However, it can still be set manually if a modification can't be
- # detected or by subclasses.
- fun needs_remap
- do
- var l = sprite_set
- if l != null then l.sprites_to_remap.add self
- end
-
- # Current context to which `self` was sorted
- private var context: nullable SpriteContext = null
-
- # Index in `context`
- private var context_index: Int = -1
-
- # Current context to which `self` belongs
- private var sprite_set: nullable SpriteSet = null
-end
-
-# Animation for sprites, set with `Sprite.animate`
-#
-# Two main services create animations:
-# * The constructors accepts an array of textures and the number of frames per
-# seconds: `new Animation(array_of_subtextures, 10.0)`
-# * The method `Texture::to_animation` uses the whole texture
-# dividing it in frames either on X or Y:
-# `new Texture("path/in/assets.png").to_animation(30.0, 0, 12)`
-class Animation
-
- # Frames composing this animation
- #
- # All frames must share the same `Texture::root`, be on a vertical or
- # horizontal line, be spaced equally and share the same dimensions.
- var frames: SequenceRead[Texture]
-
- # Frames per seconds, a higher value makes this animation faster
- #
- # The animation speed is also affected by `SpriteSet::time_mod`.
- var fps: Float
-
- # Are the `frames` valid for an animation? (see the requirements in `frames`)
- var valid: Bool is lazy do
- var r: nullable RootTexture = null
- for f in frames do
- if r == null then
- r = f.root
- else
- if r != f.root then return false
- end
- end
-
- # TODO check for line, constant distance, and same aspect ratio.
-
- return true
- end
-end
-
-redef class App
- # Default graphic program to draw `sprites`
- private var simple_2d_program = new Simple2dProgram is lazy
-
- # Camera for world `sprites` and `depth::actors` with perspective
- #
- # By default, the camera is configured to a height of 1080 units
- # of world coordinates at `z == 0.0`.
- var world_camera: EulerCamera is lazy do
- var camera = new EulerCamera(app.display.as(not null))
-
- # Aim for full HD pixel resolution at level 0
- camera.reset_height 1080.0
- camera.near = 10.0
-
- return camera
- end
-
- # Camera for `ui_sprites` using an orthogonal view
- var ui_camera = new UICamera(app.display.as(not null)) is lazy
-
- # World sprites drawn as seen by `world_camera`
- var sprites = new SpriteSet
-
- # UI sprites drawn as seen by `ui_camera`, over world `sprites`
- var ui_sprites = new SpriteSet
-
- # Main method to refine in clients to update game logic and `sprites`
- fun update(dt: Float) do end
-
- # Display `texture` as a splash screen
- #
- # Load `texture` if needed and resets `ui_camera` to 1080 units on the Y axis.
- fun show_splash_screen(texture: Texture)
- do
- texture.load
-
- var splash = new Sprite(texture, ui_camera.center.offset(0.0, 0.0, 0.0))
- ui_sprites.add splash
-
- var display = display
- assert display != null
- glClear gl_COLOR_BUFFER_BIT
-
- ui_camera.reset_height 1080.0
- glViewport(0, 0, display.width, display.height)
- frame_core_ui_sprites display
- display.flip
-
- ui_sprites.remove splash
- end
-
- # ---
- # Support and implementation
-
- # Main clock used to count each frame `dt`, lapsed for `update` only
- private var clock = new Clock is lazy
-
- # Performance clock to for `frame_core_draw` operations
- private var perf_clock_main = new Clock
-
- # Second performance clock for smaller operations
- private var perf_clock_sprites = new Clock is lazy
-
- redef fun create_gamnit
- do
- super
- create_flat
- end
-
- # Prepare the flat framework services
- fun create_flat
- do
- var display = display
- assert display != null
-
- assert glGetError == gl_NO_ERROR
-
- # Prepare program
- var program = simple_2d_program
- program.compile_and_link
-
- var gamnit_error = program.error
- assert gamnit_error == null else print_error gamnit_error
-
- # Enable blending
- gl.capabilities.blend.enable
- glBlendFunc(gl_ONE, gl_ONE_MINUS_SRC_ALPHA)
-
- # Enable depth test
- gl.capabilities.depth_test.enable
- glDepthFunc gl_LEQUAL
- glDepthMask true
-
- # Prepare viewport and background color
- glViewport(0, 0, display.width, display.height)
- glClearColor(0.0, 0.0, 0.0, 1.0)
-
- assert glGetError == gl_NO_ERROR
-
- # Prepare to draw
- for tex in all_root_textures do
- tex.load
- gamnit_error = tex.error
- if gamnit_error != null then print_error gamnit_error
-
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
- end
-
- sprites.reset
- ui_sprites.reset
- end
-
- redef fun on_stop
- do
- super
-
- # Close gamnit
- var display = display
- if display != null then display.close
- end
-
- redef fun on_resize(display)
- do
- super
-
- world_camera.mvp_matrix_cache = null
- ui_camera.mvp_matrix_cache = null
-
- # Update all sprites in the UI
- for sprite in ui_sprites do sprite.needs_update
- end
-
- redef fun on_resume
- do
- clock.lapse
- super
- end
-
- redef fun frame_core(display)
- do
- # Check errors
- assert glGetError == gl_NO_ERROR
-
- # Update game logic and set sprites
- perf_clock_main.lapse
- var dt = clock.lapse.to_f
- update dt
- frame_dt = dt
- sys.perfs["gamnit flat update client"].add perf_clock_main.lapse
-
- # Draw and flip screen
- frame_core_draw display
- display.flip
-
- # Check errors
- assert glGetError == gl_NO_ERROR
- end
-
- private var frame_dt = 0.0
-
- # Draw the whole screen, all `glDraw...` calls should be executed here
- protected fun frame_core_draw(display: GamnitDisplay)
- do
- frame_core_dynamic_resolution_before display
-
- perf_clock_main.lapse
- frame_core_world_sprites display
- perfs["gamnit flat world_sprites"].add perf_clock_main.lapse
-
- frame_core_ui_sprites display
- perfs["gamnit flat ui_sprites"].add perf_clock_main.lapse
-
- frame_core_dynamic_resolution_after display
- end
-
- private fun frame_core_sprites(display: GamnitDisplay, sprite_set: SpriteSet, camera: Camera)
- do
- var simple_2d_program = app.simple_2d_program
- simple_2d_program.use
- simple_2d_program.mvp.uniform camera.mvp_matrix
-
- sprite_set.time += frame_dt*sprite_set.time_mod
- simple_2d_program.time.uniform sprite_set.time
-
- # draw
- sprite_set.draw
-
- assert glGetError == gl_NO_ERROR
- end
-
- # Draw world sprites from `sprites`
- protected fun frame_core_world_sprites(display: GamnitDisplay)
- do
- frame_core_sprites(display, sprites, world_camera)
- end
-
- # Draw UI sprites from `ui_sprites`
- protected fun frame_core_ui_sprites(display: GamnitDisplay)
- do
- # Reset only the depth buffer
- glClear gl_DEPTH_BUFFER_BIT
-
- frame_core_sprites(display, ui_sprites, ui_camera)
- end
-end
-
-redef class Texture
-
- # Vertices coordinates of the base geometry
- #
- # Defines the default width and height of related sprites.
- private var vertices: Array[Float] is lazy do
- var w = width
- var h = height
- return [-0.5*w, 0.5*h, 0.0,
- 0.5*w, 0.5*h, 0.0,
- -0.5*w, -0.5*h, 0.0,
- 0.5*w, -0.5*h, 0.0]
- end
-
- # Coordinates of this texture on the `root` texture, in `[0..1.0]`
- private var texture_coords: Array[Float] is lazy do
- var l = offset_left
- var r = offset_right
- var b = offset_bottom
- var t = offset_top
- return [l, t,
- r, t,
- l, b,
- r, b]
- end
-
- # Coordinates of this texture on the `root` texture, inverting the X axis
- private var texture_coords_invert_x: Array[Float] is lazy do
- var l = offset_left
- var r = offset_right
- var b = offset_bottom
- var t = offset_top
- return [r, t,
- l, t,
- r, b,
- l, b]
- end
-
- # Convert to a sprite animation at `fps` speed with `x` or `y` frames
- #
- # The arguments `x` and `y` set the number of frames in the texture.
- # Use `x` for an horizontal arrangement or `y` for vertical.
- # One and only one of the arguments must be different than 0,
- # as an animation can only be on a line and cannot wrap.
- fun to_animation(fps: Float, x, y: Int): Animation
- do
- assert (x == 0) != (y == 0)
-
- var n_frames = x.max(y)
- var frames = new Array[Texture]
-
- var dx = (x/n_frames).to_f/n_frames.to_f
- var dy = (y/n_frames).to_f/n_frames.to_f
- var w = if x == 0 then 1.0 else dx
- var h = if y == 0 then 1.0 else dy
- var left = 0.0
- var top = 0.0
- for i in n_frames.times do
- frames.add new RelativeSubtexture(root, left, top, left+w, top+h)
- left += dx
- top += dy
- end
-
- return new Animation(frames, fps)
- end
-end
-
-# Graphic program to display simple models with a texture, translation, rotation and scale
-private class Simple2dProgram
- super GamnitProgramFromSource
-
- redef var vertex_shader_source = """
- // Vertex coordinates
- attribute vec4 coord;
-
- // Vertex color tint
- attribute vec4 color;
-
- // Vertex translation
- attribute vec4 translation;
-
- // Vertex scaling
- attribute float scale;
-
- // Vertex coordinates on textures
- attribute vec2 tex_coord;
-
- // Model view projection matrix
- uniform mat4 mvp;
-
- // Current world time, in seconds
- uniform float time;
-
- // Rotation matrix
- attribute vec4 rotation_row0;
- attribute vec4 rotation_row1;
- attribute vec4 rotation_row2;
- attribute vec4 rotation_row3;
-
- // Animation speed, frames per seconds
- attribute float a_fps;
-
- // Number of frames in the animation
- attribute float a_n_frames;
-
- // World coordinate of the animation (for aspect ratio)
- attribute vec2 a_coord;
-
- // Animation texture coordinates of the first frame
- attribute vec2 a_tex_coord;
-
- // Animation texture coordinates difference between frames
- attribute vec2 a_tex_diff;
-
- // Animation start time, in reference to `time`
- attribute float a_start;
-
- // Number of loops to play of the animation
- attribute float a_loops;
-
- mat4 rotation()
- {
- return mat4(rotation_row0, rotation_row1, rotation_row2, rotation_row3);
- }
-
- // Output to the fragment shader
- varying vec4 v_color;
- varying vec2 v_coord;
-
- // Is there an active animation?
- varying float v_animated;
-
- void main()
- {
- vec3 c; // coords
-
- float end = a_start + a_loops/a_fps*a_n_frames;
- if (a_fps != 0.0 && (a_loops == -1.0 || time < end)) {
- // in animation
- float frame = mod(floor((time-a_start)*a_fps), a_n_frames);
- v_coord = a_tex_coord + a_tex_diff*frame;
- c = vec3(a_coord, coord.z);
- v_animated = 1.0;
- } else {
- // static
- v_coord = tex_coord;
- c = coord.xyz;
- v_animated = 0.0;
- }
-
- gl_Position = (vec4(c * scale, 1.0) * rotation() + translation)* mvp;
- v_color = vec4(color.rgb*color.a, color.a);
- }
- """ @ glsl_vertex_shader
-
- redef var fragment_shader_source = """
- precision mediump float;
-
- // Does this object use a texture?
- uniform bool use_texture;
-
- // Texture to apply on this object
- uniform sampler2D texture0;
-
- // Texture to apply on this object
- uniform sampler2D animation;
-
- // Input from the vertex shader
- varying vec4 v_color;
- varying vec2 v_coord;
- varying float v_animated;
-
- void main()
- {
- if (v_animated > 0.5) {
- gl_FragColor = v_color * texture2D(animation, v_coord);
- if (gl_FragColor.a <= 0.01) discard;
- } else if (use_texture) {
- gl_FragColor = v_color * texture2D(texture0, v_coord);
- if (gl_FragColor.a <= 0.01) discard;
- } else {
- gl_FragColor = v_color;
- }
- }
- """ @ glsl_fragment_shader
-
- # Vertices coordinates
- var coord = attributes["coord"].as(AttributeVec4) is lazy
-
- # Should this program use the texture `texture`?
- var use_texture = uniforms["use_texture"].as(UniformBool) is lazy
-
- # Visible texture unit
- var texture = uniforms["texture0"].as(UniformSampler2D) is lazy
-
- # Coordinates on the textures, per vertex
- var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy
-
- # Color tint per vertex
- var color = attributes["color"].as(AttributeVec4) is lazy
-
- # Translation applied to each vertex
- var translation = attributes["translation"].as(AttributeVec4) is lazy
-
- # Rotation matrix, row 0
- var rotation_row0 = attributes["rotation_row0"].as(AttributeVec4) is lazy
-
- # Rotation matrix, row 1
- var rotation_row1 = attributes["rotation_row1"].as(AttributeVec4) is lazy
-
- # Rotation matrix, row 2
- var rotation_row2 = attributes["rotation_row2"].as(AttributeVec4) is lazy
-
- # Rotation matrix, row 3
- var rotation_row3 = attributes["rotation_row3"].as(AttributeVec4) is lazy
-
- # Scaling per vertex
- var scale = attributes["scale"].as(AttributeFloat) is lazy
-
- # Model view projection matrix
- var mvp = uniforms["mvp"].as(UniformMat4) is lazy
-
- # World time, in seconds
- var time = uniforms["time"].as(UniformFloat) is lazy
-
- # ---
- # Animations
-
- # Texture of all the frames of the animation
- var animation_texture = uniforms["animation"].as(UniformSampler2D) is lazy
-
- # Frame per second of the animation
- var animation_fps = attributes["a_fps"].as(AttributeFloat) is lazy
-
- # Number of frames in the animation
- var animation_n_frames = attributes["a_n_frames"].as(AttributeFloat) is lazy
-
- # Coordinates of each frame (mush be shared by all frames)
- var animation_coord = attributes["a_coord"].as(AttributeVec2) is lazy
-
- # Texture coordinates of the first frame
- var animation_tex_coord = attributes["a_tex_coord"].as(AttributeVec2) is lazy
-
- # Coordinate difference between each frame
- var animation_tex_diff = attributes["a_tex_diff"].as(AttributeVec2) is lazy
-
- # Animation start time, in seconds and in reference to `dt`
- var animation_start = attributes["a_start"].as(AttributeFloat) is lazy
-
- # Number of loops of the animation, -1 for infinite
- var animation_loops = attributes["a_loops"].as(AttributeFloat) is lazy
-end
-
-redef class Point3d[N]
- # ---
- # Associate each point to its sprites
-
- private var sprites: nullable Array[Sprite] = null
-
- private fun sprites_add(sprite: Sprite)
- do
- var sprites = sprites
- if sprites == null then
- sprites = new Array[Sprite]
- self.sprites = sprites
- end
- sprites.add sprite
- end
-
- private fun sprites_remove(sprite: Sprite)
- do
- var sprites = sprites
- assert sprites != null
- sprites.remove sprite
- end
-
- # ---
- # Notify `sprites` on attribute modification
-
- private fun needs_update
- do
- var sprites = sprites
- if sprites != null then for s in sprites do s.needs_update
- end
-
- redef fun x=(v)
- do
- if isset _x and v != x then needs_update
- super
- end
-
- redef fun y=(v)
- do
- if isset _y and v != y then needs_update
- super
- end
-
- redef fun z=(v)
- do
- if isset _z and v != z then needs_update
- super
- end
-end
-
-redef class OffsetPoint3d
- redef fun x=(v)
- do
- if isset _x and v != x then needs_update
- super
- end
-
- redef fun y=(v)
- do
- if isset _y and v != y then needs_update
- super
- end
-
- redef fun z=(v)
- do
- if isset _z and v != z then needs_update
- super
- end
-end
-
-# Set of sprites sorting them into different `SpriteContext`
-class SpriteSet
- super HashSet[Sprite]
-
- # Animation speed multiplier (0.0 to pause, 1.0 for normal speed, etc.)
- var time_mod = 1.0 is writable
-
- # Seconds elapsed since the launch of the program, in world time responding to `time_mod`
- var time = 0.0
-
- # Map texture then static vs dynamic to a `SpriteContext`
- private var contexts_map = new HashMap4[RootTexture, nullable RootTexture, Bool, Int, Array[SpriteContext]]
-
- # Contexts in `contexts_map`, sorted by draw order
- private var contexts_items = new Array[SpriteContext]
-
- # Sprites needing resorting in `contexts_map`
- private var sprites_to_remap = new Array[Sprite]
-
- # Add a sprite to the appropriate context
- private fun map_sprite(sprite: Sprite)
- do
- assert sprite.context == null else print_error "Sprite {sprite} belongs to another SpriteSet"
-
- # Sort by texture and animation texture
- var texture = sprite.texture.root
- var animation = sprite.animation
- var animation_texture = if animation != null then
- animation.frames.first.root else null
- var draw_order = sprite.draw_order
- var contexts = contexts_map[texture, animation_texture, sprite.static, draw_order]
-
- var context = null
- if contexts != null then
- for c in contexts.reverse_iterator do
- var size = c.sprites.length + 1
- if size * 4 <= 0xffff then
- context = c
- break
- end
- end
- end
-
- if context == null then
- var usage = if sprite.static then gl_STATIC_DRAW else gl_DYNAMIC_DRAW
- context = new SpriteContext(texture, animation_texture, usage, draw_order)
-
- if contexts == null then
- contexts = new Array[SpriteContext]
- contexts_map[texture, animation_texture, sprite.static, draw_order] = contexts
- end
-
- contexts.add context
-
- contexts_items.add context
- sprite_draw_order_sorter.sort(contexts_items)
- end
-
- context.sprites.add sprite
- context.sprites_to_update.add sprite
- context.last_sprite_to_update = sprite
-
- sprite.context = context
- sprite.sprite_set = self
-
- if animation != null and sprite.animation_start == -1.0 then
- # Start animation
- sprite.animation_start = time
- end
- end
-
- # Remove a sprite from its context
- private fun unmap_sprite(sprite: Sprite)
- do
- var context = sprite.context
- assert context != null
- context.sprites.remove sprite
-
- sprite.context = null
- sprite.sprite_set = null
- end
-
- # Draw all sprites by all contexts
- private fun draw
- do
- # Remap sprites that may need to change context
- for sprite in sprites_to_remap do
-
- # Skip if it was removed from this set after being modified
- if sprite.sprite_set != self then continue
-
- unmap_sprite sprite
- map_sprite sprite
- end
- sprites_to_remap.clear
-
- # Sort by draw order
- for context in contexts_items do context.draw
- end
-
- redef fun add(e)
- do
- if contexts_items.has(e.context) then return
- map_sprite e
- super
- end
-
- redef fun remove(e)
- do
- super
- if e isa Sprite then unmap_sprite e
- end
-
- redef fun remove_all(e)
- do
- if not has(e) then return
- remove e
- end
-
- redef fun clear
- do
- for sprite in self do
- sprite.context = null
- sprite.sprite_set = null
- end
- super
- for c in contexts_items do c.destroy
- contexts_map.clear
- contexts_items.clear
- sprites_to_remap.clear
- end
-
- private fun reset
- do
- for sprite in self do
- sprite.context = null
- end
-
- for c in contexts_items do c.destroy
- contexts_map.clear
- contexts_items.clear
- sprites_to_remap.clear
-
- for sprite in self do
- map_sprite sprite
- end
- end
-end
-
-# Context for calls to `glDrawElements`
-#
-# Each context has only one `texture` and `usage`, but many sprites.
-private class SpriteContext
-
- # ---
- # Context config and state
-
- # Only root texture drawn by this context
- var texture: nullable RootTexture
-
- # Only animation texture drawn by this context
- var animation_texture: nullable RootTexture
-
- # OpenGL ES usage of `buffer_array` and `buffer_element`
- var usage: GLBufferUsage
-
- # Draw order shared by all `sprites`
- var draw_order: Int
-
- # Sprites drawn by this context
- var sprites = new GroupedSprites
-
- # Sprites to update since last `draw`
- var sprites_to_update = new Set[Sprite]
-
- # Cache of the last `Sprite` added to `sprites_to_update` since the last call to `draw`
- var last_sprite_to_update: nullable Sprite = null
-
- # Sprites that have been update and for which `needs_update` can be set to false
- var updated_sprites = new Array[Sprite]
-
- # Buffer size to preallocate at `resize`, multiplied by `sprites.length`
- #
- # Require: `resize_ratio >= 1.0`
- var resize_ratio = 1.2
-
- # ---
- # OpenGL ES data
-
- # OpenGL ES buffer name for vertex data
- var buffer_array: Int = -1
-
- # OpenGL ES buffer name for indices
- var buffer_element: Int = -1
-
- # Current capacity, in sprites, of `buffer_array` and `buffer_element`
- var buffer_capacity = 0
-
- # C buffers used to pass the data of a single sprite
- var local_data_buffer = new GLfloatArray(float_per_vertex*4) is lazy
- var local_indices_buffer = new CUInt16Array(indices_per_sprite) is lazy
-
- # ---
- # Constants
-
- # Number of GL_FLOAT per vertex of `Simple2dProgram`
- var float_per_vertex: Int is lazy do
- return 4 + 4 + 4 + # vec4 translation, vec4 color, vec4 coord,
- 1 + 2 + 4*4 + # float scale, vec2 tex_coord, vec4 rotation_row*,
- 1 + 1 + # float a_fps, float a_n_frames,
- 2 + 2 + 2 + # vec2 a_coord, vec2 a_tex_coord, vec2 a_tex_diff,
- 1 + 1 # float a_start, float a_loops
- end
-
- # Number of bytes per vertex of `Simple2dProgram`
- var bytes_per_vertex: Int is lazy do
- var fs = 4 # sizeof(GL_FLOAT)
- return fs * float_per_vertex
- end
-
- # Number of bytes per sprite
- var bytes_per_sprite: Int is lazy do return bytes_per_vertex * 4
-
- # Number of vertex indices per sprite draw call (2 triangles)
- var indices_per_sprite = 6
-
- # ---
- # Main services
-
- # Allocate `buffer_array` and `buffer_element`
- fun prepare
- do
- var bufs = glGenBuffers(2)
- buffer_array = bufs[0]
- buffer_element = bufs[1]
-
- assert glGetError == gl_NO_ERROR
- end
-
- # Destroy `buffer_array` and `buffer_element`
- fun destroy
- do
- glDeleteBuffers([buffer_array, buffer_element])
- assert glGetError == gl_NO_ERROR
-
- buffer_array = -1
- buffer_element = -1
- end
-
- # Resize `buffer_array` and `buffer_element` to fit all `sprites` (and more)
- fun resize
- do
- app.perf_clock_sprites.lapse
-
- # Allocate a bit more space
- var capacity = (sprites.capacity.to_f * resize_ratio).to_i
-
- var array_bytes = capacity * bytes_per_sprite
- glBindBuffer(gl_ARRAY_BUFFER, buffer_array)
- assert glIsBuffer(buffer_array)
- glBufferData(gl_ARRAY_BUFFER, array_bytes, new Pointer.nul, usage)
- assert glGetError == gl_NO_ERROR
-
- # GL_TRIANGLES 6 vertices * sprite
- var n_indices = capacity * indices_per_sprite
- var ius = 2 # sizeof(GL_UNSIGNED_SHORT)
- var element_bytes = n_indices * ius
- glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element)
- assert glIsBuffer(buffer_element)
- glBufferData(gl_ELEMENT_ARRAY_BUFFER, element_bytes, new Pointer.nul, usage)
- assert glGetError == gl_NO_ERROR
-
- buffer_capacity = capacity
-
- sys.perfs["gamnit flat gpu resize"].add app.perf_clock_sprites.lapse
- end
-
- # Update GPU data of `sprite`
- fun update_sprite(sprite: Sprite)
- do
- var context = sprite.context
- if context != self then return
-
- var sprite_index = sprite.context_index
- assert sprite_index != -1
-
- # Vertices data
-
- var data = local_data_buffer
- var o = 0
- for v in [0..4[ do
- # vec4 translation
- data[o+ 0] = sprite.center.x
- data[o+ 1] = sprite.center.y
- data[o+ 2] = sprite.center.z
- data[o+ 3] = 0.0
-
- # vec4 color
- data[o+ 4] = sprite.tint[0]
- data[o+ 5] = sprite.tint[1]
- data[o+ 6] = sprite.tint[2]
- data[o+ 7] = sprite.tint[3]
-
- # float scale
- data[o+ 8] = sprite.scale
-
- # vec4 coord
- data[o+ 9] = sprite.texture.vertices[v*3+0]
- data[o+10] = sprite.texture.vertices[v*3+1]
- data[o+11] = sprite.texture.vertices[v*3+2]
- data[o+12] = 0.0
-
- # vec2 tex_coord
- var texture = texture
- if texture != null then
- var tc = if sprite.invert_x then
- sprite.texture.texture_coords_invert_x
- else sprite.texture.texture_coords
- data[o+13] = tc[v*2+0]
- data[o+14] = tc[v*2+1]
- end
-
- # mat4 rotation
- var rot
- if sprite.rotation == 0.0 then
- # Cache the matrix at no rotation
- rot = once new Matrix.identity(4)
- else
- rot = new Matrix.rotation(sprite.rotation, 0.0, 0.0, 1.0)
- end
- data.fill_from_matrix(rot, o+15)
-
- var animation = sprite.animation
- if animation == null then
- for i in [31..40] do data[o+i] = 0.0
- else
- # a_fps
- data[o+31] = animation.fps
-
- # a_n_frames
- data[o+32] = animation.frames.length.to_f
-
- # a_coord
- data[o+33] = animation.frames.first.vertices[v*3+0]
- data[o+34] = animation.frames.first.vertices[v*3+1]
-
- # a_tex_coord
- var tc = if sprite.invert_x then
- animation.frames.first.texture_coords_invert_x
- else animation.frames.first.texture_coords
- data[o+35] = tc[v*2]
- data[o+36] = tc[v*2+1]
-
- # a_tex_diff
- var dx = 0.0
- var dy = 0.0
- if animation.frames.length > 1 then
- dx = animation.frames[1].texture_coords[0] - animation.frames[0].texture_coords[0]
- dy = animation.frames[1].texture_coords[1] - animation.frames[0].texture_coords[1]
- end
- data[o+37] = dx
- data[o+38] = dy
-
- # a_start
- data[o+39] = sprite.animation_start
-
- # a_loops
- data[o+40] = sprite.animation_loops
- end
-
- o += float_per_vertex
- end
-
- glBindBuffer(gl_ARRAY_BUFFER, buffer_array)
- glBufferSubData(gl_ARRAY_BUFFER, sprite_index*bytes_per_sprite, bytes_per_sprite, data.native_array)
-
- var gl_error = glGetError
- assert gl_error == gl_NO_ERROR else print_error gl_error
-
- # Element / indices
- #
- # 0--1
- # | /|
- # |/ |
- # 2--3
-
- var indices = local_indices_buffer
- var io = sprite_index*4
- indices[0] = io+0
- indices[1] = io+2
- indices[2] = io+1
- indices[3] = io+1
- indices[4] = io+2
- indices[5] = io+3
-
- glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element)
- glBufferSubData(gl_ELEMENT_ARRAY_BUFFER, sprite_index*6*2, 6*2, indices.native_array)
-
- assert glGetError == gl_NO_ERROR
- end
-
- # Draw all `sprites`
- #
- # Call `resize` and `update_sprite` as needed before actual draw operation.
- #
- # Require: `app.simple_2d_program` and `mvp` must be bound on the GPU
- fun draw
- do
- if buffer_array == -1 then prepare
-
- assert buffer_array > 0 and buffer_element > 0 else
- print_error "Internal error: {self} was destroyed"
- end
-
- # Setup
- glBindBuffer(gl_ARRAY_BUFFER, buffer_array)
- glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element)
-
- # Resize GPU buffers?
- var update_everything = false
- if sprites.capacity > buffer_capacity then
- # Try to defragment first
- var moved = sprites.defragment
-
- if sprites.capacity > buffer_capacity then
- # Defragmentation wasn't enough, grow
- resize
-
- # We must update everything
- update_everything = true
- for s in sprites.items do if s != null then sprites_to_update.add s
- else
- # Just update the moved sprites
- for s in moved do sprites_to_update.add s
- end
- else if sprites.available.not_empty then
- # Defragment a bit anyway
- # TODO defrag only when there's time left on a frame
- var moved = sprites.defragment(1)
- for s in moved do sprites_to_update.add s
- end
-
- # Update GPU sprites data
- if sprites_to_update.not_empty or update_everything then
- app.perf_clock_sprites.lapse
-
- if update_everything then
- for sprite in sprites.items do if sprite != null then
- update_sprite(sprite)
- end
- else
- for sprite in sprites_to_update do update_sprite(sprite)
- end
-
- sprites_to_update.clear
- last_sprite_to_update = null
-
- sys.perfs["gamnit flat gpu update"].add app.perf_clock_sprites.lapse
- end
-
- # Update uniforms specific to this context
- var texture = texture
- app.simple_2d_program.use_texture.uniform texture != null
- if texture != null then
- glActiveTexture gl_TEXTURE0
- glBindTexture(gl_TEXTURE_2D, texture.gl_texture)
- app.simple_2d_program.texture.uniform 0
- end
- assert glGetError == gl_NO_ERROR
-
- var animation = animation_texture
- if animation != null then
- glActiveTexture gl_TEXTURE1
- glBindTexture(gl_TEXTURE_2D, animation.gl_texture)
- app.simple_2d_program.animation_texture.uniform 1
- end
- assert glGetError == gl_NO_ERROR
-
- # Configure attributes, in order:
- # vec4 translation, vec4 color, float scale, vec4 coord, vec2 tex_coord, vec4 rotation_row*,
- # a_fps, a_n_frames, a_coord, a_tex_coord, a_tex_diff, a_start, a_loops
-
- var offset = 0
- var p = app.simple_2d_program
- var sizeof_gl_float = 4 # sizeof(GL_FLOAT)
-
- var size = 4 # Number of floats
- glEnableVertexAttribArray p.translation.location
- glVertexAttribPointeri(p.translation.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 4
- glEnableVertexAttribArray p.color.location
- glVertexAttribPointeri(p.color.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 1
- glEnableVertexAttribArray p.scale.location
- glVertexAttribPointeri(p.scale.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 4
- glEnableVertexAttribArray p.coord.location
- glVertexAttribPointeri(p.coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 2
- glEnableVertexAttribArray p.tex_coord.location
- glVertexAttribPointeri(p.tex_coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 4
- for r in [p.rotation_row0, p.rotation_row1, p.rotation_row2, p.rotation_row3] do
- if r.is_active then
- glEnableVertexAttribArray r.location
- glVertexAttribPointeri(r.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- end
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
- end
-
- size = 1
- glEnableVertexAttribArray p.animation_fps.location
- glVertexAttribPointeri(p.animation_fps.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 1
- glEnableVertexAttribArray p.animation_n_frames.location
- glVertexAttribPointeri(p.animation_n_frames.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 2
- glEnableVertexAttribArray p.animation_coord.location
- glVertexAttribPointeri(p.animation_coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 2
- glEnableVertexAttribArray p.animation_tex_coord.location
- glVertexAttribPointeri(p.animation_tex_coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 2
- glEnableVertexAttribArray p.animation_tex_diff.location
- glVertexAttribPointeri(p.animation_tex_diff.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 1
- glEnableVertexAttribArray p.animation_start.location
- glVertexAttribPointeri(p.animation_start.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- size = 1
- glEnableVertexAttribArray p.animation_loops.location
- glVertexAttribPointeri(p.animation_loops.location, size, gl_FLOAT, false, bytes_per_vertex, offset)
- offset += size * sizeof_gl_float
- assert glGetError == gl_NO_ERROR
-
- # Actual draw
- for s in sprites.starts, e in sprites.ends do
- var l = e-s
- glDrawElementsi(gl_TRIANGLES, l*indices_per_sprite, gl_UNSIGNED_SHORT, 2*s*indices_per_sprite)
- assert glGetError == gl_NO_ERROR
- end
-
- # Take down
- for attr in [p.translation, p.color, p.scale, p.coord, p.tex_coord,
- p.rotation_row0, p.rotation_row1, p.rotation_row2, p.rotation_row3: Attribute] do
- if not attr.is_active then continue
- glDisableVertexAttribArray(attr.location)
- assert glGetError == gl_NO_ERROR
- end
-
- glBindBuffer(gl_ARRAY_BUFFER, 0)
- glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, 0)
- assert glGetError == gl_NO_ERROR
- end
-end
-
-# Representation of sprite data on the GPU
-#
-# The main purpose of this class is to optimize the use of contiguous
-# space in GPU memory. Each contiguous memory block can be drawn in a
-# single call. The starts index of each block is kept by `starts,
-# and the end + 1 by `ends`.
-#
-# The data can be compressed by a call to `defragment`.
-#
-# ~~~
-# intrude import gamnit::flat
-#
-# var array = new GroupedArray[String]
-# assert array.to_s == ""
-#
-# array.add "a"
-# array.add "b"
-# array.add "c"
-# array.add "d"
-# array.add "e"
-# array.add "f"
-# assert array.to_s == "[a,b,c,d,e,f]"
-# assert array.capacity == 6
-#
-# array.remove "a"
-# assert array.to_s == "[b,c,d,e,f]"
-#
-# array.remove "b"
-# assert array.to_s == "[c,d,e,f]"
-#
-# array.remove "f"
-# assert array.to_s == "[c,d,e]"
-#
-# array.remove "d"
-# assert array.to_s == "[c][e]"
-#
-# array.add "A"
-# assert array.to_s == "[A][c][e]"
-#
-# array.add "B"
-# assert array.to_s == "[A,B,c][e]"
-#
-# array.remove "e"
-# assert array.to_s == "[A,B,c]"
-#
-# array.add "D"
-# assert array.to_s == "[A,B,c,D]"
-#
-# array.add "E"
-# assert array.to_s == "[A,B,c,D,E]"
-# assert array.capacity == 6
-# assert array.length == 5
-#
-# array.remove "A"
-# array.remove "B"
-# array.remove "c"
-# array.remove "D"
-# array.remove "E"
-# assert array.to_s == ""
-#
-# array.add "a"
-# assert array.to_s == "[a]"
-# ~~~
-private class GroupedArray[E]
-
- # Memory with actual objects, and null in empty slots
- var items = new Array[nullable E]
-
- # Number of items in the array
- var length = 0
-
- # Number of item slots in the array
- fun capacity: Int do return items.length
-
- # List of available slots
- var available = new MinHeap[Int].default
-
- # Start index of filled chunks
- var starts = new List[Int]
-
- # Index of the spots after filled chunks
- var ends = new List[Int]
-
- # Add `item` to the first available slot and return its index
- fun add(item: E): Int
- do
- length += 1
-
- if available.not_empty then
- # starts & ends can't be empty
-
- var i = available.take
- items[i] = item
-
- if i == starts.first - 1 then
- # slot 0 free, 1 taken
- starts.first -= 1
- else if i == 0 then
- # slot 0 and more free
- starts.unshift 0
- ends.unshift 1
- else if starts.length >= 2 and ends.first + 1 == starts[1] then
- # merge 2 chunks
- ends.remove_at 0
- starts.remove_at 1
- else
- # at end of first chunk
- ends.first += 1
- end
- return i
- end
-
- items.add item
- if ends.is_empty then
- starts.add 0
- ends.add 1
- else ends.last += 1
- return ends.last - 1
- end
-
- # Remove the first instance of `item`
- fun remove(item: E)
- do
- var index = items.index_of(item)
- remove_at(item, index)
- end
-
- # Remove `item` at `index`
- fun remove_at(item: E, index: Int)
- do
- var i = index
- length -= 1
- items[i] = null
-
- var ii = 0
- for s in starts, e in ends do
- if s <= i and i < e then
- if s == e-1 then
- # single item chunk
- starts.remove_at ii
- ends.remove_at ii
-
- if starts.is_empty then
- items.clear
- available.clear
- return
- end
- else if e-1 == i then
- # last item of chunk
- ends[ii] -= 1
-
- else if s == i then
- # first item of chunk
- starts[ii] += 1
- else
- # break up chunk
- ends.insert(ends[ii], ii+1)
- ends[ii] = i
- starts.insert(i+1, ii+1)
- end
-
- available.add i
- return
- end
- ii += 1
- end
-
- abort
- end
-
- # Defragment and compress everything into a single chunks beginning at 0
- #
- # Returns the elements that moved as a list.
- #
- # ~~~
- # intrude import gamnit::flat
- #
- # var array = new GroupedArray[String]
- # array.add "a"
- # array.add "b"
- # array.add "c"
- # array.add "d"
- # array.remove "c"
- # array.remove "a"
- # assert array.to_s == "[b][d]"
- #
- # var moved = array.defragment
- # assert moved.to_s == "[d]"
- # assert array.to_s == "[d,b]"
- # assert array.length == 2
- # assert array.capacity == 2
- #
- # array.add "e"
- # array.add "f"
- # assert array.to_s == "[d,b,e,f]"
- # ~~~
- fun defragment(max: nullable Int): Array[E]
- do
- app.perf_clock_sprites.lapse
- max = max or else length
-
- var moved = new Array[E]
- while max > 0 and (starts.length > 1 or starts.first != 0) do
- var i = ends.last - 1
- var e = items[i]
- assert e != null
- remove e
- add e
- moved.add e
- max -= 1
- end
-
- if starts.length == 1 and starts.first == 0 then
- for i in [length..capacity[ do items.pop
- available.clear
- end
-
- sys.perfs["gamnit flat gpu defrag"].add app.perf_clock_sprites.lapse
- return moved
- end
-
- redef fun to_s
- do
- var ss = new Array[String]
- for s in starts, e in ends do
- ss.add "["
- for i in [s..e[ do
- var item: nullable Object = items[i]
- if item == null then item = "null"
- ss.add item.to_s
- if i != e-1 then ss.add ","
- end
- ss.add "]"
- end
- return ss.join
- end
-end
-
-# Optimized `GroupedArray` to use `Sprite::context_index` and avoid using `index_of`
-private class GroupedSprites
- super GroupedArray[Sprite]
-
- redef fun add(item)
- do
- var index = super
- item.context_index = index
- return index
- end
-
- redef fun remove(item) do remove_at(item, item.context_index)
-end
-
-redef class GLfloatArray
- private fun fill_from_matrix(matrix: Matrix, dst_offset: nullable Int)
- do
- dst_offset = dst_offset or else add_index
- var mat_len = matrix.width*matrix.height
- assert length >= mat_len + dst_offset
- native_array.fill_from_matrix_native(matrix.items, dst_offset, mat_len)
- add_index += mat_len
- end
-end
-
-redef class NativeGLfloatArray
- private fun fill_from_matrix_native(matrix: matrix::NativeDoubleArray, dst_offset, len: Int) `{
- int i;
- for (i = 0; i < len; i ++)
- self[i+dst_offset] = (GLfloat)matrix[i];
- `}
-end
-
-redef class Sys
- private var sprite_draw_order_sorter = new DrawOrderComparator is lazy
-end
-
-# Sort `SpriteContext` by their `draw_order`
-private class DrawOrderComparator
- super Comparator
-
- # This class can't set COMPARED because
- # `the public property cannot contain the private type...`
- #redef type COMPARED: SpriteContext
-
- # Require: `a isa SpriteContext and b isa SpriteContext`
- redef fun compare(a, b)
- do return a.as(SpriteContext).draw_order <=> b.as(SpriteContext).draw_order
-end
diff --git a/lib/gamnit/font.nit b/lib/gamnit/font.nit
deleted file mode 100644
index c6f48df880..0000000000
--- a/lib/gamnit/font.nit
+++ /dev/null
@@ -1,173 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Abstract font drawing services, implemented by `bmfont` and `tileset`
-module font
-
-import gamnit::flat_core
-
-# Abstract font, drawn by a `TextSprites`
-abstract class Font
-
- # Line spacing modifier for `pld` and `plu`
- #
- # This value acts as multiplier to the standard line height.
- # Defaults to 0.4, so a `pld` moves chars down by about half a line.
- var partial_line_mod: Numeric = 0.4 is writable
-
- # Backend writing service, clients should use `TextSprites.text=`
- protected fun write_into(text_sprites: TextSprites, text: Text) is abstract
-end
-
-# Manage a set of sprites to display some text
-class TextSprites
-
- # Font used to draw text
- var font: Font
-
- # Reference coordinates of this block of text
- #
- # When left aligned, the default at `align == 0.0`, the anchor is the
- # left coordinate of the first character of the first line.
- # When right aligned, at `align == 1.0`, the anchor is the right
- # coordinate of the last character.
- # When centered, at `align == 0.5`, the anchor is at the center.
- #
- # When top aligned, the default at `valign == 0.0`, the anchor is at the
- # top of this block of text.
- # When bottom aligned, at `valign == 1.0`, the anchor is at the bottom.
- var anchor: Point3d[Float]
-
- # Last set of sprites generated to display `text=`
- var sprites = new Array[Sprite]
-
- # Sprite set where to put created sprites
- #
- # Defaults to `app::ui_sprites`, but it could also be set to a
- # `app::sprites` or a custom collection.
- var target_sprite_set: Set[Sprite] = app.ui_sprites is lazy, writable
-
- private var cached_text: nullable Text = null
-
- private var init_complete = false
-
- # Last text drawn
- fun text: nullable Text do return cached_text
-
- # Update the text displayed by inserting new sprites into `app.ui_sprites`
- #
- # Does not redraw if `text` has not changed.
- fun text=(text: nullable Text)
- is autoinit do
- # Don't redraw if text hasn't changed
- if text == cached_text then return
- cached_text = text
-
- if not init_complete then return
-
- # Clean up last used sprites
- for s in sprites do if target_sprite_set.has(s) then target_sprite_set.remove s
- sprites.clear
-
- if text == null then return
-
- font.write_into(self, text)
-
- # Register sprites to be drawn by `app.ui_camera`
- target_sprite_set.add_all sprites
- end
-
- # Horizontal text alignment
- #
- # Use 0.0 to align left (the default), 0.5 to align in the center or
- # 1.0 to align on the right.
- #
- # See: `valign`
- var align = 0.0 is optional, writable
-
- # Vertical text alignment
- #
- # Use 0.0 for top alignment (the default) where the text is under the `anchor`,
- # 0.5 to vertically center the text on the `anchor` or
- # or 1.0 to bottom align the text above the `anchor`.
- #
- # See: `align`
- var valign = 0.0 is optional, writable
-
- # Maximum width of each line of text
- #
- # The first word of each line is exempt and may overflow.
- #
- # The behavior when a line overflow depends on `wrap`.
- var max_width: nullable Float is writable
-
- # Maximum height of this block of text
- #
- # The first line is exempt and may overflow.
- # Overflowing lines are cut.
- var max_height: nullable Float is writable
-
- # Should overflowing lines wrap to the next line?
- #
- # If `true`, the default, overflowing lines continue on the next line.
- # Otherwise, lines are cut before overflowing.
- var wrap = true is optional, writable
-
- # Scale applied to all sprites and spacing
- #
- # Defaults to 1.0.
- var scale = 1.0 is optional, writable
-
- # Links in the currently displayed text
- #
- # Links are declared in a Markdown-like format:
- #
- # * `[my link]` creates a link with the name `my link`.
- # * `[pretty name](internal name)` creates a link with the
- # name `internal_name` while showing the text `pretty name`.
- #
- # This `Map` lists the sprites composing each link.
- # These sprites can be modified as desired by the clients,
- # by changing their tints or anything else.
- var links = new Map[String, Array[Sprite]] is lazy
-
- # Width of the currently displayed text
- var width = 0.0
-
- # Height of the currently displayed text
- var height = 0.0
-
- # Force drawing of the text sprites
- #
- # This method may be called after changing a setting (`align`, `wrap`, etc.)
- # to update the displayed text.
- fun force_redraw
- do
- var t = cached_text
- cached_text = null
- text = t
- end
-
- init
- do
- init_complete = true
- force_redraw
- end
-end
-
-# Partial line forward (U+008B)
-fun pld: Char do return ''
-
-# Partial line backward (U+008C)
-fun plu: Char do return ''
diff --git a/lib/gamnit/gamnit.nit b/lib/gamnit/gamnit.nit
deleted file mode 100644
index c1ecc86b62..0000000000
--- a/lib/gamnit/gamnit.nit
+++ /dev/null
@@ -1,120 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Game and multimedia framework for Nit
-module gamnit
-
-import app
-
-import display
-import textures
-import programs
-
-import gamnit_android is conditional(android)
-import gamnit_linux is conditional(linux)
-import gamnit_ios is conditional(ios)
-import input_ios is conditional(ios)
-
-redef class App
-
- # Main `GamnitDisplay` initialized by `create_gamnit`
- var display: nullable GamnitDisplay = null
-
- # Hook to setup the OpenGL context: compiling shaders, creating VBO, reloading textures, etc.
- #
- # The gamnit services redefine this method to prepare optimizations and more.
- # Clients may also refine this method to prepare custom OpenGL resources.
- fun create_gamnit do end
-
- # Hook to prepare for recreating the OpenGL context
- #
- # Some gamnit services refine this method to reset caches before the
- # next call to `create_gamnit`.
- fun recreate_gamnit do end
-
- # Create and set `self.display`
- fun create_display
- do
- var display = new GamnitDisplay
- display.setup
- self.display = display
-
- # Print the current GL configuration, for debugging
- print "GL vendor: {glGetString(gl_VENDOR)}"
- print "GL renderer: {glGetString(gl_RENDERER)}"
- print "GL version: {glGetString(gl_VERSION)}"
- print "GLSL version: {glGetString(gl_SHADING_LANGUAGE_VERSION)}"
- print "GL extensions: {glGetString(gl_EXTENSIONS)}"
- print "GL max texture size: {glGetIntegerv(gl_MAX_TEXTURE_SIZE, 0)}"
- end
-
- # Hook for client programs to setup the scene
- #
- # Refine this method to build the game world or the main menu,
- # creating instances of `Sprite` and `Actor` as needed.
- #
- # This method is called only once per execution of the program and it should
- # be considered as the entry point of most game logic.
- fun create_scene do end
-
- # Core of the frame logic, executed only when the display is visible
- #
- # This method should be redefined by user modules to customize the behavior of the game.
- protected fun frame_core(display: GamnitDisplay) do end
-
- # Full frame logic, executed even if the display is not visible
- #
- # This method wraps `frame_core` and other services to be executed in the main app loop.
- #
- # To customize the behavior on each turn, it is preferable to redefined `frame_core`.
- # Still, `frame_full` can be redefined with care for more control.
- protected fun frame_full
- do
- var display = display
- if display != null then frame_core(display)
-
- feed_events
- end
-
- redef fun run
- do
- # TODO manage exit condition
- loop frame_full
- end
-
- # Loop on available events and feed them back to the app
- #
- # The implementation varies per platform.
- private fun feed_events do end
-
- # Hook to receive and respond to `event` triggered by the user or system
- #
- # Returns whether or not the event is used or intercepted.
- # If `true`, the event will not be processed further by the system.
- # Returns `false` to intercepts events like the back key on mobile devices.
- #
- # The instances passed as `event` may be freed (or overwritten),
- # right after this method returns. They should not be preserved.
- fun accept_event(event: InputEvent): Bool do return false
-
- # The window has been resized by the user or system
- #
- # The framework handles resizing the viewport automatically.
- fun on_resize(display: GamnitDisplay) do end
-end
-
-# Portable indirection to `glBindFramebuffer(gl_FRAMEBUFFER, fbo)`
-#
-# This is implemented differently on iOS.
-fun bind_screen_framebuffer(fbo: Int) do glBindFramebuffer(gl_FRAMEBUFFER, fbo)
diff --git a/lib/gamnit/gamnit_android.nit b/lib/gamnit/gamnit_android.nit
deleted file mode 100644
index 83bb564e31..0000000000
--- a/lib/gamnit/gamnit_android.nit
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Support services for Gamnit on Android
-module gamnit_android is
- android_api_min 15
- android_api_target 15
- android_manifest_activity """android:theme="@android:style/Theme.NoTitleBar.Fullscreen""""
- android_manifest_activity """android:configChanges="orientation|screenSize|keyboard|keyboardHidden""""
-end
-
-import android
-
-intrude import gamnit
-intrude import android::input_events
-import egl
-
-private import realtime
-
-# Print Android lifecycle events to the log?
-fun print_lifecycle_events: Bool do return true
-
-redef class App
-
- # ---
- # User inputs
-
- redef fun feed_events do app.poll_looper 0
-
- redef fun native_input_key(event) do return accept_event(event)
-
- redef fun native_input_motion(event)
- do
- if not scene_created then return false
-
- var ie = new AndroidMotionEvent(event)
- var handled = accept_event(ie)
-
- if not handled then accept_event ie.acting_pointer
-
- return handled
- end
-
- # ---
- # Handle OS lifecycle and set current state flag
-
- # State between `init_window` and `term_window`
- private var window_created = false
-
- # State between `gained_focus` and `lost_focus`
- private var focused = false
-
- # State between `resume` and `pause`
- private var resumed = false
-
- # Stage after `destroy`
- private var destroyed = false
-
- redef fun init_window
- do
- if print_lifecycle_events then print "+ init_window"
- window_created = true
- set_active
- super
- end
-
- redef fun term_window
- do
- if print_lifecycle_events then print "+ term_window"
- window_created = false
- set_inactive
- super
- end
-
- redef fun resume
- do
- if print_lifecycle_events then print "+ resume"
- resumed = true
- set_active
- super
- end
-
- redef fun pause
- do
- if print_lifecycle_events then print "+ pause"
- resumed = false
- set_inactive
- super
- end
-
- redef fun gained_focus
- do
- if print_lifecycle_events then print "+ gained_focus"
- focused = true
- set_active
- super
- end
-
- redef fun lost_focus
- do
- if print_lifecycle_events then print "+ lost_focus"
- focused = false
- super
- end
-
- redef fun destroy
- do
- if print_lifecycle_events then print "+ destroy"
- destroyed = true
- super
- end
-
- redef fun start
- do
- if print_lifecycle_events then print "+ start"
- super
- end
-
- redef fun stop
- do
- if print_lifecycle_events then print "+ stop"
- set_inactive
- super
- end
-
- redef fun config_changed
- do
- if print_lifecycle_events then print "+ config_changed"
- super
- end
-
- redef fun window_resized
- do
- if print_lifecycle_events then print "+ window_resized"
- super
- end
-
- redef fun content_rect_changed
- do
- if print_lifecycle_events then print "+ content_rect_changed"
- super
- end
-
- # ---
- # Update gamnit app
-
- # The app is fully visible and focused
- private var active = false
-
- # The scene was set up
- private var scene_created = false
-
- private fun set_active
- do
- assert not destroyed
- if window_created and resumed and focused and not active then
- var display = display
- if display == null then
- # Initial create
- create_display
- create_gamnit
- display = self.display
- else
- # Try to reuse the EGL context
- var native_window = app.native_app_glue.window
- assert not native_window.address_is_null
- var needs_recreate = display.check_egl_context(native_window)
- if needs_recreate then
-
- # Skip frame
- if display.native_window_is_invalid then
- print_error "the native window is invalid, skip frame"
- return
- end
-
- # The context was lost, reload everything
- create_gamnit
- recreate_gamnit
- end
- end
-
- # Update screen dimensions
- assert display != null
- display.update_size
- app.on_resize display
-
- if not scene_created then
- # Initial launch
- if debug_gamnit then print "set_active: create"
- create_scene
- scene_created = true
- on_restore_state
- else
- # Next to first launch, reload
- if debug_gamnit then print "set_active: recreate"
- end
-
- active = true
- end
- end
-
- private fun set_inactive
- do
- active = false
- end
-
- # ---
- # Implement gamnit entry points
-
- redef fun recreate_gamnit
- do
- super
-
- # Reload all textures
- if debug_gamnit then print "recreate_gamnit: reloading {all_root_textures.length} textures"
- for texture in all_root_textures do
- if debug_gamnit then print "recreate_gamnit: loading {texture}"
- texture.load true
- var gamnit_error = texture.error
- if gamnit_error != null then print_error gamnit_error
- end
- end
-
- redef fun run
- do
- if debug_gamnit then print "run: start"
- scene_created = false
-
- while not destroyed do
- if not active then
- if debug_gamnit then print "run: wait"
- app.poll_looper_pause -1
-
- else
- if debug_gamnit then print "run: frame"
-
- var native_window = app.native_app_glue.window
- assert not native_window.address_is_null
-
- var display = display
- assert display != null
-
- var needs_recreate = display.check_egl_context(native_window)
- if needs_recreate then
- if display.native_window_is_invalid then
- # This should be rare and may cause more issues, log it
- print "The native window is invalid, skip frame"
- set_inactive
- continue
- end
-
- # The context was lost, reload everything
- create_gamnit
- recreate_gamnit
- end
-
- assert scene_created
- frame_full
- end
- end
-
- if debug_gamnit then print "run: exit"
- exit 0
- end
-end
-
-redef class GamnitDisplay
-
- redef var width = 1080
- redef var height = 720
-
- # Update `width` and `height`
- private fun update_size
- do
- var context = app.native_activity
- self.width = context.window_width
- self.height = context.window_height
- end
-end
-
-redef class NativeActivity
-
- private fun window_height: Int in "Java" `{
- android.view.View view = self.getWindow().getDecorView();
- return view.getBottom() - view.getTop();
- `}
-
- private fun window_width: Int in "Java" `{
- android.view.View view = self.getWindow().getDecorView();
- return view.getRight() - view.getLeft();
- `}
-
- private fun orientation: Int in "Java" `{
- return self.getResources().getConfiguration().orientation;
- `}
-end
diff --git a/lib/gamnit/gamnit_ios.nit b/lib/gamnit/gamnit_ios.nit
deleted file mode 100644
index 4ee0a9827a..0000000000
--- a/lib/gamnit/gamnit_ios.nit
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Support services for gamnit on iOS
-module gamnit_ios
-
-import ios
-import gamnit
-
-import ios::assets
-
-redef class App
- redef fun did_finish_launching_with_options
- do
- create_gamnit
- create_scene
- return super
- end
-
- # Disable the game loop to rely on the GLKView callbacks on each frame instead
- redef fun run do end
-
- private fun frame_full_indirect do frame_full
-end
-
-redef class GamnitGLKView
- redef fun update do app.frame_full_indirect
-end
-
-redef fun bind_screen_framebuffer(fbo)
-do
- var display = app.display
- assert display != null
- display.glk_view.bind_drawable
-end
diff --git a/lib/gamnit/gamnit_linux.nit b/lib/gamnit/gamnit_linux.nit
deleted file mode 100644
index 7dd853a377..0000000000
--- a/lib/gamnit/gamnit_linux.nit
+++ /dev/null
@@ -1,169 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Support services for Gamnit on GNU/Linux
-module gamnit_linux
-
-import sdl2::events
-
-intrude import gamnit
-intrude import display_linux
-
-redef class App
- private var sdl_event_buffer = new SDLEventBuffer.malloc
-
- redef fun feed_events
- do
- var display = display
- if display == null then return
-
- loop
- var avail = sdl_event_buffer.poll_event
- if not avail then break
-
- # Convert to an SDL event with data
- var sdl_event = sdl_event_buffer.to_event
- if sdl_event isa SDLWindowEvent and sdl_event.is_resized then
- display.width = sdl_event.data1
- display.height = sdl_event.data2
- display.aspect_ratio = sdl_event.data1.to_f / sdl_event.data2.to_f
- on_resize display
- end
-
- # Convert to `mnit::inputs` conforming objects
- var gamnit_event = sdl_event.to_gamnit_event(sdl_event_buffer)
- accept_event gamnit_event
- end
- end
-
- redef fun on_create
- do
- super
- create_display
- create_gamnit
- create_scene
- end
-end
-
-redef class GamnitDisplay
- redef var aspect_ratio = super is lazy
-end
-
-# ---
-# Redef services from `sdl2::events`
-
-redef class SDLEvent
- private fun to_gamnit_event(buffer: SDLEventBuffer): GamnitInputEvent
- do return new GamnitOtherEvent(buffer, self)
-end
-
-redef class SDLQuitEvent
- redef fun to_gamnit_event(buffer) do return new GamnitQuitEvent(buffer, self)
-end
-
-redef class SDLMouseEvent
- redef fun to_gamnit_event(buffer) do return new GamnitPointerEvent(buffer, self)
-end
-
-redef class SDLMouseWheelEvent
- redef fun to_gamnit_event(buffer) do return new GamnitMouseWheelEvent(buffer, self)
-end
-
-redef class SDLKeyboardEvent
- redef fun to_gamnit_event(buffer) do return new GamnitKeyEvent(buffer, self)
-end
-
-# ---
-# Implement `mnit::inputs` interfaces
-
-# SDL2 event wrapper implementing the `mnit::input` API
-#
-# There is two views to the underlying native object: `buffer` and `native`.
-class GamnitInputEvent
- super InputEvent
-
- # Native SDL 2 event buffer with the pseudo class hierarchy metadata
- var buffer: SDLEventBuffer
-
- # Native SDL 2 event
- var native: NATIVE
-
- # Type of the `native` underlying SDL 2 event
- type NATIVE: SDLEvent
-end
-
-# Event on user requested quit
-class GamnitQuitEvent
- super GamnitInputEvent
- super QuitEvent
-
- redef type NATIVE: SDLQuitEvent
-end
-
-# Event on keyboard input
-class GamnitKeyEvent
- super GamnitInputEvent
- super KeyEvent
-
- redef type NATIVE: SDLKeyboardEvent
-
- redef fun is_down do return buffer.is_keydown
- redef fun is_up do return buffer.is_keyup
- redef fun is_arrow_up do return native.keysym.is_up
- redef fun is_arrow_left do return native.keysym.is_left
- redef fun is_arrow_down do return native.keysym.is_down
- redef fun is_arrow_right do return native.keysym.is_right
- redef fun to_c do return native.to_s.chars.first
- redef fun name do return native.to_s.to_lower
-end
-
-# Event on pointer, mouse and finger input
-class GamnitPointerEvent
- super GamnitInputEvent
- super PointerEvent
-
- redef type NATIVE: SDLMouseEvent
-
- redef fun x do return native.x.to_f
- redef fun y do return native.y.to_f
- redef fun is_move do return buffer.is_mouse_motion
-
- redef fun pressed
- do
- var native = native
- if native isa SDLMouseButtonEvent then
- return native.pressed and native.button == 1
- else if native isa SDLMouseMotionEvent then
- return native.state & 1 == 1
- else abort
- end
-end
-
-# Event on mouse wheel input
-class GamnitMouseWheelEvent
- super GamnitInputEvent
-
- redef type NATIVE: SDLMouseWheelEvent
-
- # Horizontal scroll amount
- fun x: Float do return native.x.to_f
-
- # Vertical scroll amount
- fun y: Float do return native.y.to_f
-end
-
-# SDL2 event not handled by gamnit
-class GamnitOtherEvent
- super GamnitInputEvent
-end
diff --git a/lib/gamnit/input_ios.nit b/lib/gamnit/input_ios.nit
deleted file mode 100644
index cb3d463c32..0000000000
--- a/lib/gamnit/input_ios.nit
+++ /dev/null
@@ -1,59 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Gamnit event support for iOS
-module input_ios
-
-intrude import ios::glkit
-import display_ios
-import gamnit_ios
-
-# Pointer/touch event on iOS
-class GamnitIOSPointerEvent
- super PointerEvent
-
- private var native: UIEvent
-
- private var native_touch: UITouch
-
- private var content_scale_factor: Float
-
- redef fun x do return native_touch.x * content_scale_factor
-
- redef fun y do return native_touch.y * content_scale_factor
-
- redef var pressed
-
- redef var is_move
-
- redef var pointer_id = native_touch.to_i is lazy
-end
-
-redef class NitGLKView
-
- redef var content_scale_factor = super is lazy
-
- redef fun touches_began(touches, event)
- do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, false))
-
- redef fun touches_moved(touches, event)
- do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, true))
-
- redef fun touches_ended(touches, event)
- do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, false, false))
-
- # TODO handle cancel
- #redef fun touches_cancelled(touches_event) do
- #do app.accept_event(new GamnitIOSPointerEvent(event, false, false))
-end
diff --git a/lib/gamnit/keys.nit b/lib/gamnit/keys.nit
deleted file mode 100644
index 014d3972aa..0000000000
--- a/lib/gamnit/keys.nit
+++ /dev/null
@@ -1,69 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Simple service keeping track of which keys are currently pressed
-#
-# This service revolves around `app.pressed_keys`, a `Set` of the names of currently pressed keys.
-# As a `Set`, `app.pressed_keys` can be iterated and queried with `has`.
-#
-# Limitations: The keys names are platform dependent.
-#
-# ~~~nitish
-# redef class App
-# redef fun accept_event(event)
-# do
-# # First, pass the event to `super`, `pressed_keys` must see all
-# # events but it doesn't intercept any of them.
-# if super then return true
-# return false
-# end
-#
-# redef fun update(dt)
-# do
-# for key in pressed_keys do
-# if k == "left" or k == "a" then
-# # Act on key pressed down
-# print "left or a is pressed down"
-# end
-# end
-# end
-# end
-# ~~~
-module keys
-
-import mnit::input
-import gamnit
-
-redef class App
- # Currently pressed keys
- var pressed_keys = new Set[String] is lazy
-
- # Register `event` to update `app.pressed_keys`
- private fun register_key_event(event: KeyEvent)
- do
- var key = event.name
- if event.is_down then
- app.pressed_keys.add key
- else if app.pressed_keys.has(key) then
- app.pressed_keys.remove key
- end
- end
-
- redef fun accept_event(event)
- do
- if event isa KeyEvent then register_key_event event
-
- return super
- end
-end
diff --git a/lib/gamnit/landscape.nit b/lib/gamnit/landscape.nit
deleted file mode 100644
index d897ac7fe4..0000000000
--- a/lib/gamnit/landscape.nit
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Lock the application in the landscape orientation
-module landscape
-
-import android::landscape is conditional(android)
diff --git a/lib/gamnit/limit_fps.nit b/lib/gamnit/limit_fps.nit
deleted file mode 100644
index ed73f5f322..0000000000
--- a/lib/gamnit/limit_fps.nit
+++ /dev/null
@@ -1,78 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Frame-rate control for applications
-module limit_fps
-
-import gamnit
-private import realtime
-
-redef class App
- # Limit the frame-rate to a given frequency
- #
- # This basically limits how much `frame_core` is called per second.
- # Zero (or a negative value) means no limit.
- #
- # Applications can modify this value even during the main-loop.
- var maximum_fps = 0.0 is writable
-
- # Current frame-rate
- #
- # Updated each 5 seconds, initialized at the value of `maximum_fps`.
- var current_fps: Float = maximum_fps is lazy
-
- redef fun frame_full
- do
- super
- limit_fps
- end
-
- # The clock for limit_fps
- private var clock = new Clock
-
- # Number of frames since the last deadline
- #
- # Used to compute `current_fps`.
- private var frame_count = 0
-
- # Deadline used to compute `current_fps`
- private var frame_count_deadline = 5.0
-
- # Check and sleep to maintain a frame-rate bellow `maximum_fps`
- #
- # Also periodically update `current_fps`
- # Is automatically called at the end of `full_frame`.
- fun limit_fps
- do
- var t = clock.total
- if t >= frame_count_deadline then
- var cfps = frame_count.to_f / 5.0
- self.current_fps = cfps
- frame_count = 0
- frame_count_deadline = t + 5.0
- end
- frame_count += 1
-
- var mfps = maximum_fps
- if mfps <= 0.0 then return
- var lapse = clock.lapse
- var dt = lapse.to_f
- var target_dt = 1.0 / mfps
- if dt < target_dt then
- var sleep_t = target_dt - dt
- sleep_t.sleep
- clock.lapse
- end
- end
-end
diff --git a/lib/gamnit/model_parsers/model_parser_base.nit b/lib/gamnit/model_parsers/model_parser_base.nit
deleted file mode 100644
index de0fa21c70..0000000000
--- a/lib/gamnit/model_parsers/model_parser_base.nit
+++ /dev/null
@@ -1,181 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services to parse models from a text description
-module model_parser_base
-
-import parser_base
-
-# Vector of 3 values, either `x, y, z`, `u, v, z` or `r, g, b`
-class Vec3
-
- # X value
- var x = 0.0 is writable
-
- # Y value
- var y = 0.0 is writable
-
- # Z value
- var z = 0.0 is writable
-
- # U value (redirection as `x`)
- fun u: Float do return x
-
- # Set U value (redirection for `x=`)
- fun u=(value: Float) do x = value
-
- # V value (redirection as `y`)
- fun v: Float do return y
-
- # Set V value (redirection for `y=`)
- fun v=(value: Float) do y = value
-
- # R value
- fun r: Float do return x
-
- # Set R value (redirection for `x=`)
- fun r=(value: Float) do x = value
-
- # G value
- fun g: Float do return y
-
- # Set G value (redirection for `y=`)
- fun g=(value: Float) do y = value
-
- # B value
- fun b: Float do return z
-
- # Set B value (redirection for `z=`)
- fun b=(value: Float) do z = value
-
- # Return all values into a new `Array[Float]`
- fun to_a: Array[Float] do return [x, y, z]
-
- redef fun to_s do return "<{class_name} {x} {y} {z}>"
-end
-
-# Vector of 4 values, either `x, y, z, w`, `u, v, z, w` or `r, g, b, a`
-class Vec4
- super Vec3
-
- # W value
- var w = 1.0 is writable
-
- # A value (redirection to `z`)
- fun a: Float do return z
-
- # Set A value (redirection for `z=`)
- fun a=(value: Float) do z = value
-
- # Return all values into a new `Array[Float]`
- redef fun to_a do return [x, y, z, w]
-
- redef fun to_s do return "<{class_name} {x} {y} {z} {w}>"
-end
-
-redef class StringProcessor
- # Read a single token after skipping preceding whitespaces
- #
- # Returns an empty string when at `eof`
- protected fun read_token: String
- do
- while not eof and src[pos].is_whitespace and src[pos] != '\n' do
- pos += 1
- end
-
- var start = pos
- ignore_until_whitespace_or_comment
- var ending = pos
- var str = src.substring(start, ending-start)
- return str
- end
-
- # Read 3 or 4 numbers and return them as a `Vec4`
- #
- # If there is no fourth value, `Vec4::w` is set to 1.0.
- protected fun read_vec4: Vec4
- do
- var vec = new Vec4
- vec.x = read_number
- vec.y = read_number
- vec.z = read_number
-
- var wstr = read_token
- if wstr.length > 0 then
- vec.w = if wstr.is_numeric then wstr.to_f else 0.0
- else
- vec.w = 1.0
- end
-
- return vec
- end
-
- # Read 2 or 3 numbers and return them as a `Vec3`
- #
- # If there is no third value, `Vec3::z` is set to 0.0.
- protected fun read_vec3: Vec3
- do
- var vec = new Vec3
- vec.x = read_number
- vec.y = read_number # Make optional
-
- var wstr = read_token
- if wstr.length > 0 then
- vec.z = if wstr.is_numeric then wstr.to_f else 0.0
- else
- vec.z = 0.0
- end
-
- return vec
- end
-
- # Advance `pos` until a whitespace or `#` is encountered
- protected fun ignore_until_whitespace_or_comment: Int
- do
- while src.length > pos and not src[pos].is_whitespace and src[pos] != '#' do
- pos += 1
- end
- return pos
- end
-
- # Read a token and parse it as a `Float`
- protected fun read_number: Float
- do
- var str = read_token
- return if str.is_numeric then str.to_f else 0.0
- end
-
- # Advance `pos` until the next end of line or a `#`
- protected fun read_until_eol_or_comment: String
- do
- ignore_whitespaces
- var start = pos
- while not eof and src[pos] != '#' and src[pos] != '\n' do
- pos += 1
- end
- var ending = pos
- var str = src.substring(start, ending-start)
- return str.trim
- end
-
- # Advance `pos` to skip the next end of line
- protected fun skip_eol
- do
- while not eof do
- var c = src.chars[pos]
- pos += 1
- if c == '\n' then break
- end
- end
-end
diff --git a/lib/gamnit/model_parsers/mtl.nit b/lib/gamnit/model_parsers/mtl.nit
deleted file mode 100644
index fc34e47fe5..0000000000
--- a/lib/gamnit/model_parsers/mtl.nit
+++ /dev/null
@@ -1,136 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services to parse .mtl material files
-module mtl
-
-import model_parser_base
-
-# Parser of `.mtl` files
-#
-# ~~~
-# var mtl_src = """
-# # Green material with low reflections
-# newmtl GreenMaterial
-# Ns 96.078431
-# Ka 0.000000 0.000000 0.000000
-# Kd 0.027186 0.180434 0.012088
-# Ks 0.500000 0.500000 0.500000
-# Ni 1.000000
-# d 1.000000
-# illum 2
-# """
-#
-# var parser = new MtlFileParser(mtl_src)
-# var name_to_mtls = parser.parse
-# assert name_to_mtls.keys.join == "GreenMaterial"
-# ~~~
-class MtlFileParser
- super StringProcessor
-
- # Read and parse source and return all materials organized by their names
- fun parse: Map[String, MtlDef]
- do
- var mat_lib = new Map[String, MtlDef]
- var material: nullable MtlDef = null
-
- while not eof do
- var token = read_token
- if token == "newmtl" then
- var name = read_until_eol_or_comment
- material = new MtlDef(name)
- mat_lib[name] = material
- else if material != null then
- if token == "Ka" then
- material.ambient = read_vec3
- else if token == "Kd" then
- material.diffuse = read_vec3
- else if token == "Ks" then
- material.specular = read_vec3
- else if token == "d" then
- material.dissolved = read_number
- else if token == "Tr" then
- material.dissolved = 1.0 - read_number
- else if token == "illum" then
- material.illumination_model = read_number.to_i
- else if token == "map_Ka" then
- material.map_ambient = read_until_eol_or_comment
- else if token == "map_Kd" then
- material.map_diffuse = read_until_eol_or_comment
- else if token == "map_Bump" then
- material.map_bump = read_until_eol_or_comment
- else if token == "map_Ks" then
- material.map_specular = read_until_eol_or_comment
- else if token == "map_Ns" then
- material.map_exponent = read_until_eol_or_comment
-
- # TODO other line type headers
- else if token == "Ns" then
- else if token == "Ni" then
- else if token == "sharpness" then
- else if token == "bump" then
- end
- end
- skip_eol
- end
-
- return mat_lib
- end
-end
-
-# Material defined in a `.mtl` file
-class MtlDef
-
- # Name of this material
- var name: String
-
- # Ambient color
- var ambient = new Vec3 is lazy
-
- # Diffuse color
- var diffuse = new Vec3 is lazy
-
- # Specular color
- var specular = new Vec3 is lazy
-
- # Dissolved level, where 1.0 is fully visible
- var dissolved = 1.0
-
- # Transparency level, where 1.0 is fully invisible
- fun transparency: Float do return 1.0 - dissolved
-
- # Illumination model
- var illumination_model = 0
-
- # Ambient map
- var map_ambient: nullable String = null
-
- # Diffuse map
- var map_diffuse: nullable String = null
-
- # Bump map or normals texture
- var map_bump: nullable String = null
-
- # Specular reflectivity map
- var map_specular: nullable String = null
-
- # Specular exponent map
- var map_exponent: nullable String = null
-
- # Collect non-null maps from `map_diffuse, map_bump, map_specular, map_exponent`
- fun maps: Array[String]
- do
- return [for m in [map_ambient, map_diffuse, map_bump, map_specular, map_exponent] do if m != null then m]
- end
-end
diff --git a/lib/gamnit/model_parsers/obj.nit b/lib/gamnit/model_parsers/obj.nit
deleted file mode 100644
index 62f1488eeb..0000000000
--- a/lib/gamnit/model_parsers/obj.nit
+++ /dev/null
@@ -1,252 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services to parse .obj geometry files
-module obj
-
-import model_parser_base
-
-# Parser of .obj files in ASCII format
-#
-# Instantiate from a `String` and use `parse` to extract the `ObjDef`.
-#
-# ~~~
-# var obj_src = """
-# # Model of a cube
-# mtllib material_file.mtl
-# o Cube
-# v 1.000000 0.000000 0.000000
-# v 1.000000 0.000000 1.000000
-# v 0.000000 0.000000 1.000000
-# v 0.000000 0.000000 0.000000
-# v 1.000000 1.000000 0.999999
-# v 0.999999 1.000000 1.000001
-# v 0.000000 1.000000 1.000000
-# v 0.000000 1.000000 0.000000
-# usemtl GreenMaterial
-# s off
-# f 1 2 3 4
-# f 5 6 7 8
-# f 1 5 8 2
-# f 2 8 7 3
-# f 3 7 6 4
-# f 5 1 4 6
-# """
-#
-# var parser = new ObjFileParser(obj_src)
-# var parsed_obj = parser.parse
-# assert parsed_obj.is_coherent
-# assert parsed_obj.objects.first.name == "Cube"
-# ~~~
-class ObjFileParser
- super StringProcessor
-
- private var geometry = new ObjDef is lazy
-
- private var current_material_lib: nullable String = null
-
- private var current_material_name: nullable String = null
-
- # Execute parsing of `src` to extract an `ObjDef`
- fun parse: nullable ObjDef
- do
- var obj_obj = null
- while not eof do
- var token = read_token
- if token.is_empty or token == "#" then
- # Ignore empty lines and comments
- else if token == "v" then # Vertex points
- var vec = read_vec4
- geometry.vertex_points.add vec
- else if token == "vt" then # Texture coords
- var vec = read_vec3
- geometry.texture_coords.add vec
- else if token == "vn" then # Normals
- var vec = read_vec3 # This one should not accept `w` values
- geometry.normals.add vec
- else if token == "vp" then # Parameter space vertices
- var vec = read_vec3
- geometry.params.add vec
- else if token == "f" then # Faces
- var face = read_face
- if obj_obj == null then
- obj_obj = new ObjObj("")
- geometry.objects.add obj_obj
- end
- obj_obj.faces.add face
- else if token == "mtllib" then
- current_material_lib = read_until_eol_or_comment
- else if token == "usemtl" then
- current_material_name = read_until_eol_or_comment
-
- # TODO other line type headers
- else if token == "s" then
- else if token == "o" then
- obj_obj = new ObjObj(read_until_eol_or_comment)
- geometry.objects.add obj_obj
- else if token == "g" then
- end
- skip_eol
- end
- return geometry
- end
-
- private fun read_face: ObjFace
- do
- var face = new ObjFace(current_material_lib, current_material_name)
-
- loop
- var r = read_face_index_set(face)
- if not r then break
- end
-
- return face
- end
-
- private fun read_face_index_set(face: ObjFace): Bool
- do
- var token = read_token
-
- var parts = token.split('/')
- if parts.is_empty or parts.first.is_empty then return false
-
- var v = new ObjVertex
- for i in parts.length.times, part in parts do
- part = part.trim
-
- var n = null
- if not part.is_empty and part.is_numeric then n = part.to_i
-
- if i == 0 then
- n = n or else 0 # Error if n == null
- if n < 0 then n = geometry.vertex_points.length + n
- v.vertex_point_index = n
- else if i == 1 then
- if n != null and n < 0 then n = geometry.texture_coords.length + n
- v.texture_coord_index = n
- else if i == 2 then
- if n != null and n < 0 then n = geometry.normals.length + n
- v.normal_index = n
- else abort
- end
- face.vertices.add v
-
- return true
- end
-end
-
-# Geometry from a .obj file
-class ObjDef
- # Vertex coordinates
- var vertex_points = new Array[Vec4]
-
- # Texture coordinates
- var texture_coords = new Array[Vec3]
-
- # Normals
- var normals = new Array[Vec3]
-
- # Surface parameters
- var params = new Array[Vec3]
-
- # Sub-objects
- var objects = new Array[ObjObj]
-
- # Relative paths to referenced material libraries
- fun material_libs: Set[String] do
- var libs = new Set[String]
- for obj in objects do
- for face in obj.faces do
- var lib = face.material_lib
- if lib != null then libs.add lib
- end
- end
- return libs
- end
-
- # Check the coherence of the model
- #
- # Returns `false` on error and prints details to stderr.
- #
- # This service can be useful for debugging, however it should not
- # be executed at each execution of a game.
- fun is_coherent: Bool
- do
- for obj in objects do
- for f in obj.faces do
- if f.vertices.length < 3 then return error("Face with less than 3 vertices")
- end
-
- for f in obj.faces do for v in f.vertices do
- var i = v.vertex_point_index
- if i < 1 then return error("Vertex point index < 1")
- if i > vertex_points.length then return error("Vertex point index > than length")
-
- var j = v.texture_coord_index
- if j != null then
- if j < 1 then return error("Texture coord index < 1")
- if j > texture_coords.length then return error("Texture coord index > than length")
- end
-
- j = v.normal_index
- if j != null then
- if j < 1 then return error("Normal index < 1")
- if j > normals.length then return error("Normal index > than length")
- end
- end
- end
- return true
- end
-
- # Service to print errors for `is_coherent`
- private fun error(msg: Text): Bool
- do
- print_error "ObjDef Error: {msg}"
- return false
- end
-end
-
-# Sub-object within an `ObjDef`
-class ObjObj
-
- # Sub-object name as declared in the source file
- var name: String
-
- # Sub-object faces
- var faces = new Array[ObjFace]
-end
-
-# Flat surface of an `ObjDef`
-class ObjFace
- # Vertex composing this surface, there should be 3 or more
- var vertices = new Array[ObjVertex]
-
- # Relative path to the .mtl material lib
- var material_lib: nullable String
-
- # Name of the material in `material_lib`
- var material_name: nullable String
-end
-
-# Vertex composing a `ObjFace`
-class ObjVertex
- # Vertex coordinates index in `ObjDef::vertex_points`, starting at 1
- var vertex_point_index = 0
-
- # Texture coordinates index in `ObjDef::texture_coords`, starting at 1
- var texture_coord_index: nullable Int = null
-
- # Normal index in `ObjDef::normals`, starting at 1
- var normal_index: nullable Int = null
-end
diff --git a/lib/gamnit/network/client.nit b/lib/gamnit/network/client.nit
deleted file mode 100644
index dc4fc7b297..0000000000
--- a/lib/gamnit/network/client.nit
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Client-side network services for games and such
-#
-# The following code implements a client to connect to a local server and
-# briefly exchange with it.
-#
-# ~~~
-# redef fun handshake_app_name do return "nitwork_test"
-# redef fun handshake_app_version do return "1.0"
-#
-# # Prepare connection with remote server
-# var config = new RemoteServerConfig("localhost", 4444)
-# var server = new RemoteServer(config)
-#
-# # Try to connect
-# if not server.connect then return
-#
-# # Make sure the server is compatible
-# if not server.handshake then return
-#
-# # Connection up! communicate
-# server.writer.serialize "hello server"
-# print server.reader.deserialize.as(Object)
-#
-# # Done, close socket
-# server.socket.close
-# ~~~
-module client
-
-intrude import common
-
-# Information of the remove server
-class RemoteServerConfig
-
- # Address of the remote server, either a domain name or an Internet address
- var address: Text
-
- # Listening port of the server
- var port: Int
-end
-
-# Connection to a remote server
-class RemoteServer
-
- # `RemoteServerConfig` used to initiate connection to the server
- var config: RemoteServerConfig
-
- # Communication socket with the server
- var socket: nullable TCPStream = null
-
- # Is this connection connected?
- fun connected: Bool
- do
- var socket = socket
- return socket != null and socket.connected
- end
-
- # `MsgPackSerializer` used to send data to this client through `socket`
- var writer: MsgPackSerializer is noinit
-
- # `MsgPackDeserializer` used to receive data from this client through `socket`
- var reader: MsgPackDeserializer is noinit
-
- # Attempt connection with the remote server
- fun connect: Bool
- do
- print "Connecting to {config.address}:{config.port}..."
- var socket = new TCPStream.connect(config.address.to_s, config.port)
- self.socket = socket
-
- if not socket.connected then
- print "Connection failed: {socket.last_error or else "Internal error"}"
- return false
- end
-
- # Setup serialization
- writer = new MsgPackSerializer(socket)
- writer.cache = new AsyncCache(false)
- reader = new MsgPackDeserializer(socket)
- writer.link reader
-
- return true
- end
-
- # Attempt handshake with server
- #
- # Validates compatibility between `handshake_app_name` and `handshake_app_version`.
- #
- # On error, close `socket`.
- fun handshake: Bool
- do
- # The client goes first so that the server doesn't show its hand
- var socket = socket
- assert socket != null
-
- # App name
- var app_name = sys.handshake_app_name
- socket.serialize_msgpack app_name
-
- var server_app = socket.deserialize_msgpack("String")
- if server_app != app_name then
- print_error "Handshake Error: server app name is '{server_app or else ""}'"
- socket.close
- return false
- end
-
- # App version
- socket.serialize_msgpack sys.handshake_app_version
-
- var server_version = socket.deserialize_msgpack("String")
- if server_version != sys.handshake_app_version then
- print_error "Handshake Error: server version is different '{server_version or else ""}'"
- socket.close
- return false
- end
-
- return true
- end
-end
-
-# Discover local servers responding on UDP `discovery_port`
-#
-# Sends a message in the format `gamnit::network? handshake_app_name` and
-# looks for the response `gamnit::network! handshake_app_name port_number`.
-# Waits for `timeout`, or the default 0.1 seconds, after sending the message.
-#
-# The server usually responds using the method `answer_discovery_requests`.
-# When receiving responses, the client may then choose a server and
-# connect via `new RemoteServer`.
-#
-# ~~~
-# var servers = discover_local_servers
-# if servers.not_empty then
-# var server = new RemoteServer(servers.first)
-# server.connect
-# server.writer.serialize "hello server"
-# server.socket.close
-# end
-# ~~~
-fun discover_local_servers(timeout: nullable Float): Array[RemoteServerConfig]
-do
- timeout = timeout or else 0.1
-
- var s = new UDPSocket
- s.enable_broadcast = true
- s.blocking = false
- s.broadcast(discovery_port, "{discovery_request_message} {handshake_app_name}")
- timeout.sleep
-
- var r = new Array[RemoteServerConfig]
- loop
- var ptr = new Ref[nullable SocketAddress](null)
- var resp = s.recv_from(1024, ptr)
- var src = ptr.item
-
- if resp.is_empty then
- # No response
- break
- else
- assert src != null
- var words = resp.split(" ")
- if words.length == 3 and words[0] == discovery_response_message and
- words[1] == handshake_app_name and words[2].is_int then
- var address = src.address
- var port = words[2].to_i
- r.add new RemoteServerConfig(address, port)
- end
- end
- end
- return r
-end
diff --git a/lib/gamnit/network/common.nit b/lib/gamnit/network/common.nit
deleted file mode 100644
index 339aa9bbf9..0000000000
--- a/lib/gamnit/network/common.nit
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services common to the `client` and `server` modules
-module common
-
-import socket
-import msgpack
-
-# Unique name of the application to use in the handshake
-#
-# This name must be the same between client/server and
-# it should not be used by other programs that may interfere.
-# Both client and server refuse connections with a different name.
-#
-# This value must not contain spaces.
-fun handshake_app_name: String do return program_name
-
-# Version of the communication protocol to use in the handshake
-#
-# Its value should change with the communication protocol in such a way
-# that different versions indicates incompatible protocols.
-#
-# Both client and server refuse connections with a different version.
-#
-# This value must not contain spaces.
-fun handshake_app_version: String do return "0.0"
-
-# Server port listening for discovery requests
-#
-# This name must be the same between client/server.
-fun discovery_port: Int do return 18722
-
-# First word in discovery requests
-private fun discovery_request_message: String do return "gamnit::network?"
-
-# First word in discovery responses
-private fun discovery_response_message: String do return "gamnit::network!"
diff --git a/lib/gamnit/network/network.nit b/lib/gamnit/network/network.nit
deleted file mode 100644
index 93e14073a0..0000000000
--- a/lib/gamnit/network/network.nit
+++ /dev/null
@@ -1,70 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Easy client/server logic for games and simple distributed applications
-#
-# Both `gamnit::client` and `gamnit::server` can be used separately or
-# together by importing `gamnit::network`.
-# Use both modules to create an program that discover local servers
-# or create one if none is found:
-#
-# ~~~
-# redef fun handshake_app_name do return "network_test"
-#
-# # Discover local servers
-# var servers = discover_local_servers
-# if servers.not_empty then
-# # Try to connect to the first local server
-# var server_info = servers.first
-# var server = new RemoteServer(server_info)
-#
-# if not server.connect then
-# print_error "Failed to connect to {server_info.address}:{server_info.port}"
-# else if not server.handshake then
-# print_error "Failed handshake with {server_info.address}:{server_info.port}"
-# else
-# # Connected!
-# print "Connected to {server_info.address}:{server_info.port}"
-#
-# # Write something and close connection
-# server.writer.serialize "hello server"
-# server.socket.as(not null).close
-# end
-# else
-# # Create a local server
-# var connect_port = 33729
-# print "Launching server: connect on {connect_port}, discovery on {discovery_port}"
-# var server = new Server(connect_port)
-#
-# # Don't loop if testing
-# if "NIT_TESTING".environ == "true" then exit 0
-#
-# loop
-# # Respond to discovery requests
-# server.answer_discovery_requests
-#
-# # Accept new clients
-# var new_clients = server.accept_clients
-# for client in new_clients do
-# # Read something and close connection
-# assert client.reader.deserialize == "hello server"
-# client.socket.close
-# end
-# end
-# end
-# ~~~
-module network
-
-import server
-import client
diff --git a/lib/gamnit/network/server.nit b/lib/gamnit/network/server.nit
deleted file mode 100644
index 0a78d43d17..0000000000
--- a/lib/gamnit/network/server.nit
+++ /dev/null
@@ -1,211 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Server-side network services for games and such
-#
-# The following code creates a server that continuously listen for new clients,
-# and exchange with them briefly before disconnecting.
-#
-# ~~~nitish
-# redef fun handshake_app_name do return "nitwork_test"
-# redef fun handshake_app_version do return "1.0"
-#
-# Open a server on port 4444
-# var server = new Server(4444)
-#
-# loop
-# # Accept new clients
-# var new_clients = server.accept_clients
-# for client in new_clients do
-# # A client is connected, communicate!
-# print ""
-# print client.reader.deserialize.as(Object)
-# client.writer.serialize "Goodbye client"
-#
-# # Done, close socket
-# client.socket.close
-# end
-#
-# # `accept_clients` in non-blocking,
-# # sleep before tying again, or do something else.
-# 0.5.sleep
-# printn "."
-# end
-# ~~~
-module server
-
-intrude import common
-
-# Game server controller
-class Server
-
- # Port for the `listening_socket`
- var port: Int
-
- # All connected `RemoteClient`
- var clients = new Array[RemoteClient]
-
- # TCP socket accepting new connections
- #
- # Opened on the first call to `accept_clients`.
- var listening_socket: TCPServer is lazy do
- var socket = new TCPServer(port)
- socket.listen 8
- socket.blocking = false
- return socket
- end
-
- # Accept currently waiting clients and return them as an array
- #
- # If `add_to_clients`, the default, the new clients are added to `clients`.
- # Otherwise, the return value of `accept_clients` may be added to `clients`
- # explicitly by the caller after an extra verification or sorting.
- fun accept_clients(add_to_clients: nullable Bool): Array[RemoteClient]
- do
- add_to_clients = add_to_clients or else true
- assert not listening_socket.closed
-
- var new_clients = new Array[RemoteClient]
- loop
- var client_socket = listening_socket.accept
- if client_socket == null then break
-
- var rc = new RemoteClient(client_socket)
-
- var handshake_success = rc.handshake
- if handshake_success then
- new_clients.add rc
- print "Server: Client at {client_socket.address} passed the handshake"
- else
- print_error "Server Error: Client at {client_socket.address} failed the handshake"
- client_socket.close
- end
- end
-
- if add_to_clients then clients.add_all new_clients
-
- return new_clients
- end
-
- # Broadcast a `message` to all `clients`, then flush the connection
- #
- # The client `except` is skipped and will not receive the `message`.
- fun broadcast(message: Serializable, except: nullable RemoteClient)
- do
- for client in clients do if client != except then
- client.writer.serialize(message)
- client.socket.flush
- end
- end
-
- # Respond to pending discovery requests by sending the TCP listening address and port
- #
- # Returns the number of valid requests received.
- #
- # The response messages includes the TCP listening address and port
- # for remote clients to connect with TCP using `connect`.
- # These connections are accepted by the server with `accept_clients`.
- fun answer_discovery_requests: Int
- do
- var count = 0
- loop
- var ptr = new Ref[nullable SocketAddress](null)
- var read = discovery_socket.recv_from(1024, ptr)
-
- # No sender means there is no discovery request
- var sender = ptr.item
- if sender == null then break
-
- var words = read.split(" ")
- if words.length != 2 or words[0] != discovery_request_message or words[1] != handshake_app_name then
- print "Server Warning: Rejected discovery request '{read}' from {sender.address}:{sender.port}"
- continue
- end
-
- var msg = "{discovery_response_message} {handshake_app_name} {self.port}"
- discovery_socket.send_to(sender.address, sender.port, msg)
- count += 1
- end
- return count
- end
-
- # UDP socket responding to discovery requests
- #
- # Usually opened on the first call to `answer_discovery_request`.
- var discovery_socket: UDPSocket is lazy do
- var s = new UDPSocket
- s.blocking = false
- s.bind(null, discovery_port)
- return s
- end
-end
-
-# Reference to a remote client connected to this server
-class RemoteClient
-
- # Communication socket with the client
- var socket: TCPStream
-
- # Is this client connected?
- fun connected: Bool do return socket.connected
-
- # `MsgPackSerializer` used to send data to this client through `socket`
- var writer: MsgPackSerializer is noinit
-
- # `MsgPackDeserializer` used to receive data from this client through `socket`
- var reader: MsgPackDeserializer is noinit
-
- init
- do
- # Setup serialization
- writer = new MsgPackSerializer(socket)
- writer.cache = new AsyncCache(true)
- reader = new MsgPackDeserializer(socket)
- writer.link reader
- end
-
- # Check for compatibility with the client
- fun handshake: Bool
- do
- print "Server: Handshake initiated by {socket.address}"
-
- # Make sure it is the same app
- var server_app = sys.handshake_app_name
- var client_app = socket.deserialize_msgpack
- if server_app != client_app then
- print_error "Server Error: Client app name is '{client_app or else ""}'"
-
- # Send an empty string so the client read it and give up
- socket.serialize_msgpack ""
- socket.close
- return false
- end
-
- socket.serialize_msgpack server_app
-
- # App version
- var app_version = sys.handshake_app_version
- var client_version = socket.deserialize_msgpack
- if client_version != app_version then
- print_error "Handshake Error: client version is different '{client_version or else ""}'"
- socket.serialize_msgpack ""
- socket.close
- return false
- end
-
- socket.serialize_msgpack app_version
-
- return true
- end
-end
diff --git a/lib/gamnit/package.ini b/lib/gamnit/package.ini
deleted file mode 100644
index 81c6aa7520..0000000000
--- a/lib/gamnit/package.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=gamnit
-tags=game,lib
-maintainer=Alexis Laferrière
-license=Apache-2.0
-desc=Portable game and multimedia framework for Nit
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/
-git=https://github.com/nitlang/nit.git
-git.directory=lib/gamnit/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/lib/gamnit/portrait.nit b/lib/gamnit/portrait.nit
deleted file mode 100644
index ad3cfbd1e6..0000000000
--- a/lib/gamnit/portrait.nit
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Lock the application in the portrait orientation
-module portrait
-
-import android::portrait is conditional(android)
diff --git a/lib/gamnit/programs.nit b/lib/gamnit/programs.nit
deleted file mode 100644
index 6efc68bac3..0000000000
--- a/lib/gamnit/programs.nit
+++ /dev/null
@@ -1,602 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services for graphical programs with shaders, attributes and uniforms
-module programs
-
-import display
-import matrix
-
-private import more_collections
-
-# `Uniform` or `Attribute` of a `GamnitProgram`
-class ShaderVariable
-
- # The `GamnitProgram` to which `self` belongs
- var program: GLProgram
-
- # Name of `self` in the `program` source
- var name: String
-
- # Location of `self` in the compiled `program`
- var location: Int
-
- # Number of elements in this array (1 for scalars and more for vectors)
- var size: Int
-
- # Is `self` an active uniform or attribute in the `program`?
- #
- # If `false`, the variable may have been optimized out by the compiler.
- fun is_active: Bool do return true
-
- redef fun to_s do return "<{class_name} name:{name} location:{location} size:{size}"
-end
-
-# Inactive shader variable, either optimized out or simple absent from the program
-#
-# Returned by `GamnitProgram::uniforms` or `GamnitProgram::attributes` when
-# the uniform has not been identified as active by the driver.
-# Operations on instances of this class have no effects.
-#
-# Act as a compatibility when a program expect a uniform to exist even in
-# a context where the driver's compiler may have optimized it out.
-# You must be careful when receiving an `InactiveVariable` as it may also
-# silence real program errors, such type in variable name.
-abstract class InactiveVariable
- super ShaderVariable
-
- redef fun is_active do return false
-end
-
-# Shader attribute
-#
-# It will use either the `uniform` value or the data at `array_pointer` if
-# and only if `array_enabled`.
-class Attribute
- super ShaderVariable
-
- private var array_enabled_cache = false
-
- # Is the array attribute enabled?
- fun array_enabled: Bool do return array_enabled_cache
-
- # Set whether to use the data at `array_pointer` over `uniform`.
- fun array_enabled=(value: Bool)
- do
- if not is_active then return
-
- glUseProgram program
-
- self.array_enabled_cache = value
- if value then
- glEnableVertexAttribArray location
- else glDisableVertexAttribArray location
- end
-
- # Define the `array` of vertex data
- fun array(array: Array[Float], data_per_vertex: Int)
- do
- # TODO move this and native_float_array to a subclass specific to float
-
- if not is_active then return
-
- var native = native_float_array
- if native == null or array.length > native.length then
- if native != null then native.finalize
- native = new GLfloatArray.from(array)
- self.native_float_array = native
- else
- native.fill_from(array)
- end
-
- glVertexAttribPointer(location, data_per_vertex, gl_FLOAT, false, 0, native.native_array)
- end
-
- private var native_float_array: nullable GLfloatArray = null
-end
-
-# Shader attribute of GLSL type `float`
-class AttributeFloat
- super Attribute
-
- # Set the uniform value to use when the vertex array is disabled
- fun uniform(x: Float) do if is_active then glVertexAttrib1f(location, x)
-end
-
-# Shader attribute of GLSL type `vec2`
-class AttributeVec2
- super Attribute
-
- # Set the uniform value to use when the vertex array is disabled
- fun uniform(x, y: Float) do if is_active then glVertexAttrib2f(location, x, y)
-end
-
-# Shader attribute of GLSL type `vec3`
-class AttributeVec3
- super Attribute
-
- # Set the uniform value to use when the vertex array is disabled
- fun uniform(x, y, z: Float) do if is_active then glVertexAttrib3f(location, x, y, z)
-end
-
-# Shader attribute of GLSL type `vec4`
-class AttributeVec4
- super Attribute
-
- # Set the uniform value to use when the vertex array is disabled
- fun uniform(x, y, z, w: Float) do if is_active then glVertexAttrib4f(location, x, y, z, w)
-end
-
-# `Attribute` that does not exist or that has been optimized out
-class InactiveAttribute
- super InactiveVariable
- super AttributeFloat
- super AttributeVec2
- super AttributeVec3
- super AttributeVec4
-end
-
-# Shader uniform
-class Uniform
- super ShaderVariable
-
- private fun uniform_1i(index, x: Int) `{ glUniform1i(index, x); `}
-end
-
-# Shader uniform of GLSL type `bool`
-class UniformBool
- super Uniform
-
- # Set this uniform value
- fun uniform(val: Bool) do uniform_1i(location, if val then 1 else 0)
-end
-
-# Shader uniform of GLSL type `int`
-class UniformInt
- super Uniform
-
- # Set this uniform value
- fun uniform(val: Int) do uniform_1i(location, val)
-end
-
-# Shader uniform of GLSL type `vec4`
-class UniformFloat
- super Uniform
-
- # Set this uniform value
- fun uniform(x: Float) do glUniform1f(location, x)
-end
-
-# Shader uniform of GLSL type `vec4`
-class UniformVec2
- super Uniform
-
- # Set this uniform value
- fun uniform(x, y: Float) do glUniform2f(location, x, y)
-end
-
-# Shader uniform of GLSL type `vec4`
-class UniformVec3
- super Uniform
-
- # Set this uniform value
- fun uniform(x, y, z: Float) do glUniform3f(location, x, y, z)
-end
-
-# Shader uniform of GLSL type `vec4`
-class UniformVec4
- super Uniform
-
- # Set this uniform value
- fun uniform(x, y, z, w: Float) do glUniform4f(location, x, y, z, w)
-end
-
-# Shader uniform of GLSL type `sampler2D`
-class UniformSampler2D
- super Uniform
-
- # Set this uniform value
- fun uniform(val: Int) do uniform_1i(location, val)
-end
-
-# Shader uniform of GLSL type `mat4`
-class UniformMat4
- super Uniform
-
- private var native_matrix_cache: nullable NativeGLfloatArray = null
-
- # Set this uniform value
- fun uniform(matrix: Matrix)
- do
- var native = native_matrix_cache
- if native == null then
- native = new NativeGLfloatArray.matrix
- self.native_matrix_cache = native
- end
-
- matrix.fill_native(native)
- uniform_matrix_4f(location, 1, false, native)
- end
-
- private fun uniform_matrix_4f(index, count: Int, transpose: Bool, data: NativeGLfloatArray) `{
- glUniformMatrix4fv(index, count, transpose, data);
- `}
-end
-
-# `Uniform` that does not exist or that has been optimized out
-class InactiveUniform
- super InactiveVariable
- super UniformBool
- super UniformInt
- super UniformFloat
- super UniformSampler2D
- super UniformVec2
- super UniformVec3
- super UniformVec4
- super UniformMat4
-
- redef fun is_active do return false
-end
-
-# Gamnit shader
-abstract class Shader
-
- # TODO add alternative init to load shaders from binary
-
- # Index of this shader in OpenGL
- private var gl_shader: GLShader is noinit
-
- # Latest error raised by operations of this shader
- var error: nullable Error = null
-
- # Source code of this shader
- var source: Text
-
- # Low-level type of this shader
- private fun gl_shader_type: GLShaderType is abstract
-
- # Compile this shader and report any errors in the attribute `error`
- fun compile
- do
- # Create
- var gl_shader = glCreateShader(gl_shader_type)
- if not glIsShader(gl_shader) then
- self.error = new Error("Shader creation failed: {glGetError}")
- return
- end
- self.gl_shader = gl_shader
-
- glShaderSource(gl_shader, source.to_cstring)
-
- # Compile
- glCompileShader gl_shader
- if not gl_shader.is_compiled then
- self.error = new Error("Shader compilation failed: {glGetShaderInfoLog(gl_shader)}")
- return
- end
-
- error = gammit_gl_error
- end
-
- # Has this shader been deleted?
- var deleted = false
-
- # Delete this shader and free its resources
- fun delete
- do
- if deleted then return
-
- glDeleteShader gl_shader
- deleted = true
- end
-end
-
-# Gamnit vertex shader
-class VertexShader
- super Shader
-
- redef fun gl_shader_type do return gl_VERTEX_SHADER
-end
-
-# Gamnit fragment shader
-class FragmentShader
- super Shader
-
- redef fun gl_shader_type do return gl_FRAGMENT_SHADER
-end
-
-# Gamnit graphical program
-#
-# Subclasses should implement both `vertex_shader` and `fragment_shader`.
-abstract class GamnitProgram
-
- # Vertex shader to attach to this program
- fun vertex_shader: VertexShader is abstract
-
- # Fragment shader to attach to this program
- fun fragment_shader: FragmentShader is abstract
-
- # Index to the OpenGL ES program, set by `compile_and_link`
- private var gl_program: nullable GLProgram = null
-
- # Last error raised by `compile_and_link`
- var error: nullable Error = null is protected writable
-
- # Compile the shaders, and this program, then link and report any errors
- fun compile_and_link
- do
- # Get an index
- var gl_program = glCreateProgram
- if not glIsProgram(gl_program) then
- self.error = new Error("Program creation failed: {glGetError.to_s}")
- return
- end
- self.gl_program = gl_program
-
- # Vertex shader
- var vertex_shader = vertex_shader
- vertex_shader.compile
- if vertex_shader.error != null then
- self.error = vertex_shader.error
- return
- end
-
- # Fragment shader
- var fragment_shader = fragment_shader
- fragment_shader.compile
- if fragment_shader.error != null then
- self.error = fragment_shader.error
- return
- end
-
- # Attach shaders
- glAttachShader(gl_program, vertex_shader.gl_shader)
- glAttachShader(gl_program, fragment_shader.gl_shader)
-
- # Catch any errors up to here
- var error = gammit_gl_error
- if error != null then
- self.error = error
- return
- end
-
- # Link
- glLinkProgram gl_program
- if not gl_program.is_linked then
- self.error = new Error("Linking failed: {glGetProgramInfoLog(gl_program)}")
- return
- end
-
- # Fill the attribute and uniform lists
- var n_attribs = glGetProgramiv(gl_program, gl_ACTIVE_ATTRIBUTES)
- for a in [0..n_attribs[ do
- var name = gl_program.active_attrib_name(a)
- var size = gl_program.active_attrib_size(a)
- var typ = gl_program.active_attrib_type(a)
- var location = gl_program.attrib_location(name)
-
- # FIXME location may be invalid at this point because
- # attrib_location does not work with truncated names,
- # as returned by `active_attrib_name`.
-
- var attribute
- if typ == gl_FLOAT then
- attribute = new AttributeFloat(gl_program, name, location, size)
- else if typ == gl_FLOAT_VEC2 then
- attribute = new AttributeVec2(gl_program, name, location, size)
- else if typ == gl_FLOAT_VEC3 then
- attribute = new AttributeVec3(gl_program, name, location, size)
- else if typ == gl_FLOAT_VEC4 then
- attribute = new AttributeVec4(gl_program, name, location, size)
- else
- attribute = new Attribute(gl_program, name, location, size)
- end
- # TODO missing types
- attributes[name] = attribute
- end
-
- var n_uniforms = glGetProgramiv(gl_program, gl_ACTIVE_UNIFORMS)
- for a in [0..n_uniforms[ do
-
- var name = gl_program.active_uniform_name(a)
- var size = gl_program.active_uniform_size(a)
- var typ = gl_program.active_uniform_type(a)
- var location = gl_program.uniform_location(name)
-
- var uniform
- if typ == gl_BOOL then
- uniform = new UniformBool(gl_program, name, location, size)
- else if typ == gl_INT then
- uniform = new UniformInt(gl_program, name, location, size)
- else if typ == gl_SAMPLER_2D then
- uniform = new UniformSampler2D(gl_program, name, location, size)
- else if typ == gl_FLOAT then
- uniform = new UniformFloat(gl_program, name, location, size)
- else if typ == gl_FLOAT_VEC2 then
- uniform = new UniformVec2(gl_program, name, location, size)
- else if typ == gl_FLOAT_VEC3 then
- uniform = new UniformVec3(gl_program, name, location, size)
- else if typ == gl_FLOAT_VEC4 then
- uniform = new UniformVec4(gl_program, name, location, size)
- else if typ == gl_FLOAT_MAT4 then
- uniform = new UniformMat4(gl_program, name, location, size)
- else
- uniform = new Uniform(gl_program, name, location, size)
- end
- # TODO missing types
- uniforms[name] = uniform
- end
- end
-
- # Diagnose possible problems with the shaders of the program
- #
- # Lists to the console inactive uniforms and attributes.
- # These may not be problematic but they can help to debug the program.
- fun diagnose
- do
- if gl_program == null then compile_and_link
-
- print "# Diagnose {class_name}"
- for k,v in uniforms do
- if not v.is_active then print "* Uniform {v.name} is inactive"
- end
- for k,v in attributes do
- if not v.is_active then print "* Attribute {v.name} is inactive"
- end
- end
-
- # Attributes of this program organized by name
- #
- # Active attributes are gathered at `compile_and_link`.
- # Upon request, inactive attributes are returned as a new `InactiveAttribute`.
- var attributes = new AttributeMap(self)
-
- # Uniforms of this program organized by name
- #
- # Active uniforms are gathered at `compile_and_link`.
- # Upon request, inactive attributes are returned as a new `InactiveUniform`.
- var uniforms = new UniformMap(self)
-
- # Notify the GPU to use this program
- fun use
- do
- var gl_program = gl_program
- assert gl_program != null # TODO error not compiled, or compile it
- glUseProgram gl_program
- end
-
- # Has this program been deleted?
- var deleted = false
-
- # Delete this program if it has not already been deleted
- fun delete
- do
- if deleted then return
-
- var gl_program = gl_program
- if gl_program != null then glDeleteProgram gl_program
-
- deleted = true
- end
-end
-
-# Gamnit graphical program from the shaders source code
-class GamnitProgramFromSource
- super GamnitProgram
-
- # Source code of the vertex shader
- fun vertex_shader_source: Text is abstract
-
- redef var vertex_shader = new VertexShader(vertex_shader_source) is lazy
-
- # Source code of the fragment shader
- fun fragment_shader_source: Text is abstract
-
- redef var fragment_shader = new FragmentShader(fragment_shader_source) is lazy
-end
-
-# Map to organize `ShaderVariable` instances by their name
-abstract class ShaderVariableMap[A: ShaderVariable]
- super HashMap[String, A]
-
- private var program: GamnitProgram
-
- redef fun [](key)
- do
- # Alter the user specified name to fit the truncated name
- var max_len = max_name_length - 1
- if key isa Text and key.length > max_len then key = key.substring(0, max_len)
- return super(key)
- end
-
- private fun max_name_length: Int is abstract
-end
-
-# Map to organize `Attribute` instances by their name
-class AttributeMap
- super ShaderVariableMap[Attribute]
-
- redef fun provide_default_value(key) do
- return new InactiveAttribute(program.gl_program.as(not null), "", -1, 0)
- end
-
- redef fun max_name_length do return glGetProgramiv(program.gl_program.as(not null), gl_ACTIVE_ATTRIBUTE_MAX_LENGTH)
-
- redef fun [](key)
- do
- # Update the location of this attribute from the user specified name
- var item = super
- if key isa Text then item.location = program.gl_program.attrib_location(key.to_s)
- return item
- end
-end
-
-# Map to organize `Uniform` instances by their name
-class UniformMap
- super ShaderVariableMap[Uniform]
-
- redef fun provide_default_value(key) do
- return new InactiveUniform(program.gl_program.as(not null), "", -1, 0)
- end
-
- redef fun max_name_length do return glGetProgramiv(program.gl_program.as(not null), gl_ACTIVE_UNIFORM_MAX_LENGTH)
-
- redef fun [](key)
- do
- var item = super
- if key isa Text then item.location = program.gl_program.uniform_location(key.to_s)
- return item
- end
-end
-
-redef extern class NativeGLfloatArray
-
- # Allocate a new matrix
- new matrix `{ return malloc(4*4*sizeof(GLfloat)); `}
-
- # Overwrite this matrix with the identity matrix
- fun set_identity
- do
- for i in [0..4[ do
- for j in [0..4[ do
- matrix_set(i, j, if i == j then 1.0 else 0.0)
- end
- end
- end
-
- # Get the element at `x, y`
- fun matrix_get(x, y: Int): Float `{ return self[y*4+x]; `}
-
- # Set the element at `x, y`
- fun matrix_set(x, y: Int, val: Float) `{ self[y*4+x] = val; `}
-end
-
-redef class Matrix
- # Copy content of this matrix to a `NativeGLfloatArray`
- fun fill_native(native: NativeGLfloatArray)
- do
- for i in [0..width[ do
- for j in [0..height[ do
- native.matrix_set(i, j, self[i, j])
- end
- end
- end
-end
-
-private fun gammit_gl_error: nullable Error
-do
- var gl_error = glGetError
- if gl_error == gl_NO_ERROR then return null
- return new Error("GL error: {gl_error}")
-end
diff --git a/lib/gamnit/texture_atlas_parser.nit b/lib/gamnit/texture_atlas_parser.nit
deleted file mode 100644
index a0e4d5ff5e..0000000000
--- a/lib/gamnit/texture_atlas_parser.nit
+++ /dev/null
@@ -1,117 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Tool to parse XML texture atlas and generated Nit code to access subtextures
-module texture_atlas_parser
-
-import dom
-import gen_nit
-import opts
-
-# Command line options
-var opts = new OptionContext
-var opt_name = new OptionString("Name of the module to generate", "--name", "-n")
-var opt_dir = new OptionString("Folder where to write the generated module", "--dir")
-opts.add_option(opt_name, opt_dir)
-opts.parse
-var rest = opts.rest
-
-if opts.errors.not_empty then
- print_error opts.errors
- exit 1
-end
-
-if rest.is_empty then
- print_error "Error: Expected the path to the XML file as argument"
- exit 2
-end
-
-# Prepare to read XML file and gather the attributes
-var xml_file = rest.first
-var attributes = new Array[String]
-
-# Insert the first attribute, to load the root texture
-var png_file = "images" / xml_file.basename("xml") + "png"
-attributes.add """
- var root_texture = new TextureAsset("{{{png_file}}}")"""
-
-# Read XML file
-var content = xml_file.to_path.read_all
-var xml = content.to_xml
-if xml isa XMLError then
- print_error "RSS Parse Error: {xml.message}:{xml.location or else "null"}"
- exit 3
-end
-
-var items = xml["TextureAtlas"].first.children
-for item in items do if item isa XMLOnelinerTag then
- var x = null
- var y = null
- var width = null
- var height = null
- var name = null
- for attr in item.attributes do if attr isa XMLStringAttr then
- if attr.name == "x" then
- x = attr.value.to_i
- else if attr.name == "y" then
- y = attr.value.to_i
- else if attr.name == "width" then
- width = attr.value.to_i
- else if attr.name == "height" then
- height = attr.value.to_i
- else if attr.name == "name" then
- name = attr.value
- end
- end
-
- if x != null and y != null and width != null and height != null and name != null then
- name = name.strip_extension(".png").to_snake_case
-
- var coords = "{x}, {y}, {width}, {height}"
- attributes.add """
- var {{{name}}}: Texture = root_texture.subtexture({{{coords}}})"""
- else
- print_error "Error on {item}"
- end
-end
-
-var module_name = opt_name.value
-if module_name == null then module_name = "spritesheet"
-var class_name = module_name.capitalized.to_camel_case
-
-# Generate Nit code
-var nit_module = new NitModule(module_name)
-nit_module.header = """
-# This file is generated by texture_atlas_parser
-"""
-
-nit_module.content.add """
-import gamnit::display
-import gamnit::textures
-
-class {{{class_name}}}
-"""
-
-for a in attributes do nit_module.content.add a
-
-nit_module.content.add """
-end"""
-
-var dir = opt_dir.value
-if dir != null then
- var out_path = dir / module_name + ".nit"
- nit_module.write_to_file out_path
-else
- printn nit_module.write_to_string
-end
diff --git a/lib/gamnit/textures.nit b/lib/gamnit/textures.nit
deleted file mode 100644
index 4987be28ce..0000000000
--- a/lib/gamnit/textures.nit
+++ /dev/null
@@ -1,413 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Load textures, create subtextures and manage their life-cycle
-module textures
-
-import display
-
-# Texture composed of pixels, loaded from the assets folder by default
-#
-# Most textures should be created with `App` (as attributes)
-# for the method `create_scene` to load them.
-#
-# ~~~
-# import gamnit::flat
-#
-# redef class App
-# # Create the texture object, it will be loaded automatically
-# var texture = new Texture("path/in/assets.png")
-#
-# redef fun create_scene()
-# do
-# # Let `create_scene` load the texture
-# super
-#
-# # Use the texture
-# var sprite = new Sprite(texture, new Point3d[Float](0.0, 0.0, 0.0))
-# app.sprites.add sprite
-# end
-# end
-# ~~~
-#
-# Otherwise, they can be loaded and error checked explicitly after `create_scene`.
-#
-# ~~~nitish
-# var texture = new Texture("path/in/assets.png")
-# texture.load
-# var error = texture.error
-# if error != null then print_error error
-# ~~~
-#
-# A texture may also be created programmatically, like `CheckerTexture`,
-# or derived from another texture, using `subtexture`.
-# Textures with actual pixel data (not `Subtexture`) are `RootTexture`.
-# Texture loaded from the assets folder may in the PNG or JPG formats.
-abstract class Texture
-
- # Prepare a texture located at `path` within the `assets` folder
- new (path: Text) do return new TextureAsset(path.to_s)
-
- # Root texture from which `self` is derived
- fun root: RootTexture is abstract
-
- # Width in pixels of this texture
- var width = 0.0
-
- # Height in pixels of this texture
- var height = 0.0
-
- # Load this texture, force reloading it if `force`
- fun load(force: nullable Bool) do end
-
- # Last error on this texture
- var error: nullable Error = null
-
- # OpenGL handle to this texture
- fun gl_texture: Int do return root.gl_texture
-
- # Prepare a subtexture from this texture, from the given pixel offsets
- fun subtexture(left, top, width, height: Numeric): Subtexture
- do
- return new AbsoluteSubtexture(self, left.to_f, top.to_f, width.to_f, height.to_f)
- end
-
- # Offset of the left border on `root` from 0.0 to 1.0
- fun offset_left: Float do return 0.0
-
- # Offset of the top border on `root` from 0.0 to 1.0
- fun offset_top: Float do return 0.0
-
- # Offset of the right border on `root` from 0.0 to 1.0
- fun offset_right: Float do return 1.0
-
- # Offset of the bottom border on `root` from 0.0 to 1.0
- fun offset_bottom: Float do return 1.0
-
- # Should this texture be drawn pixelated when magnified? otherwise it is interpolated
- #
- # This setting affects all the textures based on the same pixel data, or `root`.
- #
- # Must be set after a successful call to `load`.
- fun pixelated=(pixelated: Bool)
- do
- if root.gl_texture == -1 then return
-
- # TODO do not modify `root` by using *sampler objects* in glesv3
- glBindTexture(gl_TEXTURE_2D, root.gl_texture)
-
- var param = if pixelated then gl_NEAREST else gl_LINEAR
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, param)
- end
-end
-
-# Colorful small texture of 32x32 pixels by default
-class CheckerTexture
- super RootTexture
-
- # Width and height in pixels, defaults to 32
- var size = 32 is optional
-
- redef fun load(force)
- do
- if gl_texture != -1 then return
- load_checker size
- loaded = true
- end
-end
-
-# Custom texture with pixel values filled programmatically
-#
-# At creation, the texture is composed of `width` by `height` (rounded down)
-# transparent pixels. The pixels value can be set using `[]=`.
-#
-# ~~~
-# # Build a texture with 4 colors
-# var tex = new CustomTexture(2.0, 2.0)
-# tex[0, 0] = [1.0, 0.0, 0.0] # Red
-# tex[0, 1] = [0.0, 1.0, 0.0] # Green
-# tex[1, 0] = [0.0, 0.0, 1.0] # Blue
-# tex[1, 1] = [1.0, 1.0, 1.0, 0.5] # Transparent white
-# tex.load
-# ~~~
-class CustomTexture
- super RootTexture
-
- redef var width
- redef var height
-
- private var cpixels = new CByteArray(4*width.to_i*height.to_i) is lazy
-
- # Set the `color` of the pixel at `x`, `y` (from the top-left corner)
- #
- # The argument `color` should be an array of up to 4 floats (RGBA).
- # If `color` has less than 4 items, the missing items are replaced by 1.0.
- #
- # Require: `x < width.to_i and y < height.to_i`
- fun []=(x, y: Int, color: Array[Float])
- do
- assert x < width.to_i and y < height.to_i else print_error "{class_name}::[] out of bounds"
-
- # Simple conversion from [0.0..1.0] to [0..255]
- var bytes = [for c in color do (c*255.0).round.to_i.clamp(0, 255).to_bytes.last]
- while bytes.length < 4 do bytes.add 255
-
- var offset = 4*(x + y*width.to_i)
- for i in [0..4[ do cpixels[offset+i] = bytes[i].to_b
-
- loaded = false
- end
-
- # Overwrite all pixels with `color`, return `self`
- #
- # The argument `color` should be an array of up to 4 floats (RGBA).
- # If `color` has less than 4 items, the missing items are replaced by 1.0.
- fun fill(color: Array[Float]): SELF
- do
- # Simple conversion from [0.0..1.0] to [0..255]
- var bytes = [for c in color do (c*255.0).round.to_i.clamp(0, 255).to_bytes.last]
- while bytes.length < 4 do bytes.add 255
-
- var i = 0
- for x in [0..width.to_i[ do
- for y in [0..height.to_i[ do
- for j in [0..4[ do cpixels[i+j] = bytes[j].to_b
- i += 4
- end
- end
-
- loaded = false
- return self
- end
-
- redef fun load(force)
- do
- force = force or else false
- if loaded and not force then return
-
- if force and glIsTexture(gl_texture) then
- # Was already loaded, free the previous GL name
- glDeleteTextures([gl_texture])
- end
- gl_texture = -1
-
- # Round down the desired dimension
- var width = width.to_i
- var height = height.to_i
- self.width = width.to_f
- self.height = height.to_f
-
- load_from_pixels(cpixels.native_array, width, height, gl_RGBA)
-
- loaded = true
- end
-end
-
-# Texture with its own pixel data
-class RootTexture
- super Texture
-
- redef fun root do return self
-
- # Has this texture been loaded yet?
- var loaded = false
-
- redef var gl_texture = -1
-
- init do all_root_textures.add self
-
- # Should the pixels RGB values be premultiplied by their alpha value at loading?
- #
- # All gamnit textures must have premultiplied alpha, it provides a better
- # alpha blending, avoids artifacts and allows for additive blending.
- #
- # When at `true`, the default, pixels RGB values are premultiplied
- # at loading. Set to `false` if pixels RGB values are already
- # premultiplied in the source data.
- #
- # This value must be set before calling `load`.
- var premultiply_alpha = true is writable
-
- private fun load_from_pixels(pixels: Pointer, width, height: Int, format: GLPixelFormat)
- do
- var max_texture_size = glGetIntegerv(gl_MAX_TEXTURE_SIZE, 0)
- if width > max_texture_size then
- error = new Error("Texture width larger than gl_MAX_TEXTURE_SIZE ({max_texture_size}) in {self} at {width}")
- return
- else if height > max_texture_size then
- error = new Error("Texture height larger than gl_MAX_TEXTURE_SIZE ({max_texture_size}) in {self} at {height}")
- return
- end
-
- # Premultiply alpha?
- if premultiply_alpha and format == gl_RGBA then
- pixels.premultiply_alpha(width, height)
- end
-
- glPixelStorei(gl_UNPACK_ALIGNEMENT, 1)
- var tex = glGenTextures(1)[0]
- gl_texture = tex
-
- glBindTexture(gl_TEXTURE_2D, tex)
- glTexImage2D(gl_TEXTURE_2D, 0, format, width, height, 0, format, gl_UNSIGNED_BYTE, pixels)
-
- glHint(gl_GENERATE_MIPMAP_HINT, gl_NICEST)
- glGenerateMipmap(gl_TEXTURE_2D)
- glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR_MIPMAP_LINEAR)
-
- glBindTexture(gl_TEXTURE_2D, 0)
- end
-
- private fun load_checker(size: Int)
- do
- var cpixels = new CByteArray(3*size*size)
-
- var i = 0
- for x in [0..size[ do
- var quadrant_x = if x < size/2 then 0 else 1
- for y in [0..size[ do
- var quadrant_y = if y < size/2 then 0 else 1
- var color = if quadrant_x == quadrant_y then
- [0u8, 0u8, 0u8, 255u8]
- else [255u8, 255u8, 255u8, 255u8]
-
- for j in [0..3[ do cpixels[i+j] = color[j]
- i += 3
- end
- end
-
- width = size.to_f
- height = size.to_f
- load_from_pixels(cpixels.native_array, size, size, gl_RGB)
-
- cpixels.destroy
- end
-
- # Has this resource been deleted?
- var deleted = false
-
- # Delete this texture and free all its resources
- #
- # Use caution with this service as the subtextures may rely on the deleted data.
- fun delete
- do
- if deleted or not loaded then return
-
- deleted = true
- end
-end
-
-# Texture loaded from the assets folder
-class TextureAsset
- super RootTexture
-
- # Path to this texture within the `assets` folder
- var path: String
-
- redef fun load(force)
- do
- if loaded and force != true then return
-
- load_from_platform
-
- # If no pixel data was loaded, load the pixel default texture
- if gl_texture == -1 then load_checker 32
-
- loaded = true
- end
-
- # Partially load this texture from platform-specific features
- #
- # This method should fill `width`, `height` and `pixels`.
- private fun load_from_platform is abstract
-
- redef fun to_s do return "<{class_name} path:{path}>"
-end
-
-# Texture derived from another texture, does not own its pixels
-abstract class Subtexture
- super Texture
-
- # Parent texture, from which this texture was created
- var parent: Texture
-
- redef fun root do return parent.root
-
- redef fun load(force) do root.load(force)
-end
-
-# Subtexture created from pixel coordinates within `parent`
-class AbsoluteSubtexture
- super Subtexture
-
- # Left border of this texture relative to `parent`
- var left: Float
-
- # Top border of this texture relative to `parent`
- var top: Float
-
- private fun set_wh(width, height: Float)
- is autoinit do
- self.width = width
- self.height = height
- end
-
- redef var offset_left = parent.offset_left + left / root.width is lazy
- redef var offset_top = parent.offset_top + top / root.height is lazy
- redef var offset_right = offset_left + width / root.width is lazy
- redef var offset_bottom = offset_top + height / root.height is lazy
-end
-
-# Subtexture created from relative coordinates ([0..1]) out of the `root` texture
-class RelativeSubtexture
- super Subtexture
-
- redef var offset_left
- redef var offset_top
- redef var offset_right
- redef var offset_bottom
-
- redef fun width do return root.width * (offset_right - offset_left)
- redef fun height do return root.height * (offset_bottom - offset_top)
-end
-
-redef class Sys
- # All declared root textures
- var all_root_textures = new TextureSet
-end
-
-# Group of `Texture`
-class TextureSet
- super HashSet[Texture]
-
- # Load all texture of this set
- fun load_all do for t in self do t.load
-end
-
-redef class Pointer
- # Multiply RGB values by their alpha value
- private fun premultiply_alpha(width, height: Int) `{
- uint8_t *bytes = (uint8_t *)self;
- int x, y, i = 0;
- for(y = 0; y < height; y ++) {
- for(x = 0; x < width; x ++) {
- int a = bytes[i+3];
- bytes[i ] = bytes[i ] * a / 255;
- bytes[i+1] = bytes[i+1] * a / 255;
- bytes[i+2] = bytes[i+2] * a / 255;
- i += 4;
- }
- }
- `}
-end
diff --git a/lib/gamnit/tileset.nit b/lib/gamnit/tileset.nit
deleted file mode 100644
index ce610e2290..0000000000
--- a/lib/gamnit/tileset.nit
+++ /dev/null
@@ -1,155 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Support for `TileSet`, `TileSetFont` and drawing text with `TextSprites`
-module tileset
-
-import font
-
-# Efficiently retrieve tiles in a big texture
-class TileSet
- # Texture containing the tileset
- var texture: Texture
-
- # Width of a tile
- var width: Numeric
-
- # Height of a tile
- var height: Numeric
-
- # Number of columns of tiles in the texture
- var nb_cols: Int = (texture.width / width.to_f).to_i is lazy
-
- # Number of rows of tiles in the texture
- var nb_rows: Int = (texture.height / height.to_f).to_i is lazy
-
- # Cache of the subtextures of tiles
- var subtextures: Array[Texture] is lazy do
- var subtextures = new Array[Texture]
- for j in [0..nb_rows[ do
- for i in [0..nb_cols[ do
- subtextures.add texture.subtexture(
- i.to_f*width.to_f, j.to_f*height.to_f, width.to_f, height.to_f)
- end
- end
- return subtextures
- end
-
- # Subtexture for the tile at `x, y`
- #
- # Require: `x < nb_cols and y < nb_rows`
- fun [](x,y: Int): Texture
- do
- assert x >= 0 and x < nb_cols and y >= 0 and y <= nb_rows else print "{x}x{y}{nb_cols}x{nb_rows}"
- var idx = x + y * nb_cols
- return subtextures[idx]
- end
-end
-
-# A monospace bitmap font where glyphs are stored in a tileset
-#
-# This `Font` does not implement all settings of `TextSprites`.
-class TileSetFont
- super TileSet
- super Font
-
- # Set the characters present in `texture`
- #
- # Last all characters from left to right, then top to bottom.
- # Line skip `\n`, are ignored and space ' ' skips holes in the tileset.
- fun chars=(chars: Text)
- is autoinit do
- chars_cleaned = chars.replace("\n", "")
- end
-
- # Character present in the texture, set by `chars=`
- private var chars_cleaned: Text is noautoinit
-
- # Additional space to insert horizontally between characters
- #
- # A negative value may display overlapped tiles.
- var hspace: Numeric = 0.0 is writable
-
- # Additional space to insert vertically between characters
- #
- # A negative value may display overlapped tiles.
- var vspace: Numeric = 0.0 is writable
-
- # The glyph/tile/texture associated to `char`
- #
- # Returns null if `char` is not in `chars`.
- fun char(char: Char): nullable Texture
- do
- var i = chars_cleaned.index_of(char)
- if i == -1 then return null
- return subtextures[i]
- end
-
- # Distance between the beginning of a letter tile and the beginning of the next letter tile
- fun advance: Float do return width.to_f + hspace.to_f
-
- # Distance between the beginning and the end of the longest line of `text`
- fun text_width(text: Text): Numeric
- do
- var lines = text.split('\n')
- if lines.is_empty then return 0
-
- var longest = 0
- for line in lines do longest = longest.max(line.length)
-
- return longest.mul(advance)
- end
-
- # Distance between the top of the first line to the bottom of the last line in `text`
- fun text_height(text: Text): Numeric
- do
- if text.is_empty then return 0
-
- var n_lines = text.chars.count('\n')
- return (n_lines+1).mul(height.add(vspace)).sub(vspace)
- end
-
- redef fun write_into(text_sprites, text)
- do
- # Build new sprites
- var dx = advance/2.0
- var dy = hspace.to_f/2.0
- for c in text do
- if c == '\n' then
- dy -= height.to_f + vspace.to_f
- dx = advance/2.0
- continue
- else if c == pld then
- dy -= (height.to_f + vspace.to_f) * partial_line_mod.to_f
- continue
- else if c == plu then
- dy += (height.to_f + vspace.to_f) * partial_line_mod.to_f
- continue
- else if c.is_whitespace then
- dx += advance
- continue
- end
-
- var tex = char(c)
- if tex == null then
- # Try to fallback to '?'
- tex = char('?')
- if tex == null then continue
- end
-
- text_sprites.sprites.add new Sprite(tex, text_sprites.anchor.offset(dx, dy, 0))
- dx += advance
- end
- end
-end
diff --git a/lib/gamnit/virtual_gamepad/Makefile b/lib/gamnit/virtual_gamepad/Makefile
deleted file mode 100644
index 9eaa13e187..0000000000
--- a/lib/gamnit/virtual_gamepad/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-INKSCAPE_DIR ?= $(shell nitls -pP inkscape_tools)
-
-src/gamnit_touch_gamepad.nit: art/virtual_gamepad.svg
- make -C ${INKSCAPE_DIR}
- ${INKSCAPE_DIR}/bin/svg_to_png_and_nit -g --src virtual_gamepad_spritesheet.nit --scale 2.0 art/virtual_gamepad.svg
- sed 's/Virtual_GamepadImages/VirtualGamepadSpritesheet/' -i virtual_gamepad_spritesheet.nit
diff --git a/lib/gamnit/virtual_gamepad/art/virtual_gamepad.svg b/lib/gamnit/virtual_gamepad/art/virtual_gamepad.svg
deleted file mode 100644
index 84de166acf..0000000000
--- a/lib/gamnit/virtual_gamepad/art/virtual_gamepad.svg
+++ /dev/null
@@ -1,2373 +0,0 @@
-
-
diff --git a/lib/gamnit/virtual_gamepad/assets/images/virtual_gamepad.png b/lib/gamnit/virtual_gamepad/assets/images/virtual_gamepad.png
deleted file mode 100644
index 69d885cc20..0000000000
Binary files a/lib/gamnit/virtual_gamepad/assets/images/virtual_gamepad.png and /dev/null differ
diff --git a/lib/gamnit/virtual_gamepad/virtual_gamepad.nit b/lib/gamnit/virtual_gamepad/virtual_gamepad.nit
deleted file mode 100644
index 4034c0ddb3..0000000000
--- a/lib/gamnit/virtual_gamepad/virtual_gamepad.nit
+++ /dev/null
@@ -1,425 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Virtual gamepad mapped to keyboard keys for quick and dirty mobile support
-#
-# For Android, the texture is automatically added to the APK when this
-# module is imported. However, due to a limitation of the _app.nit_
-# framework on desktop OS, the texture must be copied manually to the assets
-# folder at `assets/images`, the texture is available at, from the repo root,
-# `lib/gamnit/virtual_gamepad/assets/images`.
-#
-# The texture was created by kenney.nl and modified by Alexis Laferrière.
-# It is published under CC0 and can be used and modified without attribution.
-#
-# ~~~
-# redef class App
-# redef fun create_scene
-# do
-# super
-#
-# # Create the virtual gamepad
-# var gamepad = new VirtualGamepad
-#
-# # Configure it as needed
-# gamepad.add_dpad(["w","a","s","d"])
-# gamepad.add_button("x", gamepad_spritesheet.x)
-# gamepad.add_button("space", gamepad_spritesheet.star)
-#
-# # Assign it as the active gamepad
-# self.gamepad = gamepad
-# end
-#
-# fun setup_play_ui
-# do
-# # Show the virtual gamepad
-# var gamepad = self.gamepad
-# if gamepad != null then gamepad.visible = true
-# end
-# end
-# ~~~
-module virtual_gamepad is app_files
-
-import flat
-private import keys
-import virtual_gamepad_spritesheet
-
-redef class App
-
- # Current touch gamepad, still may be invisible
- var gamepad: nullable VirtualGamepad = null is writable
-
- # Textures used for `DPad` and available to clients
- var gamepad_spritesheet = new VirtualGamepadSpritesheet
-
- redef fun accept_event(event)
- do
- # Priority to the gamepad
- var gamepad = gamepad
- if gamepad != null and gamepad.accept_event(event) then return true
-
- return super
- end
-end
-
-# Gamepad on touch screen bound to keyboard keys
-#
-# Fires `VirtualGamepadEvent` which implement `KeyEvent` so it behaves like a keyboard.
-class VirtualGamepad
-
- private var sprites = new Array[Sprite]
-
- # Controls composing this gamepad
- #
- # Controls can be added directly to this array or using `add_dpad`
- # and `add_button`.
- var controls = new Array[RoundControl]
-
- # Add and return a directional pad (`DPad`) to a default location
- #
- # The 4 buttons fire events with the corresponding name in `names`.
- # Items in `names` should be in order of top, left, down and right.
- # If `null`, defaults to WASD.
- #
- # If this method is called, it should be before `add_button` to
- # avoid overlapping controls.
- #
- # A maximum of 2 `DPad` may be added using this method.
- # The first `DPad` is placed on the left of the screen.
- # The second `DPad` is on the right and replaces some buttons
- # added by `add_button`.
- #
- # Require: `names == null or names.length == 4`
- fun add_dpad(names: nullable Array[String]): nullable DPad
- do
- if names == null then names = ["w","a","s","d"]
- assert names.length == 4
-
- if n_dpads == 0 then
- var dpad = new DPad(app.ui_camera.bottom_left.offset(200.0, 100.0, 0.0), names)
- controls.add dpad
- return dpad
- else if n_dpads == 1 then
- var dpad = new DPad(app.ui_camera.bottom_right.offset(-200.0, 100.0, 0.0), names)
- controls.add dpad
- return dpad
- else
- print_error "Too many DPad ({n_dpads}) in {self}"
- return null
- end
- end
-
- # Number of `DPad` in `controls`
- private fun n_dpads: Int
- do
- var n_dpads = 0
- for c in controls do if c isa DPad then n_dpads += 1
- return n_dpads
- end
-
- # Button positions for `add_button`, offsets from the bottom right
- private var button_positions = new Array[Point[Float]].with_items(
- new Point[Float](-150.0, 150.0),
- new Point[Float](-150.0, 350.0),
- new Point[Float](-150.0, 550.0),
- new Point[Float](-350.0, 150.0),
- new Point[Float](-350.0, 350.0),
- new Point[Float](-350.0, 550.0))
-
- # Add and return a round button to a default location
- #
- # Fired events use `name`, it should usually correspond to a
- # keyboard key like "space" or "a".
- # `texture` is displayed at the button position, it also sets the
- # touchable surface of the button.
- #
- # If this method is called, it should be after `add_dpad` to
- # avoid overlapping controls.
- #
- # A maximum of 6 buttons may be added using this method when
- # there is less than 2 `DPad`. Otherwise, only 2 buttons can be added.
- fun add_button(name: String, texture: Texture): nullable RoundButton
- do
- if n_dpads == 2 and button_positions.length == 6 then
- # Drop the bottom 4 buttons
- button_positions.remove_at 4
- button_positions.remove_at 3
- button_positions.remove_at 1
- button_positions.remove_at 0
- end
-
- assert button_positions.not_empty else print_error "Too many buttons in {self}"
- var pos = button_positions.shift
- var but = new RoundButton(
- app.ui_camera.bottom_right.offset(pos.x, pos.y, 0.0), name, texture)
- controls.add but
- return but
- end
-
- private fun prepare
- do
- var display = app.display
- assert display != null
-
- for control in controls do
- var sprites = control.sprites
- app.ui_sprites.add_all sprites
- end
- end
-
- # Is this control visible?
- var visible = false is private writable(visible_direct=)
-
- # Set this control to visible or not
- fun visible=(value: Bool)
- do
- visible_direct = value
- if value then show else hide
- end
-
- private fun show
- do
- if sprites.is_empty then prepare
- app.ui_sprites.add_all sprites
- end
-
- private fun hide do for s in sprites do app.ui_sprites.remove_all s
-
- private var control_under_pointer = new Map[Int, RoundControl]
-
- private fun accept_event(event: InputEvent): Bool
- do
- if not visible then return false
-
- var display = app.display
- if display == null then return false
-
- if event isa PointerEvent then
- var ui_pos = app.ui_camera.camera_to_ui(event.x, event.y)
-
- for control in controls do
- if control.accept_event(event, ui_pos) then
- var prev_control = control_under_pointer.get_or_null(event.pointer_id)
- if prev_control != null and prev_control != control then
- prev_control.depressed_down
- end
- control_under_pointer[event.pointer_id] = control
- return true
- end
- end
-
- var prev_control = control_under_pointer.get_or_null(event.pointer_id)
- if prev_control != null then prev_control.depressed_down
- control_under_pointer.keys.remove event.pointer_id
- end
-
- return false
- end
-end
-
-# Event fired by a `VirtualGamepad`
-class VirtualGamepadEvent
- super KeyEvent
-
- redef var name
-
- redef var is_down is noautoinit
-end
-
-# Control composing a `VirtualGamepad`
-abstract class RoundControl
- # Center position on the UI
- var center: Point3d[Float]
-
- # Radius in UI units/pixels of the part of this control
- fun radius: Float is abstract
-
- private fun sprites: Array[Sprite] do return new Array[Sprite]
-
- private fun accept_event(event: InputEvent, ui_pos: Point[Float]): Bool
- do
- if event isa PointerEvent and contains(ui_pos) then
- return hit(event, ui_pos)
- end
-
- return false
- end
-
- # Does `self` contain a pointer at `ui_pos`?
- private fun contains(ui_pos: Point[Float]): Bool
- do
- var dx = center.x - ui_pos.x
- var dy = center.y - ui_pos.y
- return dx*dx + dy*dy < radius*radius
- end
-
- private fun hit(event: PointerEvent, ui_pos: Point[Float]): Bool
- do return false
-
- # Keys currently down, to be depressed if the pointer moves away
- private var down_names = new Set[String]
-
- # Depress/release keys kept down, listed by `down_names`
- private fun depressed_down
- do
- for name in down_names do
- var e = new VirtualGamepadEvent(name)
- e.is_down = false
- app.accept_event e
- end
- down_names.clear
- end
-end
-
-# Simple action button
-class RoundButton
- super RoundControl
-
- # Event name, should usually correspond to a keyboard key like "a" or "left"
- var name: String
-
- # Texture drawn for this button, may be from `app.gamepad_spritesheet`
- var texture: Texture
-
- redef fun radius do return 0.5*texture.height
-
- redef fun hit(event, ui_pos)
- do
- if not event.is_move then
- var e = new VirtualGamepadEvent(name.to_s)
- e.is_down = event.pressed
- app.accept_event e
-
- if event.pressed then
- down_names.add name
- else down_names.clear
- end
- return true
- end
-
- redef var sprites = [new Sprite(texture, center)] is lazy
-end
-
-# Directional pad with up to 4 buttons
-#
-# Assumes that each pad is manipulated by at max a single pointer.
-class DPad
- super RoundControl
-
- # Event names for the keys, in order of top, left, down and right
- var names: Array[String]
-
- # Show the up button
- var show_up = true is writable
-
- # Show the down button
- var show_down = true is writable
-
- # Show the left button
- var show_left = true is writable
-
- # Show the right button
- var show_right = true is writable
-
- redef fun radius do return 200.0
-
- redef fun contains(ui_pos)
- do
- if show_down then return super(new Point[Float](ui_pos.x+0.0, ui_pos.y-100.0))
- return super
- end
-
- redef fun hit(event, ui_pos)
- do
- var display = app.display
- if display == null then return false
-
- var dx = ui_pos.x - center.x
- var dy = ui_pos.y - center.y
- if show_down then dy -= 100.0
-
- # Angle (with 0.0 on the right) to index in WASD (0 -> W/up)
- var indexes = new Set[Int]
- var ao = atan2(dy, dx)
- ao -= pi/4.0
-
- # Look for 2 angles so 2 buttons can be pressed at the same time
- for da in once [-pi/8.0, pi/8.0] do
- var a = ao+da
- while a < 0.0 do a += pi*2.0
- while a > 2.0*pi do a -= pi*2.0
- var index = (a * 2.0 / pi).floor.to_i
- if index < 0 then index += 4
- indexes.add index
- end
-
- var shows = [show_up, show_left, show_down, show_right]
- var new_down_names = new Set[String]
- for index in indexes do
- # Don't trigger events for hidden buttons/directions
- if not shows[index] then continue
-
- var name = names[index]
- # Simulate event
- var e = new VirtualGamepadEvent(name)
- e.is_down = event.pressed
- app.accept_event e
-
- if event.pressed then new_down_names.add name
- end
-
- # Depress released directions
- for name in down_names do
- if not new_down_names.has(name) then
- var e = new VirtualGamepadEvent(name)
- e.is_down = false
- app.accept_event e
- end
- end
-
- down_names = new_down_names
-
- return true
- end
-
- redef fun sprites
- do
- var dy = 0.0
- if show_down then dy = 100.0
-
- var sprites = new Array[Sprite]
-
- # Interactive buttons
- if show_up then sprites.add new Sprite(app.gamepad_spritesheet.dpad_up,
- center.offset( 0.0, 100.0+dy, 0.0))
- if show_left then sprites.add new Sprite(app.gamepad_spritesheet.dpad_left,
- center.offset(-100.0, 0.0+dy, 0.0))
- if show_right then sprites.add new Sprite(app.gamepad_spritesheet.dpad_right,
- center.offset( 100.0, 0.0+dy, 0.0))
- if show_down then sprites.add new Sprite(app.gamepad_spritesheet.dpad_down,
- center.offset( 0.0,-100.0+dy, 0.0))
-
- # Non-interactive joystick background
- var back = new Sprite(app.gamepad_spritesheet.joystick_back,
- center.offset(0.0, 0.0+dy, -1.0)) # In the back
- back.draw_order = -1
- sprites.add back
-
- # Non-interactive handle in the bottom
- if not show_down then sprites.add new Sprite(app.gamepad_spritesheet.joystick_down,
- center.offset(0.0, -100.0+dy, 0.0))
-
- return sprites
- end
-end
diff --git a/lib/gamnit/virtual_gamepad/virtual_gamepad_spritesheet.nit b/lib/gamnit/virtual_gamepad/virtual_gamepad_spritesheet.nit
deleted file mode 100644
index 64c0048f25..0000000000
--- a/lib/gamnit/virtual_gamepad/virtual_gamepad_spritesheet.nit
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-# File generated by svg_to_png_and_nit, do not modify, redef instead
-
-import gamnit::textures
-
-class VirtualGamepadSpritesheet
-
- private var root_texture = new Texture("images/virtual_gamepad.png")
- var a: Texture = root_texture.subtexture(856, 816, 162, 162)
- var b: Texture = root_texture.subtexture(1036, 816, 162, 162)
- var cancel: Texture = root_texture.subtexture(1036, 996, 162, 162)
- var down: Texture = root_texture.subtexture(1216, 636, 162, 162)
- var dpad_down: Texture = root_texture.subtexture(1136, 446, 124, 152)
- var dpad_left: Texture = root_texture.subtexture(1036, 296, 154, 124)
- var dpad_right: Texture = root_texture.subtexture(1206, 296, 152, 124)
- var dpad_up: Texture = root_texture.subtexture(1136, 116, 124, 154)
- var fire: Texture = root_texture.subtexture(1396, 996, 162, 162)
- var fist: Texture = root_texture.subtexture(1216, 996, 162, 162)
- var flag: Texture = root_texture.subtexture(1576, 816, 162, 162)
- var joystick_back: Texture = root_texture.subtexture(0, 0, 194, 194)
- var joystick_down: Texture = root_texture.subtexture(784, 30, 124, 152)
- var key: Texture = root_texture.subtexture(1576, 636, 162, 162)
- var left: Texture = root_texture.subtexture(676, 636, 162, 162)
- var ok: Texture = root_texture.subtexture(856, 996, 162, 162)
- var pedal: Texture = root_texture.subtexture(1576, 996, 162, 162)
- var right: Texture = root_texture.subtexture(856, 636, 162, 162)
- var star: Texture = root_texture.subtexture(1396, 636, 162, 162)
- var turn_left: Texture = root_texture.subtexture(676, 816, 162, 162)
- var turn_right: Texture = root_texture.subtexture(676, 996, 162, 162)
- var up: Texture = root_texture.subtexture(1036, 636, 162, 162)
- var x: Texture = root_texture.subtexture(1216, 816, 162, 162)
- var y: Texture = root_texture.subtexture(1396, 816, 162, 162)
-end
diff --git a/lib/mnit/input.nit b/lib/mnit/input.nit
deleted file mode 100644
index 7987c2724f..0000000000
--- a/lib/mnit/input.nit
+++ /dev/null
@@ -1,132 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Defines abstract classes for user and general inputs to the application.
-# Implemented independantly for each platforms and technologies.
-module input
-
-import android::input_events is conditional(android)
-
-# Input to the App, propagated through `App::input`.
-interface InputEvent
-end
-
-# Mouse and touch input events
-interface PointerEvent
- super InputEvent
-
- # X position on screen (in pixels)
- fun x: Float is abstract
-
- # Y position on screen (in pixels)
- fun y: Float is abstract
-
- # Is down? either going down or already down
- fun pressed: Bool is abstract
-
- # Is it not currently pressed down? The opposite of `pressed`.
- fun depressed: Bool do return not pressed
-
- # Is this a movement event?
- fun is_move: Bool is abstract
-
- # Unique identifier of this pointer among other active pointers
- #
- # This value is useful to differentiate between pointers (or fingers) on
- # multi-touch systems. This value does not change for the same pointer
- # while it touches the screen.
- fun pointer_id: Int do return 0
-end
-
-# A motion event on screen composed of many `PointerEvent`
-#
-# Example of a `MotionEvent` a gesture such as pinching using two fingers.
-interface MotionEvent
- super InputEvent
-
- # A pointer just went down?
- fun just_went_down: Bool is abstract
-
- # Which pointer is down, if any
- fun down_pointer: nullable PointerEvent is abstract
-end
-
-# Specific touch event
-interface TouchEvent
- super PointerEvent
-
- # Pressure level of input
- fun pressure: Float is abstract
-end
-
-# Keyboard or other keys event
-interface KeyEvent
- super InputEvent
-
- # Key is currently down?
- fun is_down: Bool is abstract
-
- # Key is currently up?
- fun is_up: Bool do return not is_down
-
- # Key is the up arrow key?
- fun is_arrow_up: Bool is abstract
-
- # Key is the left arrow key?
- fun is_arrow_left: Bool is abstract
-
- # Key is the down arrow key?
- fun is_arrow_down: Bool is abstract
-
- # Key is the right arrow key?
- fun is_arrow_right: Bool is abstract
-
- # Key code, is plateform specific
- fun code: Int is abstract
-
- # Get Char value of key, if any
- fun to_c: nullable Char is abstract
-
- # Name of the key that raised `self`
- #
- # Use mainly for debug since it is implementation dependent.
- fun name: String is abstract
-end
-
-# Mobile hardware (or pseudo hardware) event
-interface MobileKeyEvent
- super KeyEvent
-
- # Key is back button? (mostly for Android)
- fun is_back_key: Bool is abstract
-
- # Key is menu button? (mostly for Android)
- fun is_menu_key: Bool is abstract
-
- # Key is search button? (mostly for Android)
- fun is_search_key: Bool is abstract
-
- # Key is home button? (mostly for Android)
- fun is_home_key: Bool is abstract
-end
-
-# Sensor events like accelerometer, gyroscope etc for mobile apps
-interface SensorEvent
- super InputEvent
-end
-
-# Quit event, used for window close button
-interface QuitEvent
- super InputEvent
-end
diff --git a/lib/mnit/package.ini b/lib/mnit/package.ini
deleted file mode 100644
index 2239f95f28..0000000000
--- a/lib/mnit/package.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name=mnit
-tags=lib
-maintainer=Alexis Laferrière
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/lib/mnit/
-git=https://github.com/nitlang/nit.git
-git.directory=lib/mnit/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/tests/sav/nitcatalog_args1.res b/tests/sav/nitcatalog_args1.res
index 7ab7a710eb..ab12424829 100644
--- a/tests/sav/nitcatalog_args1.res
+++ b/tests/sav/nitcatalog_args1.res
@@ -38,7 +38,7 @@
or others modelbuilder
.
An image:
-
+
Content
- test_prog: Test program for model tools. (test_prog)
- examples (test_prog/examples)